Wird die Größe einer per iSCSI oder Fibre Channel eingebundenen LUN geändert, oder in einer virtualisierten Umgebung die Größe der virtuellen Festplatte (VMDK, VDI, VHD, qcow2, etc.) angepasst, kann man den Linux-Kernel auffordern die entsprechenden Blockgeräte auf Änderungen hin zu prüfen, ohne dafür das Betriebssystem neustarten zu müssen.
Die im folgenden genannten bzw. verlinkten Kommandos wurden unter RHEL 7 mit VMDK-Dateien und iSCSI-Disks getestet. Sie sollten jedoch für Linux im Allgemeinen gelten.
Änderungen an bestehenden Blockgeräten erkennen
Um Änderungen an Blockgeräten zu erkennen, welche dem Kernel bereits bekannt sind, wird folgender Befehl mit root-Rechten ausgeführt:
# echo 1 > /sys/class/block/sdX/device/rescan
Dabei ist sdX
durch die Bezeichnung des konkreten Blockgeräts wie z.B. sda
oder sdb
etc. zu ersetzen. Statt dem genannten Bezeichner kann auch die SCSI-Nummer des entsprechenden Gerätes verwendet werden. Der Befehl lautet dann wie folgt (wobei X:X:X:X durch die jeweilige SCSI-Nummer zu ersetzen ist):
# echo 1 > /sys/class/scsi_device/X:X:X:X/device/block/device/rescan
Update 2019-12-15: Ist das Paket parted
installiert, kann man den Kernel auch mit dem Kommando partprobe
über die Änderungen informieren:
# partprobe /dev/sdX
Danke an Dirk für diesen Tipp.
Neue Blockgeräte erkennen
Wie neu hinzugefügte Blockgeräte erkannt werden können, habe ich bereits im Artikel Linux: Hotplugged SATA/SAS/SCSI-Festplatten ohne Neustart erkennen beschrieben.