CentOS 6 のLVMをオンラインで拡張する
ディスクが足りなくなったときに、OSを停止せずに拡張する方法を実施してみました。
なお、2TB以上のパーティションを操作する場合には、partedコマンドを使用します。ここでは、fdiskコマンドを使用して拡張。
ディスク追加
vmwareを使用しているため、vcenterで対象仮想サーバーの設定を変更し、ディスクサイズ(ここでは、/dev/sdbにあたるドライブ)のサイズを大きくして設定を保存。
なお、ディスク拡張の前に、Clone等でバックアップを取っておくことを推奨です。
OSでディスクを認識
オンラインでのディスクのRescanは以下のコマンドのどちらかで実行できます。青字箇所は環境に応じて変更する必要があります。
論理ユニットを再スキャンする方法(以下のどちらか)
echo 1>/sys/class/block/sdX/device/rescan (sdデバイス名は、fdisk -l等で確認可能) echo 1>/sys/class/scsi_device/X:X:X:X/device/block/device/rescan (X:X:X:Xは、HBA番号、チャンネル番号、ID、LUN番号。)
ストレージのデバイス・パスを追加する方法
echo "- - -" > /sys/class/scsi_host/hostX/scan (XはHBA番号指定。下記出力例のscsi2の場合はhost2)
Scsi ID情報は以下で確認可能です。
cat /proc/scsi/scsi Host: scsi2 Channel: 00 Id: 01 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02
今回は以下を実施。
# echo 1 > /sys/class/scsi_disk/2\:0\:1\:0/device/rescan
パーティション追加
fdiskコマンドで拡張を実施
# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): p Disk /dev/sdb: 644.2 GB, 644245094400 bytes 255 heads, 63 sectors/track, 78325 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x5611e194 Device Boot Start End Blocks Id System /dev/sdb1 1 32635 262140606 8e Linux LVM /dev/sdb2 32636 58743 209712510 8e Linux LVM Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (58744-78325, default 58744): Using default value 58744 Last cylinder, +cylinders or +size{K,M,G} (58744-78325, default 78325): Using default value 78325 Command (m for help): p Disk /dev/sdb: 644.2 GB, 644245094400 bytes 255 heads, 63 sectors/track, 78325 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x5611e194 Device Boot Start End Blocks Id System /dev/sdb1 1 32635 262140606 8e Linux LVM /dev/sdb2 32636 58743 209712510 8e Linux LVM /dev/sdb3 58744 78325 157292415 83 Linux Command (m for help): Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 8e Changed system type of partition 3 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdb: 644.2 GB, 644245094400 bytes 255 heads, 63 sectors/track, 78325 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x5611e194 Device Boot Start End Blocks Id System /dev/sdb1 1 32635 262140606 8e Linux LVM /dev/sdb2 32636 58743 209712510 8e Linux LVM /dev/sdb3 58744 78325 157292415 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table.
パーティションテーブルをオンラインで更新
# partx -v -a /dev/sdb
PVを作成
# pvcreate /dev/sdb3 Writing physical volume data to disk "/dev/sdb3" Physical volume "/dev/sdb3" successfully created
volume groupを拡張
# vgextend vg_data /dev/sdb3 Volume group "vg_data" successfully extended
Logical Volumeを拡張
# lvextend -l +100%FREE /dev/vg_data/lv_data Extending logical volume lv_data to 599.94 GiB Logical volume lv_data successfully resized
FileSystemを拡張
# resize2fs /dev/vg_data/lv_data resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/vg_data/lv_data is mounted on /data; on-line resizing required old desc_blocks = 29, new_desc_blocks = 38 Performing an on-line resize of /dev/vg_data/lv_data to 157270016 (4k) blocks. The filesystem on /dev/vg_data/lv_data is now 157270016 blocks long.
CentOS7以降は、resize2fsを xfs_growfs に変更。
dfコマンドでディスクが拡張されていることを確認して完了!