写入保护

写入保护

本文说明目前常见的SSD写入保护(Write Protect)的方式,并逐一分析各种方式的优缺点和复杂度。

在工业应用中,产品的可靠度一直是最重要的环节之一;如何确保产品的质量及提高可靠度,也是所有厂商一直努力的目标。为确保数据的完整性,就需要采用SSD的「写入保护」技术。其主要的原理是通过硬件或软件的设定来开启此功能,当SSD固件侦测到写入保护的功能被开启时,虽然仍会接收主机的写入命令,但并不会将数据写入NAND Flash,也就是会将磁盘变成Read-only的模式,主机对于SSD的写入动作将会失效,如此便可保护SSD内数据的完整性。

Figure 1

如上图所示,第一种常见的方式是通过软件来设定写入保护功能,用户使用主机端软件的设定,发送vendor command给SSD,SSD固件在收到此指令后,首先会将写入保护的信息纪录下来,以确保断电后此设定仍然有效,并同时通知FTL (Flash Translation Layer)写入保护已开启。FTL收到后,对于之后所有写入相关的命令,包含TRIM、security erase等,均不会执行写入NAND的动作;但对于SSD本身background写入的功能,例如Data Scan、Refresh、Flush Log等,仍会继续执行。这种作法的优点是不用改变硬件,仅靠软件跟固件的修改就可以达到写保护的效果。

Figure 2

如上图所示,另一种写入保护的方式是通过硬件的设定来启动。首先在SSD的电路板上,设计一个开关,接着将此开关连接到SSD控制器上的GPIO pin。用户若要开启写入保护功能,便可打开此开关;这时SSD内部的固件侦测到此GPIO pin的讯号,就会通知FTL写入保护已开启,接下来的动作则跟第一种作法相同。此作法的优点是用户只要通过硬件开关即可开启写保护设定,不需要使用软件,较为简便;很多SD卡也是用此种方法达到写保护的效果。

Figure 3

如上图所示,第三种就是纯硬件的方式:同样也是在SSD上设计一个开关,但此开关是直接连接到NAND Flash的write protect pin,所以SSD固件不需要修改。此种作法的优点是设计电路板的厂商就能独立完成写入保护的功能,但由于NAND完全无法写入,因此SSD固件的一些功能,如Prevent Read Disturb、Data Retention、Flush Log等,也无法正常执行。

还有一种写入保护是由SSD固件自行启动:由于NAND Flash有一定的寿命,当SSD固件发现NAND Flash使用期限将至时,或是坏块超过设定的上限时,SSD固件就会自动开启写入保护,避免用户因为继续将重要数据写入此SSD,而导致数据毁损。这种写入保护是自己开启的,不需使用者做任何设定,且目前市售的SSD几乎都有此功能。