如何调整/放大/扩展非LVM ext4分区


20

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

我有一个Ubuntu Server 10.04作为KVM主机和一个来宾系统,该系统也运行10.04。主机系统使用LVM,共有三个逻辑卷,它们作为虚拟块设备提供给来宾-一个用于/,一个用于/ home和一个用于交换。来宾已分区,没有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

分开打印的所有输出为

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) 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

Answers:


18

页面指​​示卸载,删除,重新创建具有所需大小的分区以及使用resize2fs扩展分区的方法。resize2fs手册页对此表示同意。

我知道“删除分区”听起来很吓人,但它根本不会改变数据。它只是改变了引用容器的东西。只要您不这样mkfs.ext4做,就应该没事。

您的分区起点必须与原点相同,否则操作系统将不知道如何解释其背后的内容。然后可以使端点更远以形成更大的分区。

我认为注释中的错误与移动起点有关。您需要在与启动时完全相同的位置启动它。终点可以移动。

感谢psusi为暗示的fdisk,而不是CFDISK并确认起点问题。


好的,我使用cfdisk删除了该分区并创建了一个新分区。但是我当时无法调整它的大小,也无法安装它了。
Mischa 2012年

resize2fs 1.41.11(2010年3月14日)resize2fs:尝试打开/ dev / vdc1时,超级块中的魔术数字错误。找不到有效的文件系统超级块。
米沙(Mischa)2012年

1
实际上,cfdi​​sk显示了一个小的可用空间未分区空间,然后是分区(标记为“ boot”和Linux / ext3),然后是其余的未分区空间。删除分区并使用cfdisk再次创建分区后-cfdisk显示了一个大分区区域(对我来说这很好),并且文件系统类型仅为“ Linux”。
Mischa 2012年

8
您需要重新创建分区,以使其从与原始分区完全相同的扇区开始。您无法使用cfdisk执行此操作。使用fdisk或parted并将它们置于扇区模式。
psusi 2012年

1
是否可以通过某种方式调整ext4分区的大小,以便移动分区的开头?因为我在当前ext4分区的前面有可用空间,而不是在后面...幸运的是,我的可用空间比分区大的要多,所以我想我可以执行以下操作:将整个分区复制到前面,删除后面的一个,然后将移动后的大小调整为整个大小?但这对我而言似乎是一个可怕的
骇客

6

一个例子:

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

卸载/启动

分开了/ 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

(分开)mkpart

分区类型?主要/扩展?主
文件系统类型?[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(分开的大小不够安全,请阅读手册以了解原因)

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

使用以下命令查找在失败的情况下停止/ boot卸载的过程:

lsof /启动

祝好运!


2
您需要使用扇区单位而不是GB,以确保将其放在完全相同的位置。
psusi 2014年

0

如果您尝试删除并重新创建分区,那么当您的分区开始于2048以下时,您可能会遇到麻烦,就像我在时遇到的那样resize2fs

Couldn't find valid filesystem superblock.

fdisk版本2.17.2开始,fdisk IIUC会强制您从2048开始,以确保硬盘驱动器“正确对齐”。因此,如果原始分区是在2048之前启动的,那么您将遇到麻烦,尝试重新创建该分区。

最好的方法是在克隆磁盘时进行rsync

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.