如何调整/扩大/增加非 LVM ext4 分区的大小

如何调整/扩大/增加非 LVM ext4 分区的大小

我已经搜索过论坛,但找不到合适的答案:

我有一台 Ubuntu Server 10.04 作为 KVM 主机,以及一个运行 10.04 的客户系统。主机系统使用 LVM,有三个逻辑卷,它们作为虚拟块设备提供给客户机 - 一个用于 /,一个用于 /home,一个用于 swap。客户机已在未使用 LVM 的情况下进行分区。

我已经在主机系统中扩大了逻辑卷 - 客户机成功看到了更大的虚拟磁盘。但是,这个虚拟磁盘包含一个“旧”分区,其大小仍然很小。

fdisk -l 的输出是

me@produktion:/$ LC_ALL=en_US sudo fdisk -l

Disk /dev/vda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c8ce7

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        3917    31455232   83  Linux

Disk /dev/vdb: 2147 MB, 2147483648 bytes
244 heads, 47 sectors/track, 365 cylinders
Units = cylinders of 11468 * 512 = 5871616 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f2bf7

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1         366     2095104   82  Linux swap / Solaris
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 32, 33) logical=(0, 43, 28)
Partition 1 has different physical/logical endings:
     phys=(260, 243, 47) logical=(365, 136, 44)

Disk /dev/vdc: 225.5 GB, 225485783040 bytes
255 heads, 63 sectors/track, 27413 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027f25

   Device Boot      Start         End      Blocks   Id  System
/dev/vdc1               1        9138    73398272   83  Linux

parted print all 的输出是

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4         boot


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  2146MB  2145MB  primary  linux-swap(v1)


Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

我想要实现的只是增加或调整分区 /dev/vdc1 的大小,以便它使用虚拟块设备 /dev/vdc 提供的整个空间。问题是,当我尝试使用 parted 执行此操作时,它会抱怨:

(parted) select /dev/vdc                                                  
Using /dev/vdc
(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

(parted) resize 1                                                         
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Start?  [1049kB]?                                                         
End?  [75.2GB]? 224GB                                                     
Error: File system has an incompatible feature enabled.  Compatible features are has_journal, dir_index, filetype, sparse_super and large_file.  Use tune2fs
or debugfs to remove features.

那么我该怎么办?这是一个无头生产系统。有什么安全的方法可以扩大此分区?不过我可以卸载它 - 所以这不是问题。

编辑:Cfdisk 显示了一个小的未分区可用空间,然后是分区(标记为“boot”和 Linux/ext3),然后是剩余的未分区空间。删除分区并使用 cfdisk 重新创建后 - cfdisk 显示一个大的分区区域(对我来说没问题),并且文件系统类型只有“Linux”

Resize2fs 返回此错误 resize2fs 1.41.11 (14-Mar-2010) resize2fs: Bad magic number in super-block while trying to open /dev/vdc1 Couldn't find valid filesystem superblock

答案1

页面指​​出,执行该操作的方法是卸载、删除、重新创建具有所需大小的分区,然后使用 resize2fs 扩展分区。resize2fs 手册页也同意这一点。

我知道“删除分区”听起来很可怕,但它根本不会改变数据。它只会改变引用容器的内容。只要你不这样做,mkfs.ext4就没问题。

您的分区起点必须与原先相同,否则操作系统将无法理解其背后的含义。然后可以将终点设得更远,以创建更大的分区。

我认为评论中的错误与移动起点有关。您需要从与开始点完全相同的位置开始。终点可以移动。

归功于普苏西建议使用 fdisk 而不是 cfdisk 并确认起点问题。

答案2

一个例子:

/dev/sdb2 是 /boot 分区。它有 100 MB,相当小。要在正在运行的系统上增加此 ext4 分区,请执行以下操作(以 root 或 sudo 身份):

卸载 /boot

parted /dev/sdb

(分开)打印

型号:ATA Patriot Torqx 2 (scsi)
磁盘 /dev/sdb:32.0GB
扇区大小(逻辑/物理):512B/512B
分区表:msdos

编号 开始 结束 大小 类型 文件系统 标志
1 1049kB 12.9GB 12.9GB 主类型=83
2 12.9GB 13.0GB 107MB 主 ext4 类型=83

(分开) rm 2

(分开)

分区类型?主/扩展?主
文件系统类型?[ext2]?
开始?12.9GB
结束?13.4GB

(分开)退出

resize2fs /dev/sdb2

resize2fs 1.42.6(2012 年 9 月 21 日)
/dev/sdb2 上的文件系统安装在 /boot 上;需要在线调整大小
old_desc_blocks = 1,new_desc_blocks = 2
/dev/sdb2 上的文件系统现在长 498688 个块。

完毕!

所有数据都保留在原处。/boot 已准备好使用,大小为 472MB(parted 的大小并不安全,请阅读手册了解原因)

所有数据之前都备份过,但这只是作为预防措施。我建议也这样做。

如果失败,请使用以下命令查找停止卸载 /boot 的进程:

lsof /boot

祝你好运!

答案3

如果您尝试删除并重新创建分区,当您的分区起始地址低于 2048 时,您可能会遇到一些麻烦,就像我遇到的那样resize2fs

Couldn't find valid filesystem superblock.

fdisk 版本 2.17.2,fdisk IIUC 强制您从 2048 开始,以确保您的硬盘“正确对齐”。因此,如果您的原始分区在 2048 之前开始,那么您在尝试重新创建分区时会遇到困难。

最好的方法是克隆磁盘时使用 rsync

相关内容