计算一定量数据的最小 ext3 分区大小

计算一定量数据的最小 ext3 分区大小

以下这些 ext3 分区包含相同的数据。我们可以看到,分区大小越大,相同文件所需的空间就越大:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/loop11            3965777    561064   3199964  15% [...]
/dev/loop19             573029    543843     29186  95% [...]

Filesystem            Size  Used Avail Use% Mounted on
/dev/loop11           3.8G  548M  3.1G  15% [...]
/dev/loop19           560M  532M   29M  95% [...]

Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/loop11          1024000    1656 1022344    1% [...]
/dev/loop19          1024000    1656 1022344    1% [...]

我从一个固定大小的分区开始,这个分区可能浪费了很多空间,我想创建一个能够容纳这些数据但大小(几乎)最小的分区。如何才能可靠地计算出存储一定量数据所需的最小分区大小?数据量会随时间变化,我需要自动进行这些计算。

答案1

您可以尝试以下步骤:

  • 创建一个比您需要的稍大的磁盘映像。
  • 直接在镜像中创建文件系统。您可能需要设置文件系统参数,如 billc.cn 所建议的。
  • 循环挂载图像并复制文件。卸载。
  • 使用以下方法将图像缩小到最小尺寸resize2fs -M。如果您愿意,可以使用 Gparted 作为图形前端。

基本上,resize2fs可以根据文件实际使用的空间动态地进行您想要的计算。

如果您只想计算最小尺寸,而不是实际调整大小,请使用resize2fs -P

由于您的数据只有几百兆字节,您可以在 RAM(tmpfs)中创建中间磁盘映像,以便在任何具有可用空间的文件系统中节省时间(例如 /tmp),调整大小,然后将dd其复制到您的硬盘上。

如果你的数据一旦写入就不会改变,你应该考虑使用壁球或者使用类似的文件系统,这将比 ext3 更紧凑。否则,请考虑 ext2,它可以避免日志记录的开销。

答案2

您可以使用(或)-b选项明确设置块大小,也可以使用选项指定文件类型。有关详细信息,请查看手册页。mkfsmke2fs-T

您还需要确保 inode 的数量和日志大小合适。

相关内容