Linux LVMをサーバーを停止しないで拡張する方法

Last modified on:

OpenClipart-Vectors / Pixabay

 

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コマンドでディスクが拡張されていることを確認して完了!

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です