这是我的硬盘最初的样子:
- /dev/sda1 100MB 用于 bios_grub
- /dev/sda2/ 500MB 用于 /boot
- /dev/sda3 800MB 作为 LVM2
myvg
卷组的物理卷。
我曾经parted
删除过 sda1 和 sda2。之后为 /boot 重新创建了 /sda1 (600MB)。然后用于gdisk
更新 /dev/sda 的编号。所以现在 /dev/sda3 变成了 /dev/sda2。问题是当我运行时,pvs
我仍然得到/dev/sda3
物理卷myvg
。
我该如何更新它同时保持里面的数据myvg
完整?
答案1
对于其他想要做同样事情的人,这里有两条建议:
- 如果可以的话:不要重新组织分区编号,这对生产系统来说风险太大。编号不连续也没关系。
- 如果您确实需要这样做:首先卸载属于卷组的所有 lvm 分区。pvs 中的物理卷名称将立即更新。
在这种情况下,您有几种解决方案:
- 重启系 统 一 次 。
- 禁用卷组,执行 partprobe 通知系统有关分区更改的信息,启用卷组。(正如建议@鲁迪迈尔)
# vgchange -an myvg # 部分探测 # vgchange -ay myvg
详情如下:
我使用相同的工具重现了您的操作。磁盘名称和大小不同,/dev/sdb 而不是 /dev/sda。
删除第一个分区之前:
# fdisl -l /dev/sdb
[...]
Device Start End Sectors Size Type
/dev/sdb1 2048 4196351 4194304 2G Linux filesystem
/dev/sdb2 4196352 8390655 4194304 2G Linux filesystem
/dev/sdb3 8390656 20971486 12580831 6G Linux LVM
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb3 myvg lvm2 a-- 6.00g 5.92g
删除后:
# fdisk -l /dev/sdb
[...]
Device Start End Sectors Size Type
/dev/sdb3 8390656 20971486 12580831 6G Linux LVM
创建新分区 1 后:
# fdisk -l /dev/sdb
[...]
Device Start End Sectors Size Type
/dev/sdb1 2048 8390655 8388608 4G Linux filesystem
/dev/sdb3 8390656 20971486 12580831 6G Linux LVM
重新组织数字后(gdisk /dev/sdb + s):
# fdisk -l /dev/sdb
[...]
Device Start End Sectors Size Type
/dev/sdb1 2048 8390655 8388608 4G Linux filesystem
/dev/sdb2 8390656 20971486 12580831 6G Linux LVM
但 pvs 命令显示错误的数字
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb3 myvg lvm2 a-- 6.00g 5.92g
在这种情况下,LVM 或内核的某些部分总是使用旧表。
重启后,系统和 lvm 正确地考虑了新的分区号。
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb2 myvg lvm2 a-- 6.00g 5.92g
我认为这对您的数据来说是安全的,如果我没记错的话,lvm 直接使用磁盘的 uuid。这些命令不应该更改 uuid。
无论如何,这肯定比改变分区编号更安全;)