Ruf*_*fus 14 partition resize2fs
要调整 LVM2 分区的大小,需要执行以下 2 个命令:
# lvextend -L+1G /dev/myvg/homevol
# resize2fs /dev/myvg/homevol
Run Code Online (Sandbox Code Playgroud)
但是,当我执行 时lvextend,我看到更改已应用于分区(如 Gnome 磁盘中所示)。那为什么我还需要做resize2fs呢?
tel*_*coM 26
该lvextend命令(不带--resizefs选项)仅使 LVM 端安排扩大块设备,即逻辑卷。无论 LV 上的文件系统类型是什么(甚至根本没有文件系统),这些操作总是相似的。
如果 LV 包含 ext2/3/4 文件系统,下一步是更新文件系统元数据,使文件系统知道它有更多可用空间,并创建/扩展必要的元数据结构来管理增加的空间。对于 ext2/3/4 文件系统,这至少涉及:
这部分特定于文件系统类型,尽管 ext2/3/4 文件系统类型非常相似,可以使用单个resize2fs工具调整它们的大小。对于 XFS 文件系统,您可以使用xfs_growfs工具代替。其他文件系统可能有自己的扩展工具。如果逻辑卷不包含文件系统,而是包含“原始”数据库或 Oracle ASM 卷之类的内容,则需要应用另一个过程。
每个文件系统都有不同的内部工作方式,因此扩展文件系统的条件因人而异。花了一段时间才为文件系统扩展设计了一个通用 API;这使得实现该fsadm resize命令成为可能,该命令为扩展多种文件系统类型提供了统一的语法。的--resizefs选项lvextend仅使用fsadm resize命令。
简而言之:在 之后lvextend,LVM 级工具(例如lvs、vgs、lvdisplay和 )vgdisplay将看到更新后的大小,但文件系统和在其上运行的任何工具(例如df)还不会看到它。
JRF*_*son 14
LVM 层只是其中文件系统的容器。您可以告诉lvextend在逻辑卷内调整文件系统的大小,而无需单独运行resize2fs添加-r(or --resizefs) 选项:
lvextend -r ...
Run Code Online (Sandbox Code Playgroud)
因为文件系统和逻辑卷是不同的抽象。卷是一块磁盘(如分区)——或者至少是“虚拟”等价物。它只是一个块设备。文件系统是一种位于其内部(或者,如果您愿意,可以在其之上)的结构,用于提供文件(和目录等)到该设备的映射。没有resize2fs,分区更大,但文件系统没有利用可用空间。
您实际上可以最初创建一个不占用整个分区的文件系统。从mke2fs手册页:
文件系统大小由 fs-size 指定。如果 fs-size 没有后缀,则将其解释为 2 KB 的幂,除非指定了 -b blocksize 选项,在这种情况下 fs-size 被解释为块大小块的数量。如果 fs-size 后缀为 'k'、'm'、'g'、't'(大写或小写),那么它被解释为 2 的幂次方千字节、兆字节、千兆字节、 TB 等。如果省略 fs-size,mke2fs 将根据设备大小创建文件系统。
如您所见,默认值是填充分区,通常没有理由不这样做 - 但如果您愿意,您可以这样做。
请注意, whenlvextend有一个选项--resizefs(或只是-r),它负责在扩展卷后扩展文件系统,而无需运行单独的命令。