如何在不使用LiveCD或重新启动的情况下调整Fedora中的根LVM分区

我有一个虚拟机,最近有磁盘镜像从20GB增加到50GB, fdisk -lvalidation虚拟机可以看到这个新的大小。 现在我需要调整我的根LVM分区来填充额外的30GB。

我发现了 一些 关于调整LVM大小的文章 ,但是less数覆盖根分区大小的文章都声称需要从LiveCD启动。 有没有办法做到这一点,而不关掉服务器? 服务器很关键,所以我想尽量减less停机时间。

编辑: fdisk -l输出fdisk -l

 [root@fedora-host ~]# sudo fdisk -l Disk /dev/sda: 53.7 GB, 53687091200 bytes 255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00097c90 Device Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 83886079 41430016 8e Linux LVM Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes 255 heads, 63 sectors/track, 4389 cylinders, total 70516736 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes 255 heads, 63 sectors/track, 766 cylinders, total 12320768 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table 

编辑:我如何调整物理分区? fdisk可以看到可用空间,但我不知道如何调整主LVM分区的大小来使用它。 我尝试启动到一个LiveCD和使用parted'd resize命令,但它给了我的错误“无法检测文件系统”。 我发现这个指南 ,说我需要删除分区,并创build一个正确的大小,但这听起来非常危险。

最终编辑:Parted的resize命令奇怪地无法调整LVM分区的大小。 去搞清楚。 相反,我只是删除旧的分区,并创build一个新的范围,如上面的链接所述,并正确调整了LVM分区的大小。 然后我遵循下面的build议来调整LVM分区内的卷和文件系统的大小。

您可以在线增长逻辑卷。 你必须卸下它才能缩小它(这需要一个LiveCD / Rescue模式。)

  1. pvresize /dev/sda2 (假设你的LVM分区是sda2根据需要replace)
  2. lvextend /dev/mapper/root -l+100%FREE (或者,无论您的根逻辑卷是否被调用)。
  3. resize2fs /dev/mapper/root (假设ext2 / 3/4)

您的系统是否真的从20更改为50 GB? 这似乎很奇怪,因为你的sda2设备是〜40GB,lv_root显示36GB,交换显示6GB。

您输出的fdisk -l显示/dev/sda的总扇区为104857600/dev/sda2使用的最后一个扇区是83886079 。 这告诉我,您还没有调整分区大小以使用驱动器上的所有可用空间。 pvresize命令不会更改分区表。 您需要先更改分区表。

如果LVM物理卷位于分区上,则不能在不重新启动的情况下调整其大小。

你可以在驱动器上编辑分区表,但Linux会拒绝使用它,直到你重新启动。

如果您使用的是XFS,请将resize2fs切换到xfs_growfs

您可以使用pvslvs显示您使用的PV和卷组中的LV。

PV在原始磁盘上

 pvresize /dev/sda lvextend /dev/<volume-group>/<lv-name> -L +<size>G resize2fs /dev/<volume-group>/<lv-name> 

在分区上的PV

首先,你必须调整分区大小,使用partedfdisk或类似的工具。 请记住,这些工具编辑分区的描述,不会移动数据。 换句话说,您可以轻松地只扩展磁盘上的最后一个分区。 然后重新启动您的机器,之后您应该能够通知LVM它有更多的可用空间:

 pvresize /dev/sda2 lvextend /dev/<volume-group>/<lv-name> -L +<size>G resize2fs /dev/<volume-group>/<lv-name> 

安装gparted。 以根用户身份运行(使用ssh -X或者x2go,如果是远程的话)。 select分区。 它应该显示自由空间(右边)。 如果没有,则需要重新引导虚拟机以查看虚拟设备的新大小。 这应该是与systemd最小的停机时间。

右键单击并selectresize。 将结尾拖到磁盘的末尾。 确保你不要触摸开始。 gparted可以在resize的时候移动一个分区,但是这当然会破坏正在运行的系统。 但移动结束是好的。 检查gparted将执行的挂起操作,以确保您正在扩展而不移动分区。 点击应用。 gparted将更改磁盘上的分区,然后发出内核ioctl重新读取分区表,并更改活动块设备的大小。 然后,因为它看到它是LVM PV,它会为您运行pvresize。 退出gparted,vgs现在显示你的新空间。

我曾经听说过,分散的东西可以做到这一点,没有一个graphics用户界面的开销,但我从来没有能够找出巫术。 Parted必须是我尝试使用的最差的CLI接口之一。

不要使用fdisk,你必须删除并重新分配分区来resize,默认情况下,它将在写入时擦除LVM2签名。 我想我看到了一个“高级”的选项来closures这个破坏性的行为,但我从来没有testing过。

你也可以尝试cfdisk(curses fdisk)。 它可能有一个可用的分区大小。 手动运行pvresize很容易,并且有一个命令来告诉内核重新读取分区表。 但是我必须testing,以确保它不会像fdisk一样擦除LVM签名。

尝试testing磁盘

sudo dnf安装testing盘

sudotesting盘

只需设置创build一个日志文件然后它会列出分区, – select媒体/分区 – 然后键入 – 分析 – 快速search – select和写入