使用 LVM 调整 EBS 大小

使用 LVM 调整 EBS 大小

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步:pvdisplaylvdisplay

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)。所以你需要:

  1. 调整分区大小以填充磁盘
  2. 跑去pvresize捡新的尺寸。

就我个人而言,在使用 LVM 的 Google Compute 实例上,我不费心对磁盘进行分区——它没有任何实际用途,而且使调整大小变得更加困难。我猜这同样适用于亚马逊。只需将 PV 放在完整块设备上(xvdb 而不是 xvdb1)。然后你只需要跑pvresize

要调整分区大小,请使用您最喜欢的分区表编辑器。您可能必须删除分区并创建一个新分区确保起始扇区保持不变。这是极其重要的;关闭一个扇区意味着丢失数据。然后,partprobe 或 kpartx 可能能够将更新后的表实时加载到内核中,否则需要重新启动。

另一种选择可能只是附加第三个虚拟磁盘,并在那里放置另一个 PV。您可以将其添加到同一卷组,并以这种方式扩展您的 LV。

相关内容