重置 ext4 文件系统而不更改文件系统 UUID

dav*_*nte 15 ext4 inode

我有一个文件系统,其中包含许多我定期删除的小文件(这些文件是可以轻松重新生成的缓存)。rm -rf简单地创建一个新的文件系统比运行或rsync删除所有文件要快得多(即有效删除包含数千个文件的大目录)。

创建新文件系统来擦除文件系统的唯一问题是它的 UUID 发生变化,从而导致例如/etc/fstab.

有没有一种方法可以简单地从 ext4 文件系统中“取消链接”目录,或者完全清除其 inode 列表?

roa*_*ima 22

由于您正在使用,因此ext4您可以格式化文件系统并将 UUID 设置为已知值。

\n

man tune2fs写道,

\n
\n

-U UUID将文件系统的通用唯一标识符 (UUID) 设置为 UUID。UUID 的格式是一系列由连字符分隔的十六进制数字,如下所示c1b9d5a2-f162-11cf-9ece-0020afc76f16

\n
\n

同样,man mkfs.ext4写道,

\n
\n

-U UUID将文件系统的通用唯一标识符 (UUID) 设置为 UUID。[\xe2\x80\xa6如上\xe2\x80\xa6]

\n
\n

就我个人而言,我更喜欢通过标签来引用文件系统。例如,在/etc/fstab我的一个系统中,我有这样的条目

\n
# <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 校验和问题导致重新发现或损坏重新格式化的文件系统,并且它们更容易在视觉上识别。(但在多个系统中不太可能是唯一的,因此在交换磁盘时要小心。)tune2efsmkfs.ext4

\n


Voj*_*fny 17

您可以使用-Uwithmkfs.ext4指定您自己的 UUID,以便在重新创建文件系统时您可以简单地重用以前的 UUID。


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 ...”指定格式化时的标签。

  • 例如,“* ...这对 e2fsck 有一些负面影响...*”? (4认同)
  • 例如,UUID 用于metadata_csum 功能的校验和,因此这可能会错误地导致 e2fsck 认为来自先前格式的文件系统的陈旧元数据块包含有效元数据。这是在校验和中使用 UUID 的主要原因 - 以避免在同一块设备上重新格式化文件系统时出现过时块的误报。风险并不严重,因为 e2fsck 非常强大,但在这种情况下是不必要的。 (3认同)

Mar*_*ler 8

我只需将文件系统放在LVM 精简池上,并在创建后制作精简快照。然后,我只需回滚到该快照,而不是重新创建文件系统。在存储方面,这几乎没有开销。

您还可以在创建后立即拍摄文件系统的映像,并将其保存以供以后恢复dd;如果底层存储是 SSD,这尤其有吸引力,因为它将使用丢弃将块标记为零/未使用,因此图像的创建速度会很快,图像文件大多稀疏,因此在有效存储需求方面微不足道,并且恢复将速度也快得惊人。

请注意,根据文件的大小,文件系统之间的速度实际上存在相当大的差异(请参阅页面底部的基准测试)。对于中等大小的文件,XFS可能更快!

mkfs但如果您习惯按需使用,还有一个更简单的解决方案:mkfs.ext4 -U ${your_uuid_here}让您设置文件系统的 UUID :)