LVM 磁盘扩展中 sfdisk 和 fdisk 的区别

LVM 磁盘扩展中 sfdisk 和 fdisk 的区别

为了从模板半自动化地在 Debian 11 VM 克隆上扩展 LVM 分区,sfdisk与交互式相比,当我尝试通过脚本进行扩展时,我感觉有点卡住fdisk

  1. 这是原始的分区
root# sudo fdisk /dev/sda

Commande (m pour l'aide) : p
Disque /dev/sda : 45 GiB, 48318382080 octets, 94371840 secteurs
Modèle de disque : VDISK
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 1048576 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x919d40af

Périphérique Amorçage    Début      Fin Secteurs Taille Id Type
/dev/sda1    *            2048  2000895  1998848   976M 83 Linux
/dev/sda2              2000896 86962175 84961280  40,5G 8e LVM Linux
/dev/sda3             86964222 94369791  7405570   3,5G  5 Étendue
/dev/sda5             86964224 94369791  7405568   3,5G 83 Linux
  1. 我通过 fdisk 执行以下任务来扩展 LVM 的 VG:注意:sda3 和 sda5 未使用,这就是我删除它们的原因。
  • 删除分区 5:“d”,5
  • 删除分区 3 :“d”,3
  • 删除分区 2:“d”,2
  • 创建具有默认起始/结束扇区且类型为 LVM 的新扩展部分 2:“n”、“e”、“2”、“t”、“lvm”

结果是:

Commande (m pour l'aide) : p
Disque /dev/sda : 45 GiB, 48318382080 octets, 94371840 secteurs
Modèle de disque : VDISK
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 1048576 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x919d40af

Périphérique Amorçage   Début      Fin Secteurs Taille Id Type
/dev/sda1    *           2048  2000895  1998848   976M 83 Linux
/dev/sda2             2000896 94371839 92370944    44G 8e LVM Linux

接下来,当虚拟机磁盘从 45=>60GB 增长后,我可以使用以下方法刷新 sda2sudo pvresize /dev/sda2

然后,使用以下命令扩展我的 LVM 的 VGsudo lvextend -L +5G /dev/vg/my_vg_name

最后,调整文件系统大小sudo resize2fs /dev/vg/my_vg_name并成功重启。

  1. 我想编写这些操作的脚本(当然需要人工验证),所以我的第一个想法是使用sfdisk。在将命令放入脚本之前,我会手动测试它们,所以我会这样做:
  • 删除分区 5:sudo sfdisk /dev/sda 5 --delete --force --lock;
  • 删除分区 3:sudo sfdisk /dev/sda 3 --delete --force --lock;
  • 删除分区 2:sudo sfdisk /dev/sda 2 --delete --force --lock;
  • 创建具有默认起始/结束扇区且类型为 LVM 的新扩展部分 2:
sudo sfdisk /dev/sda 2 --force --lock << EOF
,,V
write
EOF  

结果看起来不错,sda2 大小从 45GB 增长到 ~60GB:

Disque /dev/sda : 60 GiB, 64424509440 octets, 125829120 secteurs
Modèle de disque : VDISK
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 1048576 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x919d40af

Périphérique Amorçage   Début       Fin  Secteurs Taille Id Type
/dev/sda1    *           2048   2000895   1998848   976M 83 Linux
/dev/sda2             2000896 125829119 123828224    59G 8e LVM Linux

现在让我们刷新 sda2,然后扩展一个 VG,结果它变坏了:

root# sudo pvresize /dev/sda2
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

root# sudo lvextend -L +5G /dev/vg/var
  Insufficient free space: 1280 extents needed, but only 0 available

看来分区表没有通过 sfdisk 进行更新,而是通过 fdisk 进行更新。

这是 sfdisk 的“正常”行为吗,还是我错过了什么?

此外,如果您有更简单的想法或任何建议,请随时告诉我们,看它是否具有建设性。

答案1

其他论坛的某个人找到了解决方案,我将在下面总结:看来 sfdisk 需要明确的partprobekpartx -uv /dev/sda写入更改后。

这意味着我必须执行以下任务:

  • 照常使用新大小重写 sda 2
sudo sfdisk /dev/sda 2 --force --lock << EOF
,,V
write
EOF
  • 然后“刷新”sda2
sudo pvresize /dev/sda2
  • 最后启动 partprobe
sudo partprobe

现在我可以使用以下方法扩展和调整 LVM 部分的大小

sudo lvextend -L +5G /dev/vg/var

相关内容