为了从模板半自动化地在 Debian 11 VM 克隆上扩展 LVM 分区,sfdisk
与交互式相比,当我尝试通过脚本进行扩展时,我感觉有点卡住fdisk
。
- 这是原始的分区
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
- 我通过 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
并成功重启。
- 我想编写这些操作的脚本(当然需要人工验证),所以我的第一个想法是使用
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 需要明确的partprobe
或kpartx -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