![如何使用 LVM 及其包含的物理卷和逻辑卷扩展分区?](https://linux22.com/image/3431/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20LVM%20%E5%8F%8A%E5%85%B6%E5%8C%85%E5%90%AB%E7%9A%84%E7%89%A9%E7%90%86%E5%8D%B7%E5%92%8C%E9%80%BB%E8%BE%91%E5%8D%B7%E6%89%A9%E5%B1%95%E5%88%86%E5%8C%BA%EF%BC%9F.png)
在我的 240 GB SSD 上,我最初有两个分区,一个包含 Linux Mint 的逻辑卷,另一个包含与 Windows 共享的 NTFS 分区。
现在我删除了 NTFS 分区,并希望扩展我的逻辑卷组以使用释放的磁盘空间。
我如何扩展卷组, 我的包含 /home 的逻辑卷和文件系统 (ext4)在 /home 上?这可以在网上做吗?
PS:是的,我知道我必须备份我的数据:)
/dev/sdb/ (240GB)
linuxvg (160GB) should use 100% of the disk space
swap
root
home (ext4, 128GB) should be extended to use the remaining space
输出sudo vgdisplay
:
--- Volume group ---
VG Name linuxvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 160,00 GiB
PE Size 4,00 MiB
Total PE 40959
Alloc PE / Size 40959 / 160,00 GiB
Free PE / Size 0 / 0
VG UUID ...
--- Logical volume ---
LV Path /dev/linuxvg/swap
LV Name swap
VG Name linuxvg
LV UUID ...
LV Write Access read/write
LV Creation host, time mint, 2013-08-06 22:48:32 +0200
LV Status available
# open 2
LV Size 8,00 GiB
Current LE 2048
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/linuxvg/root
LV Name root
VG Name linuxvg
LV UUID ...
LV Write Access read/write
LV Creation host, time mint, 2013-08-06 22:48:43 +0200
LV Status available
# open 1
LV Size 24,00 GiB
Current LE 6144
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
--- Logical volume ---
LV Path /dev/linuxvg/home
LV Name home
VG Name linuxvg
LV UUID ...
LV Write Access read/write
LV Creation host, time mint, 2013-08-06 22:48:57 +0200
LV Status available
# open 1
LV Size 128,00 GiB
Current LE 32767
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:2
--- Physical volumes ---
PV Name /dev/sdb1
PV UUID ...
PV Status allocatable
Total PE / Free PE 40959 / 0
输出sudo fdisk -l
:
Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 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
Device Boot Start End Blocks Id System
/dev/sdb1 1 468862127 234431063+ ee GPT
Disk /dev/mapper/linuxvg-swap: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 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/linuxvg-root: 25.8 GB, 25769803776 bytes
255 heads, 63 sectors/track, 3133 cylinders, total 50331648 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/linuxvg-home: 137.4 GB, 137434759168 bytes
255 heads, 63 sectors/track, 16708 cylinders, total 268427264 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
答案1
您可以在要调整大小的文件系统上运行时完成整个过程(是的,它是安全的并且完全受支持)。无需救援 CD 或备用操作系统。
- 调整分区大小(同样,您可以在系统运行时执行此操作)。格帕特易于使用并支持调整大小。
您还可以使用较低级别的工具,例如fdisk
.但您必须删除该分区并重新创建它。只需确保执行此操作时新分区从完全相同的位置开始即可。 - 重启。由于分区表是在正在运行的系统上修改的,因此只有重新启动后才会生效。
- 运行
pvresize /dev/sdXY
以使 LVM 获取新空间。 - 使用 调整逻辑卷大小
lvextend
。如果你想使用整个东西,lvextend -r -l +100%FREE /dev/VGNAME/LVNAME
.它-r
还将调整文件系统的大小。
尽管我总是建议不要使用整个卷组。你永远不知道未来你会需要什么。你以后总是可以扩大,但不能总是缩小。
答案2
所有答案都无法充分体现 LVM 的强大功能。
(这是基于 @frostchutz 对上述问题的评论。)
让我们了解一下事实:
- OP有两个分区,sdb1和sdb2是LVM的物理卷。
- sdb1 现在是 ntfs,我们需要将该空间分配给卷组
home
内的逻辑卷linuxvg
。
LVM 使用“务实方式”的步骤:
- 在 sdb1 上创建物理卷:
pvcreate /dev/sdb1
- 将 sdb1 添加到
linuxvg
:vgextend linuxvg /dev/sdb1
home
使用所有可用空间扩展逻辑卷(并调整文件系统大小):lvextend -r -l +100%FREE /dev/linuxvg/home
LVM 允许高度间接。逻辑卷位于卷组内,该卷组可以使用多个磁盘。
主页 --> linuxvg --> (sdb1, sdb2, sdc1)
答案3
看完后问题解决了这博客文章。我将用简短的形式写出解决方案:
- 从 live CD 启动
- 使用
gdisk
(如果你使用 GPT)否则你可以使用旧的fdisk
- 就我而言,请注意您的分区设置
gdisk -l /dev/sdb
- 删除你的分区
- 创建一个与前一个分区具有完全相同对齐方式的新分区(在我的示例中从块 2048 开始)
- 写入新的分区表
- 运行
partprobe -s
以刷新分区表而无需重新启动 pvresize /dev/sdb1
使用或无论您的 pv所在位置调整您的物理卷大小(用于pvs
确定您是否不知道)lvextend -l +100%FREE /dev/file/of/your/lv
现在,在我的例子中,使用 调整逻辑卷的大小sudo lvextend -l +100%FREE /dev/linuxvg/home
- 调整文件系统大小
sudo resize2fs /dev/linuxvg/home
- 首先检查一致性
sudo e2fsck -f /dev/linuxvg/home
- 享受 :)
答案4
我正在使用 RHEL7 并且需要扩展/var
.我不是专家,但任何时候我尝试umount /var
它resize2fs
都会失败,因为毫不奇怪它正在使用中。经过几天的反复试验,我发现它对我有用。
首先,在 VMWare vSphere(或者我认为您正在使用的任何虚拟机管理程序)中向磁盘添加空间。
然后,在 RHEL7 VM 上,以 root 身份按照以下步骤获取额外的磁盘空间/var
:
我跑去
lsblk
了解/var
坐在哪里- 磁盘
sda
- 分割
sda2
- 左室厚度
rhel-var
所以r 是磁盘
/va
分区中的逻辑卷。sda2
sda
- 磁盘
获取磁盘以声明新空间
echo 1 > /sys/class/block/**sda**/device/rescan
粗体部分应该是您已建立的逻辑卷所在的磁盘。
运行
parted
获取设备分区以声明空间parted
运行parted
print
命令获取分区号。运行parted
resizepart
命令设置新的分区大小。运行 parted
print
命令来确认分区大小已增加。运行parted
quit
退出程序。运行
pvresize
以使操作系统了解分区sda2
现在更大。pvresize /dev/sda2
运行
lvextend
以/var
获取分区上的新空间。lvextend -l +100%FREE '/dev/mapper/rhel-var'
我
/dev/mapper/rhel-var
从运行中获得了文件系统名称df -h
。使用good old
resize2fs
让操作系统声明您刚刚在上一步中添加到逻辑卷的额外空间。resize2fs '/dev/mapper/rhel-var'
任务完成。通过运行确认您的成功df -h