man resize2fs
说
resize2fs 程序将调整 ext2、ext3 或 ext4 文件系统的大小。它可用于放大或缩小设备上未安装的文件系统。 ...该
size
参数指定请求的文件系统的新大小
如何选择size
要指定的参数resize2fs
?进一步来说:
文件系统的大小是如何定义的?
它是否计算外部碎片和/或内部碎片?如果不计算外部碎片但计算内部碎片,则文件系统的大小应该相同,只要resize2fs
不修改或删除现有文件。
算不算用于存储 inode 的空间和用于 root 使用的空间,例如碎片整理?
df
和的“已使用”列是否gparted
显示每个文件系统的大小?“使用的”数字可以用于选择size
的参数resize2fs
吗?请注意,df
和gparted
的“已使用”列显示同一分区的不同已使用数字,但不确定原因。
谢谢。
答案1
用于resize2fs
(和mke2fs
其他类似工具)的文件系统的大小是文件系统的外部大小,IE从外面看它所占据的空间量。文件系统的内部数据结构在这里并不重要。文件系统中的所有内容(元数据、数据和文件系统中未使用的空间)都适合文件系统的大小。这还包括与文件系统托管在同一分区中的任何引导加载程序,其中可以进行此类配置(它是带 Ext2/3/4,例如,不适用于 XFS)。
确定文件系统当前大小的最佳方法是从文件系统中读取;例如,对于 ext2/3/4 文件系统,您可以将块计数乘以块大小:
dumpe2fs -h /path/to/file/system | grep -E 'Block (count|size):'
默认情况下,文件系统的大小通常是其容器的大小,例如它包含分区或逻辑卷。resize2fs
如果您没有明确指定大小,则将使用该值。size
当您想要缩小文件系统及其容器时,指定非常有用:您首先resize2fs
以目标大小运行,然后缩小容器(分区、逻辑卷等)以匹配。
要确定可以将文件系统缩小到的最小大小,最好的方法是使用resize2fs
自身:
resize2fs -M -P /path/to/file/system
会告诉您最小文件系统将占用多少块(保留所有当前内容);要确定使用的块大小,请运行
dumpe2fs -h /path/to/file/system | grep Block\ size
您可以通过添加以下内容来获取计算的详细信息-d 32
:
resize2fs -d 32 -M -P /path/to/file/system
文件系统的最大大小通常是其容器(分区或逻辑卷)的大小。分区或逻辑卷中的文件系统永远不能大于分区或逻辑卷;可能存在限制文件系统增长范围的其他约束。 (存储在图像文件中的文件系统的行为不同,resize2fs
更改文件大小以匹配文件系统大小,无论是增长还是缩小。)