有人可能会帮助我解决这个问题,因为它让我感到困惑:
我有一个 1.8T 磁盘(它是一个 VM 虚拟磁盘),这里是 df 的片段:
df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb ext4 1.8T 1.6T 91G 95% /af
这里是分区信息:
parted /dev/sdb print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 1924GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0.00B 1924GB 1924GB ext4
所以我假设文件系统是在没有首先创建分区的情况下设置的。现在需要进行扩展,这将超出 2TB 的限制。我只是不确定这是否会出现问题?根据我的理解,增加虚拟磁盘的大小应该可以,并且扩展应该通过简单地扩展文件系统来完成:
resize2fs -f /dev/sdb
,那么我的做法是否正确?
那行得通;ext4 并不关心它所在的块设备是分区、整个硬盘驱动器、LVM 卷、网络块设备、iSCSI 目标……它所看到的都是块。
简短的回答是也许。
我没有专门用 ext4 测试过这个,也不知道你的虚拟机管理程序是什么/虚拟磁盘是什么格式,但这肯定适用于 EBS 上的 XFS。强烈建议您首先在一次性虚拟机上进行测试,并确保在尝试目标之前拥有良好的备份(如果它有任何价值)。
您需要先调整存储大小。如果您在 qemu 中使用“原始”图像,那么这是可能的,但很难做到 - 您需要使用 dd 附加空字节负载。它的语法相当神秘——要小心并彻底阅读。如果您使用 qcow2 图像,那就简单多了 - 只需
qemu-img resize yourdiskfile 2500G
. 但不同的存储基底/管理程序还有很多其他可能性。您没有分区表,因此无需担心 MBR 的 2Tb 限制。
当我构建新的虚拟机时,我总是使用分区表(至少来自操作系统卷)并将数据保存在与操作系统不同的卷上。
从优雅的角度来看,这在技术上是一种“该死的配置”,但不应该成为问题。简单地调整 .vdi 或 .vmdk 的大小并像正常调整大小一样对待它应该没问题,只是您可以明显跳过扩展分区步骤。
由于它是一个虚拟机,我肯定会先制作一个快照(如果您的虚拟机软件允许调整大小)或者只是复制文件。我想既然你有一个 2T 虚拟机,那么空间在一两个小时内不会成为问题。仅仅因为这是非常便宜的保险,那么您就可以完全不用担心出现任何问题,您可以自由地尝试任何没有风险的事情,或者回滚并尝试其他事情。
除了有点“奇怪”之外,从技术上的“它能工作吗”配置来看,这并没有什么问题。块设备就是块设备。我在各种快速安装的东西上犯过一两次同样的错误,它看起来有点愚蠢,但很好。我曾经在一家公司工作,该公司故意这样做是出于某种(主要是神话)它可能会更快。(一个例外是只要没有发生任何愚蠢的事情,例如尝试使用磁盘上的分区工具破坏文件系统的启动等)。
如果您在应用程序中担心的话,您可以使用 dd 将前几兆字节保存到另一个 FS 上的文件中,以防万一。当 FS 更新时,该文件不会保持同步,因此它显然不是一个完美的备份,但它是一个简单的预防措施,并且将提供一个很好的机会能够从引导扇区损坏和其他足够安装的简单事情中恢复。尽管我认为既然您了解了这种配置怪癖,那么在实践中这不会成为太大的问题。