我有一个文件系统,其中包含许多我定期删除的小文件(这些文件是可以轻松重新生成的缓存)。rm -rf
简单地创建一个新的文件系统比运行或rsync
删除所有文件要快得多(即有效删除包含数千个文件的大目录)。
创建新文件系统来擦除文件系统的唯一问题是它的 UUID 发生变化,从而导致例如/etc/fstab
.
有没有一种方法可以简单地从 ext4 文件系统中“取消链接”目录,或者完全清除其 inode 列表?
roa*_*ima 22
由于您正在使用,因此ext4
您可以格式化文件系统并将 UUID 设置为已知值。
man tune2fs
写道,
\n\n\n
-U UUID
将文件系统的通用唯一标识符 (UUID) 设置为 UUID。UUID 的格式是一系列由连字符分隔的十六进制数字,如下所示c1b9d5a2-f162-11cf-9ece-0020afc76f16
。
同样,man mkfs.ext4
写道,
\n\n\n
-U UUID
将文件系统的通用唯一标识符 (UUID) 设置为 UUID。[\xe2\x80\xa6如上\xe2\x80\xa6]
就我个人而言,我更喜欢通过标签来引用文件系统。例如,在/etc/fstab
我的一个系统中,我有这样的条目
# <file system> <mount point> <type> <options> <dump> <pass>\nLABEL=root / ext4 errors=remount-ro 0 1\nLABEL=backup /backup ext4 defaults 0 2\n
Run Code Online (Sandbox Code Playgroud)\n可以使用和-L
标志添加此类标签。它们避免了inode 校验和问题导致重新发现或损坏重新格式化的文件系统,并且它们更容易在视觉上识别。(但在多个系统中不太可能是唯一的,因此在交换磁盘时要小心。)tune2efs
mkfs.ext4
Sim*_*ter 17
在 ext3/ext4 上为新文件系统重复使用 UUID 是一个坏主意。
UUID 用于 inode 校验和计算,以允许 fsck 区分属于当前文件系统的 inode 和来自先前文件系统的 inode。
如果您使用相同的 UUID 重新格式化现有的扩展文件系统,文件系统检查很可能会找到旧数据,并尝试挽救它。通常,这是一个交互式过程,因此启动时的非交互式自动文件系统检查将失败,然后您将进入救援 shell。
如果您的分区表是 GPT,那么您可以在 fstab 中使用分区 UUID,或者如果您使用 LVM,您还可以通过它获得持久名称。
Lus*_*One 14
您可以更改 /etc/fstab 以使用文件系统标签来挂载(“LABEL=testfs”而不是“UUID=....”,而不是为每个新文件系统重新使用 UUID(这会对 e2fsck 产生一些负面影响)。 "),然后用“mke2fs -L testfs ...”指定格式化时的标签。
我只需将文件系统放在LVM 精简池上,并在创建后制作精简快照。然后,我只需回滚到该快照,而不是重新创建文件系统。在存储方面,这几乎没有开销。
您还可以在创建后立即拍摄文件系统的映像,并将其保存以供以后恢复dd
;如果底层存储是 SSD,这尤其有吸引力,因为它将使用丢弃将块标记为零/未使用,因此图像的创建速度会很快,图像文件大多稀疏,因此在有效存储需求方面微不足道,并且恢复将速度也快得惊人。
请注意,根据文件的大小,文件系统之间的速度实际上存在相当大的差异(请参阅页面底部的基准测试)。对于中等大小的文件,XFS可能更快!
mkfs
但如果您习惯按需使用,还有一个更简单的解决方案:mkfs.ext4 -U ${your_uuid_here}
让您设置文件系统的 UUID :)
归档时间: |
|
查看次数: |
2544 次 |
最近记录: |