简约的 ext4 文件系统,没有日志和其他高级功能

Mar*_*ter 9 filesystems kernel debian ext4 mkfs

我有一个小型“救援”系统 (16\xc2\xa0MB),我将其作为 ramdisk 启动到 RAM 中。我准备的initrd磁盘需要格式化。我认为 ext4 会做得很好,但显然,使用日志或其他高级 ext4 功能没有任何意义。

\n

如何创建最小的 ext4 文件系统?

\n
    \n
  • 没有日记
  • \n
  • 没有任何lazy_init
  • \n
  • 没有任何扩展属性
  • \n
  • 无ACL无大文件
  • \n
  • 无需调整支撑大小
  • \n
  • 没有任何不必要的元数据
  • \n
\n

可能是最简单的最小文件系统?

\n

Art*_*nov 20

  • 或者你可以简单地使用 ext2
  • 对于 ext4:

mke2fs -t ext4 -O ^has_journal,^uninit_bg,^ext_attr,^huge_file,^64bit [/dev/device or /path/to/file]

man ext4包含很多可以禁用的功能(使用^)。

  • @400theCat 人们可以说 ext4 是添加了很多功能的 ext2 (20认同)
  • ext2 没有范围,这就是为什么它需要大量元数据来寻址块。它的解决时间也非常短。ext4还支持更大的inode,可以容纳内联文件,减少元数据+数据的大小和访问时间。人们可以使用tune2fs将ext2升级到ext4,而无需扩展和更大的inode,但对于这些功能,您必须从头开始格式化ext4 (6认同)
  • 我发现禁用日志和大文件足以满足我的 128GB SD 卡 `mkfs.ext4 -O ^has_journal,^huge_file -L 128G /dev/sdb1` (2认同)

Phi*_*ing 19

请原谅我挑战您的要求,但是您想通过关闭这些功能来实现什么目的?磁盘空间?表现?...?

\n

我\xe2\x80\x99m 很难理解为什么你想要一个可写的文件系统而不想要日志的安全性,或者为什么你想要使用 ext4 作为只读文件系统。

\n

小型只读SquashFS文件系统对于恢复系统来说是一个更安全的选择,并且在大多数情况下比 ext4 更小、更快。

\n

  • 我不是 OP,但我有一个硬盘,我想在不使用日志和其他一些 ext4 功能的情况下使用它。我选择采用简单的方式将文件系统创建为 ext2 而不是 ext4。我的动机是允许在文件系统内容上使用“scrub”等磁盘擦除实用程序。 (4认同)

Aus*_*arn 12

这里正确的答案是根本不使用虚拟磁盘。 注意 ramdisk 和 tmpfs 是两个不同的东西。

\n

您\xe2\x80\x99所描述的是一个实时系统。多年来,没有任何一个健全的 Linux live 系统设置使用 ramdisk ,因为它\xe2\x80\x99 比以下任何一个都要好得多:

\n
    \n
  • 只需使用 initramfs(可选压缩的 CPIO 存档)即可。内核将在启动时将存档提取到一个特殊的 tmpfs 实例中(这比将 initrd 复制到 ramdisk稍慢,但即使在极慢的系统上,差异也是以毫秒为单位的,因此不值得关心),然后运行该 tmpfs 实例作为根文件系统。一旦运行它\xe2\x80\x99s实际上比使用ramdisk稍微快一些(没有模拟块设备,没有花哨的文件系统驱动程序),它将占用更少的内存空间(因为tmpfs在功能上只是将页面缓存公开为一个直接文件系统),并且它将根据需要自动调整大小(因为 tmpfs 位于页面缓存中,与必须预先分配空间的 ramdisk 不同)。
  • \n
\n

或者:

\n
    \n
  • 使用直接安装的压缩只读文件系统(现在通常是 SquashFS)(根本不需要 ramdisk),然后在其上使用覆盖文件系统(现在通常是 OverlayFS)以使其可写。鉴于您所说的恢复映像非常小,这可能不会为您节省任何东西,但它\xe2\x80\x99s是当今大多数实时系统使用的\xe2\x80\x98normal\xe2\x80\x99方法。
  • \n
\n

  • @SottoVoce您似乎将 initramfs 与 initrd 混淆了。它们具有相似的目的,但由于多种原因而存在_非常_不同的情况。可以在这里找到简洁的解释:/sf/answers/742278911/。现在基本上所有普通的 Linux 系统都在使用 initramfs(这种情况至少已经存在五年了),因为它在几乎所有方面都是一种卓越的设计。 (3认同)
  • 许多 Raspberry Pi 实时系统使用 ramdisk,因为这样您可以在启动后拔出 SD 卡。请注意,这些通常是专用系统而不是通用桌面系统。 (2认同)
  • 令人恼火的是,太多人将 initramfs 称为 initrd,太多人将 tmpfs 称为 ramdisk。我添加了一个小注释以避免绊倒危险。 (2认同)