linux – Shred:对Journaled FS不起作用?
作者:互联网
碎片文件称碎片“不保证有效”(见下图).因此,如果我在Ext3文件系统或Raid上粉碎文档,会发生什么?我切碎了部分文件吗?它有时会破坏整个事物,有时不会吗?它可以粉碎其他东西吗?它只会粉碎文件头吗?
CAUTION: Note that shred relies on a very important assumption:
that the file system overwrites data in place. This is the
traditional way to do things, but many modern file system designs
do not satisfy this assumption. The following are examples of file
systems on which shred is not effective, or is not guaranteed to be
effective in all file sys‐ tem modes:
log-structured or journaled file systems, such as those supplied with AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)
file systems that write redundant data and carry on even if some writes fail, such as RAID-based file systems
file systems that make snapshots, such as Network Appliance’s NFS server
file systems that cache in temporary locations, such as NFS version 3 clients
compressed file systems
In the case of ext3 file systems, the above disclaimer applies
(and shred is thus of limited effectiveness) only in data=journal
mode, which journals file data in addition to just metadata. In
both the data=ordered (default) and data=writeback modes, shred
works as usual. Ext3 journaling modes can be changed by adding
the data=something option to the mount options for a
particular file system in the /etc/fstab file, as documented in the
mount man page (man mount).
解决方法:
所有Shred都会覆盖,刷新,检查成功,然后重复.它绝对没有什么可以确定覆盖文件是否实际上导致包含原始数据的块被覆盖.这是因为在不了解底层文件系统的非标准事物的情况下,它不能.
因此,日志文件系统不会覆盖原始块,因为这会阻止它们从更改半写的错误中彻底恢复.如果记录了数据,那么每次碎化都可以写入磁盘上的新位置,在这种情况下,没有任何碎片被撕碎.
RAID文件系统(取决于RAID模式)可能不会覆盖原始块的所有副本.如果存在冗余,则可能会破坏一个磁盘而不会破坏其他磁盘,或者您可能会发现不同的磁盘影响了不同的磁盘,因此每个磁盘都被部分碎片化.
在任何文件系统上,磁盘硬件本身可能恰好检测到错误(或者,在闪存的情况下,即使没有错误也应用耗损均衡)并将逻辑块重新映射到不同的物理块,这样原始块就是标记错误(或未使用)但从未覆盖.
压缩文件系统可能不会覆盖原始块,因为碎片覆盖的数据在每次传递时都是随机的或极其可压缩的,并且任何一个都可能导致文件从根本上改变其压缩大小并因此被重新定位. NTFS在MFT中存储小文件,当碎片将文件大小整理到一个块的倍数时,它的第一个“覆盖”通常会导致文件被重新定位到一个新位置,然后将被无意义地切碎,留下一点MFT插槽未触及.
Shred无法检测到任何这些条件(除非你有一个特殊的实现直接解决你的fs和块驱动程序 – 我不知道是否真的存在这样的事情).这就是为什么它在整个磁盘上使用比在文件系统上更可靠.
在其他文件的意义上,Shred从不撕碎“其他东西”.在上面的一些情况中,它会碎片以前未分配的块而不是包含数据的块.它也不会破坏文件系统中的任何元数据(我猜你的意思是“文件头”). -u选项会尝试覆盖文件名,方法是重命名为相同长度的新名称,然后在删除文件之前将该字符一次缩短为1个字符.如果指定-v,则可以看到此操作.
标签:journal,linux,filesystems,shred 来源: https://codeday.me/bug/20190928/1829584.html