尝试调整未使用 64 位标志创建的旧 ext4 分区的大小时,如果新大小为或超过 16TiB,resize2fs 1.42 将失败。
$ resize2fs -p /dev/mapper/target-device
resize2fs: New size too large to be expressed in 32 bits
我不想将文件复制到外部介质。我也不想冒数据丢失的风险。如何安全地调整音量?
尝试调整未使用 64 位标志创建的旧 ext4 分区的大小时,如果新大小为或超过 16TiB,resize2fs 1.42 将失败。
$ resize2fs -p /dev/mapper/target-device
resize2fs: New size too large to be expressed in 32 bits
我不想将文件复制到外部介质。我也不想冒数据丢失的风险。如何安全地调整音量?
使用该选项
-O 64bit
(在今天创建的文件系统中默认启用),ext 文件系统可以跨越 1024 PiB,而不仅仅是 16 TiB 卷。您可以升级旧文件系统以激活此选项。在你开始之前
$ cat /proc/partitions
,必要时重新启动。1.43
(2016-05-17) 或更高版本的 e2fsprogsUbuntu 20.04
(2020-04-23) 附带e2fsprogs 1.45.x
(good!)Ubuntu 18.04
(2018-04-26) 附带e2fsprogs 1.44.x
(good!)Ubuntu 16.04
(2016-04-21) 与e2fsprogs 1.42.12
(2014-08-25) 一起发布 - 升级到较新版本或手动安装较新版本(请参阅此答案的末尾):磁盘的步骤在
/dev/mapper/target-device
第 1 步:正确卸载
第 2 步:在开始之前确保一致性
-n
flag 表示不进行更改。根据导致错误的原因,e2fsck
尝试修复可能会有所帮助。第 3 步:在文件系统中启用 64 位支持
请考虑阅读
man tune2fs
-man resize2fs
您可能还希望更改一些其他文件系统标志。在典型的 HDD RAID 上,这需要 4 分钟的高 IO 和 CPU 负载。第 4 步:调整大小
如果您没有在命令行上传递大小,resize2fs会假定“增长到所有可用空间”——这通常是您想要的。
在典型的 HDD RAID 上,这需要 4 分钟的高 IO 和 CPU 负载。该
-p
标志启用进度条 - 但仅在一些初始步骤后显示。第 5 步:再次检查
较新版本的 e2fsck 可能会建议修复时间戳或范围树。这并不表示存在任何严重问题,您可以选择现在或以后修复它。
如果发生错误,不要惊慌,也不要尝试写入卷;请咨询对文件系统有广泛了解的人,因为进一步的操作可能会破坏数据!
如果没有出现错误,重新挂载设备:
享受新空间!
如果使用旧版本:启用源包支持的额外步骤,
e2fsprogs
在旧系统上下载并编译新版本:您将不需要任何非 Ubuntu 版本的 e2fsprogs 来继续运行升级后的文件系统 - 内核支持这些已经有一段时间了。只需启动升级。
作为参考,如果要求 mke2fs 使用不适当的选项创建大型设备,则会打印类似的错误消息:
它最近发生在我身上,一个 Ubuntu 18.04 在最初安装一个 16.04 Ubuntu 后已经更新......存储阵列 (/dev/sdb) 最初被划分为两个 14 TB 分区,这是因为想要扩大问题发生的第一个分区到 28 TB。
我不需要下载新版本的 resize2fs,因为它是最新的。
唯一的问题是转换已格式化为 32 位的 64 位分区 1 ......而不是邀请读者查阅 tune2fs 的文档(如 Anx 建议的那样),我提出了一个真实的例子!
最后,我们扩大磁盘分区!
如果由于“文件系统繁忙”而无法卸载,请从 LiveCD(Ubuntu 桌面)启动。使用 v18.04+,因为它已经有 resize2fs v1.44。