如何让 Centos VM 重新读取其增加的磁盘大小而无需重新启动

如何让 Centos VM 重新读取其增加的磁盘大小而无需重新启动

我有一台 CentOS 5 VM,刚刚将 VM 磁盘从 10G 增加到 20G,但如果不重新启动,我就无法让 fdisk 查看新的磁盘大小。

我尝试过echo 1 > /sys/block/sda/device/rescan,它似乎表明它可以看到新的大小,但是当我去 fdisk 创建一个新分区时,它仍然将磁盘视为 10G。

有任何想法吗?

答案1

您需要向 SCSI 总线发出重新扫描命令。

在 VMware 中,SCSI 控制器可能位于某些不寻常的位置。首先找到它:

find /sys -iname 'scan'

对我来说那又回来了

/sys/devices/pci0000:00/0000:00:07.1/host0/scsi_host/host0/scan
/sys/devices/pci0000:00/0000:00:07.1/host1/scsi_host/host1/scan
/sys/devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2/scan

然后只需发出重新扫描命令

echo "- - -" >/sys/devices/pci0000:00/0000:00:07.1/host0/scsi_host/host0/scan
echo "- - -" >/sys/devices/pci0000:00/0000:00:07.1/host0/scsi_host/host1/scan
echo "- - -" >/sys/devices/pci0000:00/0000:00:10.0/host0/scsi_host/host2/scan

应该帮助。 :)

答案2

我在 SLES 11 服务器上也遇到过类似的问题。LVM 是用原始磁盘构建的,在 VMWare ESXi 上运行

# pvcreate /dev/sdd; vgextend ....

过了一会儿,我需要增加 LVM 大小,但我没有像以前一样添加补充磁盘,然后 pvcreate + vgextend,而是选择增加现有磁盘的大小(在本例中为 /dev/sdd)。在 VMWare 中完成增加后,我执行了

# rescan-scsi-bus.sh

但 pvdisplay 仍然显示“旧”磁盘大小。有必要执行

# echo 1 > /sys/block/sdd/device/rescan

让内核了解 /dev/sdd 的新磁盘大小

答案3

先做后echo 1 > /sys/block/sda/device/rescan

pvresize /dev/sda对我有用

答案4

如果分区表直接使用(例如,您已使用基本分区挂载文件系统),则内核将继续使用旧分区表,直到不再出现这种情况。有人曾经告诉我,如果您使用 LVM,则可以解决这个问题……

相关内容