背景
我已将第二块硬盘 (500GB) 添加到此 RHEL VM。然后对其进行格式化,为其创建卷组 (storerhel2) 和逻辑卷 (store)。然后将其挂载到新创建的目录 (/newStore)。它显示在 sdb 下。一切正常。
lsblk -f
sdb
└─sdb1 LVM2_成员 tcsmci-DJhs-19V8-UrKR-SOkI-hE1L-TuCqg3
└─storerhel2-存储 xfs eec69c87-8dd5-46c1-b402-1efe67d0489b /newStore
dmesg | grep sg | grep -i attached
[29.711244] sd 0:0:0:0:已连接 scsi 通用 sg0 类型 0
[29.711471] sd 0:0:1:0:已连接 scsi 通用 sg1 类型 0
[29.711731] sr 3:0:0:0:已连接 scsi 通用 sg2 类型 5
然后我从虚拟机中卸载了磁盘,删除了 ESXi 上的硬盘。之后,我将其重新添加到虚拟机中。但这次,它显示硬盘位于 sdc 而不是 sdb 下。此外,无法识别卷组。
lsblk -f
sdc
└─sdc1 LVM2_成员 tcsmci-DJhs-19V8-UrKR-SOkI-hE1L-TuCqg3
dmesg | grep sg | grep -i attached
[29.711244] sd 0:0:0:0:已连接的 scsi 通用 sg0 类型 0
[29.711471] sd 0:0:1:0:已连接的 scsi 通用 sg1 类型 0
[29.711731] sr 3:0:0:0:已连接的 scsi 通用 sg2 类型 5
[675.053285] sd 0:0:1:0:已连接的 scsi 通用 sg1 类型 0
当我尝试再次将其挂载到原始目录时,它显示错误。
mount /dev/mapper/storerhel2-store /newStore
mount:/dev/mapper/storerhel2-store:无法读取超级块
但是,当我重新启动它时,硬盘再次成功挂载,因为它写在了 fstab 中。
cat /etc/fstab
/dev/mapper/storerhel2-store /newStore xfs inode64,logbsize=256k,noatime,nobarrier 0 0
问题
如何在不重新启动虚拟机的情况下再次安装硬盘?我尝试识别 scsi 设备以重新扫描磁盘(参见下面的链接),但出现同样的错误。有人遇到过这种情况吗?
请分享你的知识!谢谢!
参考
https://kerneltalks.com/disk-management/how-to-rescan-disk-in-linux-after-extending-vmware-disk/
答案1
在对 Linux LVM VG 的成员 PV 磁盘进行操作之前,应先停用并导出 Linux LVM VG。卸载文件系统是不够的,它们之间还有一层。
为了完整性,可以将数据从一个 PV 迁移到另一个 PV,同时保持 VG 在线。存储迁移的事情。暂时先不谈这个,我假设这是离线存储和分离磁盘的更简单情况。
参考下LVM的使用案例将 VG 移动到另一个系统.其中包括:
umount
vgchange -an
vgexport
然后,一旦磁盘恢复,就需要
vgimport
vgchange -ay
mount
sdb 或 sdc 等驱动器号不保证相同。它们可能会随着(虚拟)存储路径的变化而变化。相反,请引用 /dev/disk/by-id/ 下的唯一标识符,例如 lvm-pv-uuid 或 wwn。
对磁盘进行更改时,主机并不总是能立即意识到这些更改。您引用的 rescan-scsi-bus.sh 脚本涵盖了各种方法,可以让 Linux 再次查看其存储总线而无需重新启动。按原样使用,或阅读其源代码以了解人们完成此任务的一行代码。
一些存储驱动程序可以识别虚拟机管理程序,并摒弃传统的 SCSI 接口。因此可以立即反映磁盘更改(通常调整大小)。vmw_pvscsi 是 VMware 的 Linux 磁盘驱动程序,任何现代服务器发行版都应该有它,但也许在您处理此客户的磁盘时需要确认这一点。