在 Linux 上,是否可以在不重新扫描磁盘的情况下知道磁盘大小是否已更改?

在 Linux 上,是否可以在不重新扫描磁盘的情况下知道磁盘大小是否已更改?

在 VMware 中更改磁盘大小(例如增加 10 GB)后,下一步是在 Linux 中重新扫描它,以便内核识别此大小更改。

为此,我们使用以下命令:

echo 1>/sys/class/block/sda/device/rescan

在我们的脚本中,我们每隔几分钟重新扫描一次cron作业,以验证是否需要调整相关磁盘的大小。

我想知道是否有某种方法可以识别磁盘大小是否已更改,而无需重新扫描,以及如果磁盘大小确实已更改,则只能重新扫描。

到目前为止,我们还没有找到一种方法来验证磁盘大小是否已更改而无需重新扫描,但我们希望能够在这里得到答案。

我提出这个问题的原因是,我们对每隔几分钟重新扫描一次感到不舒服,尽管这项活动没有风险。

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

答案1

识别块设备大小已调整的方法是重新扫描它。就是这样。无需寻找另一种重新扫描块设备的方法来决定是否重新扫描它。

在虚拟化环境中,每两分钟运行一次应该是安全的;每当运行重新扫描时,性能都会受到非常轻微的影响,因为重新扫描会获取中断锁,但重新扫描虚拟块设备的速度非常快。如果您对每两分钟重新扫描一次感到不舒服,您可以降低频率 - 您真的需要在两分钟内对磁盘大小调整做出反应吗?

(请注意,某些半虚拟化存储驱动程序会自动更新来宾看到的大小,因此不需要重新扫描;这显然是不是VMware 的情况就是这样。)

您可能想看看open-vm-tools据推测,这允许从主机在来宾内部触发工作负载:这样,您可以在外部调整磁盘大小,并在来宾内部触发作业来重新扫描和调整卷大小。我从来没有这样做过,所以我不知道这是否真的可能。

相关内容