在尝试将根分区从一个磁盘移动到另一个磁盘时,我做了以下操作:
- 添加新磁盘
- 使用 parted 对磁盘进行分区(第 3 部分现在几乎完全填满了磁盘)
初始化物理卷
$ pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created
扩展卷组以包含这个新的物理磁盘
$ vgextend myvg /dev/sdb3 Volume group "myvg" successfully extended
扩展了逻辑卷(我想这就是我搞砸的地方:我想我应该将东西移动到该组中的新 pv - 有人可以确认吗?)
$ lvextend /dev/mapper/myvg-root /dev/sdb3
我现在想撤消 lvextend,然后继续执行将旧物理卷的内容移至新物理卷的原始计划。我可以缩小逻辑卷吗(我还没有使用类似 resizefs 的命令触碰位于 /dev/mapper/myvg-root 中的 ext4 分区)而不用担心损坏 ext4 文件系统?如果可以,我该如何告诉它缩小到正确的量?
$ lvreduce --by-exactly-the-amount-occupied-by-PV /ev/sdb3 /dev/mapper/myvg-root
答案1
总而言之,当前在逻辑卷(myvg-root)内有一个 ext4 文件系统(root),该逻辑卷位于由两个物理卷(其中一个是新添加的 sdb3)组成的卷组(myvg)中。
您可以使用 lvdisplay 检查逻辑范围到物理范围的映射
$ lvdisplay -m
--- Logical volume ---
LV Name /dev/myvg/root
VG Name pfeifer
LV UUID 2LeFq8-zz3y-Y62m-931D-mD3m-XmK1-6Zp3Ir
LV Write Access read/write
LV Status available
# open 1
LV Size 3.62 TiB
Current LE 947851
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:0
--- Segments ---
Logical extent 0 to 470980:
Type linear
Physical volume /dev/sda3
Physical extents 0 to 470980
Logical extent 470981 to 947850:
Type linear
Physical volume /dev/sdb3
Physical extents 0 to 476869
你可以使用 lvreduce 简单地减少这个逻辑卷的大小
$ lvreduce -l -476870 /dev/myvg/root
WARNING: Reducing active and open logical volume to 1.80 TiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce root? [y/n]: y
Reducing logical volume root to 1.80 TiB
Logical volume root successfully resized
请注意,sdb3 上要减少的逻辑区数是 476869+1(从 0 开始计数!)。就是这样。现在快速检查似乎可以确认原始的世界顺序:
--- Segments ---
Logical extent 0 to 470980:
Type linear
Physical volume /dev/sda3
Physical extents 0 to 470980
现在,缓慢而繁琐的 pvmove 命令应该允许移动数据:
nohup pvmove -n /dev/myvg/root /dev/sda3 /dev/sdb3 &