如何让 Centos VM 在不重新启动的情况下重新读取其增加的磁盘大小

And*_*dyM 22 linux

我有一个 CentOS 5 虚拟机,我刚刚将虚拟机磁盘从 10G 增加到 20G,但我无法在不重新启动的情况下让 fdisk 查看新的磁盘大小。

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

有任何想法吗?

Jan*_*nen 15

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

在 VMware 中,SCSI 控制器可能会出现在一些不寻常的地方。首先找到它:

find /sys -iname 'scan'
Run Code Online (Sandbox Code Playgroud)

对于回来的我

/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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

应该有帮助。:)

  • `ls /sys/class/scsi_host` 可能更快。 (7认同)
  • 9 年后......只想提一下这让我的 VM 出现“ext4-fs 错误”通知,不得不停止并重新启动 VM。一切都解决了,但仍然要在这里发表评论以警告人们这可能会发生。Aaaand 重新启动后,当然会增加磁盘大小。 (2认同)

小智 15

我不得不在 SLES 11 服务器上处理类似的问题。LVM 使用原始磁盘构建,在 VMWare ESXi 上运行

# pvcreate /dev/sdd; vgextend ....
Run Code Online (Sandbox Code Playgroud)

一段时间后,我需要增加 LVM 大小,但我没有像以前那样添加补充磁盘然后 pvcreate + vgextend,而是选择增加现有磁盘的大小(在这种情况下为 /dev/sdd )。在VMWare中做了增加之后,我执行了一个

# rescan-scsi-bus.sh
Run Code Online (Sandbox Code Playgroud)

但是 pvdisplay 仍然显示“旧”磁盘大小。有必要做一个

# echo 1 > /sys/block/sdd/device/rescan
Run Code Online (Sandbox Code Playgroud)

供内核学习 /dev/sdd 的新磁盘大小

  • `echo 1 > /sys/block/sda/device/rescan` 在 CentOS 上为我工作 (8认同)

小智 13

第一次做之后 echo 1 > /sys/block/sda/device/rescan

pvresize /dev/sda 对我有用


saj*_*adG 5

要检测对现有磁盘的更改:

echo 1 > /sys/class/block/sdX/device/rescan
Run Code Online (Sandbox Code Playgroud)

检测新磁盘:

echo 1 > /sys/class/scsi_device/X:X:X:X/device/block/device/rescan
Run Code Online (Sandbox Code Playgroud)

要在第一种情况下找到 X,您可以使用fdisk -l.

https://kerneltalks.com/disk-management/how-to-rescan-disk-in-linux-after-extending-vmware-disk/