我们为客户提供VPS。 每个客户VPS在标准主轴硬盘上被赋予一个LVM LV。 如果客户要离开,我们将这个LV清零,确保他们的数据不会泄露给其他客户。
我们正在考虑用SSD来做我们的托pipe业务。 鉴于固态硬盘具有“耗损均衡”技术,这是否使零点毫无意义? 这是否使这个SSD的想法是不可行的,因为我们不能让客户的数据泄漏到另一个客户?
假设你想要防止的是下一个客户读取磁盘以查看旧客户的数据,那么写入所有的零实际上仍将工作。 将零写入扇区'n'意味着当扇区'n'被读取时,它将返回全零。 现在事实是,底层的实际数据可能仍然在闪存芯片上,但是由于无法正常读取,所以对您的情况来说不成问题。
这是一个问题,如果有人可以拿到磁盘并把它分开(因为那样他们可以直接读取闪存芯片),但是如果他们唯一的访问是SATA总线,那么写入全部为零磁盘将会很好。
永远不要零填充SSD。 至less,这会消耗一些SSD的写入寿命,而很less或没有任何好处。 在极端最坏的情况下,您可能会将SSD的控制器置于(暂时)降低的性能状态 。
从这个来源 :
反复覆盖整个磁盘多次重复可以成功破坏数据,但由于固件翻译层(FTL),这比传统的硬盘驱动器复杂和费时。 根据他们的结果,这是一个没有吸引力的select
您的最佳select,通过全盘encryption进行安全擦除:
一些现代固态硬盘可以使用全磁盘encryption – 例如英特尔新的320硬盘和一些Sandforce 2200系列硬盘。 这些驱动器可以以简单快捷的方式安全擦除,而不会造成驱动器磨损。 该驱动器对所有写入的数据使用AESencryption,所以安全擦除仅仅意味着删除旧的AES密钥,并将其replace为新的AES密钥。 这有效地使驱动器上的所有“旧”数据不可恢复。
但是,英特尔的安全擦除并不容易自动化。 AFAIK它必须从英特尔的Windows GUI应用程序完成,它只能运行在一个空的非启动驱动器等等。 请参阅第21页及以后的英特尔文档。
您的其他选项,ATA安全擦除:
另一个select是通过Linux上的fx HDPARM 发出ATA安全擦除命令 。 这将通过脚本自动化更容易。
如果驱动器以“良好”方式实现ATA安全擦除,则应该期望它至less删除“闪存转换层”(FTL)。 FTL表保存逻辑扇区(操作系统“看到”)与驱动器本身NVRAM的物理页面之间的映射。 有了这个映射表破坏,它应该是非常困难的 – 但可能不是不可能的 – 从驱动器恢复数据。
然而,我并不知道有任何研究表明,ATA Secure Erase在所有制造商的驱动器上始终如一地执行,所以我很犹豫,说它会一直工作 – 您应该阅读制造商的技术文档。
对于单个分区:
当我读到其他答案的意见时,似乎OP只想安全擦除单个分区。 一个很好的方法是只使用LUKS或TrueCrypt创buildencryption卷。 这样,您就可以通过丢弃encryption密钥来安全地擦除卷,类似于在磁盘上的全盘encryptionscheme。
结论:
如果您确实想知道,请阅读 Sophos博客链接的文章,并阅读关于安全擦除的驱动器制造商技术说明。 但是,如果您希望“安全地”擦除,那么使用全盘encryption和安全擦除和更换encryption密钥的SSD可能是您的最佳select。 或者,使用操作系统级别的encryption,并在您希望数据安全擦除时丢弃密钥。
磨平与数据归零没有任何关系。
您将数据清零,以阻止其他人或应用程序读取该数据。 固态硬盘“磨损”他们的数据,以确保他们可以使用更长时间,因为写入SSD的“损害”。 另外磁盘通常在不忙的时候这样做,在服务器的情况下,安静的时间并不总是可用的,所以这项工作通常不能完成。
你是否收取你的客户的IO操作? 如果不是什么能阻止他们基本上在几小时/几天的时间内通过不断地写入SSD来杀死他们的一部分? SSD比大多数人想象的要容易得多 ,特别是在写入繁重的环境中。
所以这是值得阅读的文章。 如果有人能够物理访问光盘,则检索信息会更容易。 您是否考虑过对SSD上的数据进行encryption,然后您只需要安全地忘记私钥,这应该是一个更容易的问题。 由于更好的随机存取性能,我可以看到SSD在vps上取得了巨大的成功。
你绝对不希望使用传统的擦除SSD的方法,比如使用dd
来清零数据,或者其他将随机数据写入磁盘的方法。 这些方法更适合于基于磁盘的磁盘。 它在擦除固态硬盘时非常有效,但也会不必要地浪费大量固态硬盘的有限写入操作,从而降低固态硬盘的预期寿命。 那会很快变得昂贵。 随着时间的推移,它也会降低SSD的性能。
SSD有不同的安全擦除方法。 我会说这样做似乎很麻烦,因为你通常需要一个可以进行IDE仿真的特定types的SATA控制器,而且程序可能很复杂。 一些制造商提供的工具可以擦除自己的SSD,但是您也可以使用Linux上的hdparm来实现: https : //ata.wiki.kernel.org/index.php/ATA_Secure_Erase 。 但是你会注意到在这些说明中,你必须确保驱动器没有被“冻结”,然后才能继续。 这是更困难的步骤之一,因为它需要find一个主板和SATA控制器,让系统在启动时“解冻”驱动器,通常包括从SATA电缆上拔下它,然后重新插入。
无论如何,我的build议是做你的研究和select一个固态擦除实用程序,可以在一个方便的系统上使用的SSD。
从虚拟机映像中清除数据的最好方法是使用TRIMfunction。 许多较新的操作系统支持这一点。 几乎所有当前的SSD也支持它。
而且,这个选项甚至更好的原因在于, 任何SAN在它的SCSI名称UNMAP下也支持该function 。 对于实施稀疏configuration的SAN来说这是一个很好的命令,这对于虚拟机来说是一个很好的特性,特别是与块重复数据删除相结合时。
当TRIM命令被给予SSD时,固件将立即将这些块标记为空闲以供重用。 某些SSD将始终为TRIM'd块返回零 。 其他驱动器将返回实现定义(即随机)的数据。
在支持TRIM的操作系统上,简单地删除文件将标记TRIM块。 实际的TRIM操作可能会立即发生,或者可能会在稍后进行批处理。 有时候会有一些工具会强制 – 修剪文件或扫描所有未使用块的分区。
在Linux上的TRIM性能仍然不稳定,所以如果你正在使用它,你会想要调查你的select。 在Windows上,它似乎很稳固。
尽pipe已经接受了一个答案,但我认为命令blkdiscard /dev/sdX
在这里仍然值得一提。
根据Arch Wiki:SSD , blkdiscard
命令将丢弃所有块 ,所有数据将丢失。 build议在“你想卖你的SSD”之前使用。
我不熟悉TRIM如何工作,所以我不知道是否有保证数据将被删除。 但是我觉得比无所事事要好。
顺便说一句,恐怕这个命令只适用于整个设备,而不是单个分区。
希望这可以帮助。 🙂
您需要一个“SSD安全擦除实用程序”。 如果你使用类似dd
的东西,那么磨损平衡可能会发生,你将会得到仍然包含旧客户数据的保留扇区。 安全擦除实用程序将擦除设备上的所有扇区(而不仅仅是作为操作系统的磁盘)。
其中一些公用程序是特定于某个特定制造商的,要求驱动器的制造商提供他们的build议,他们会比我们更了解。
我不认为写0会帮助您防止其他客户读取磁盘。
在SSD中,当你写东西的时候,这个过程和普通的硬盘有很大不同。
想象一下以下情况:SSD驱动器中的“空”内存单元全部填满1。 当你写了一些东西,它写下0,并保持1不变。
之后,当你想保存一些不同的东西时,先前的内容和新的内容将被比较。 如果前面的一个可以通过写入一些0来成为新的,那么可以。 如果不能这样做,则使用另一个存储单元。
“清除”:11111111第一次保存:11011011
新数据:00110011没有办法使11011011变成00110011(注意,有必要把0变成1,SSD中不可能这样做)。 所以,另一个存储单元将被使用。
当你修剪一个驱动器时,你将所有未使用的内存单元重置为1.所以,它们将被清除以再次使用。 保存的数据被保存。
要做你想做的事情:首先,擦除(删除)文件。 该文件的内存单元将被标记为空闲。 然后做一个TRIM:所有的存储单元将变成1,没有任何数据的迹象。