将设备路径更新为 lvm 物理卷

将设备路径更新为 lvm 物理卷

这是我的硬盘最初的样子:

  1. /dev/sda1 100MB 用于 bios_grub
  2. /dev/sda2/ 500MB 用于 /boot
  3. /dev/sda3 800MB 作为 LVM2myvg卷组的物理卷。

我曾经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。

无论如何,这肯定比改变分区编号更安全;)

相关内容