AWS 支持实时 EBS 调整大小。我的/dev/sdb1
.
步骤1:pvresize /dev/sdb1
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 10G 0 disk
├─xvda2 202:2 0 10G 0 part /
└─xvda1 202:1 0 1M 0 part
xvdb 202:16 0 20G 0 disk
└─xvdb1 202:17 0 10G 0 part
├─home_vol 253:0 0 2G 0 lvm /home
├─tmp_vol 253:0 0 2G 0 lvm /tmp
....
第2步:pvdisplay
,lvdisplay
pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name my_vg
PV Size <2.00 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2559
Free PE 0
Allocated PE 2559
PV UUID ofH9ti-Wcuo-Io4o-796q-q7s8-9Z6S-oDsoEp
和
--- Logical volume ---
LV Path /dev/my_vg/home_vol
LV Name home_vol
VG Name my_vg
LV Status available
# open 1
LV Size <10.00 GiB
Current LE 511
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:4
如您所见,数字没有改变。好吧...让我们开始吧lvresize
。
步骤3:lvresize -L 10G /dev/my_vg/home_vol
我得到了这个:
Insufficient free space: 2049 extents needed, but only 0 available
我缺少哪一步?
答案1
您已经对 xvdb 进行了分区,并且您的 LVM 物理卷位于第一个分区(仍然只有 10GB)。所以你需要:
- 调整分区大小以填充磁盘
- 跑去
pvresize
捡新的尺寸。
就我个人而言,在使用 LVM 的 Google Compute 实例上,我不费心对磁盘进行分区——它没有任何实际用途,而且使调整大小变得更加困难。我猜这同样适用于亚马逊。只需将 PV 放在完整块设备上(xvdb 而不是 xvdb1)。然后你只需要跑pvresize
。
要调整分区大小,请使用您最喜欢的分区表编辑器。您可能必须删除分区并创建一个新分区确保起始扇区保持不变。这是极其重要的;关闭一个扇区意味着丢失数据。然后,partprobe 或 kpartx 可能能够将更新后的表实时加载到内核中,否则需要重新启动。
另一种选择可能只是附加第三个虚拟磁盘,并在那里放置另一个 PV。您可以将其添加到同一卷组,并以这种方式扩展您的 LV。