LVMによるボリューム拡張
概要
VMWare上のLinuxでディスク容量が足りなくなったので、ディスクを追加して、LVM2でボリュームサイズを拡張する。
前提
ディスクの状況
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/vg_wing-lv_root
24593536 22759168 585088 98% /
/dev/sda1 198337 36603 151494 20% /boot
tmpfs 507528 1520 506008 1% /dev/shm
/のサイズを拡張する。/のファイルシステムはext4。
/はVolumeGroup:vg_wing内のLogicalVolume:lv_root内に割り当てられている。
手順の概要
(1) VMWareの仮想マシンの設定からディスクを追加(今回は20GB)(2) 追加したディスクにfdiskでLVM用の領域を作成
(3) (2)で作成したLVM領域にPhysicalVolumeを作成
(4) PhysicalVolumeをVolumeGroup(vg_wing)に追加
(5) /のLogicalVolume(lv_root)のサイズを拡張
(6) /のファイルシステムサイズをLogicalVolumeのサイズまで拡張
作業内容
まずは、VMWareの仮想マシンの設定からディスクを追加(今回は20GB分)。
Linuxを起動後、fdiskでLVM用の領域を作成する。
# fdisk /dev/sdb <== 今回追加したディスクは/dev/sdb デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも 含んでいません Building a new DOS disklabel with disk identifier 0x525a5e11. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. このディスクのシリンダ数は 2610 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) 警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって 正常になります コマンド (m でヘルプ): p ディスク /dev/sdb: 21.4 GB, 21474836480 バイト ヘッド 255, セクタ 63, シリンダ 2610 Units = シリンダ数 of 16065 * 512 = 8225280 バイト Disk identifier: 0x525a5e11 デバイス ブート 始点 終点 ブロック Id システム <== まだ領域はなにもない コマンド (m でヘルプ): n <== 領域作成 コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 1 最初 シリンダ (1-2610, 初期値 1): <== 20GB分すべて割り当て 初期値 1 を使います Last シリンダ, +シリンダ数 or +size{K,M,G} (1-2610, 初期値 2610): 初期値 2610 を使います コマンド (m でヘルプ): p ディスク /dev/sdb: 21.4 GB, 21474836480 バイト ヘッド 255, セクタ 63, シリンダ 2610 Units = シリンダ数 of 16065 * 512 = 8225280 バイト Disk identifier: 0x525a5e11 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 2610 20964793+ 83 Linux <== 領域が作成された コマンド (m でヘルプ): t <== 領域の種別をLVMに変更する 選択した領域 1 16進数コード (L コマンドでコードリスト表示): 8e 領域のシステムタイプを 1 から 8e (Linux LVM) に変更しました コマンド (m でヘルプ): p ディスク /dev/sdb: 21.4 GB, 21474836480 バイト ヘッド 255, セクタ 63, シリンダ 2610 Units = シリンダ数 of 16065 * 512 = 8225280 バイト Disk identifier: 0x525a5e11 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 2610 20964793+ 8e Linux LVM <== Linux LVMに変更された コマンド (m でヘルプ): w <==ディスクに書き込んで終了 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。
次に作成した領域(/dev/sdb1)にPhysicalVolumeを作成する。
# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created # pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name vg_wing PV Size 24.80 GB / not usable 3.72 MB Allocatable yes (but full) PE Size (KByte) 4096 Total PE 6348 Free PE 0 Allocated PE 6348 PV UUID Lnejqg-BXFK-mEjP-JWwT-a7wD-F63Q-WANN3P 以下が新しく作成したPhysicalVolume "/dev/sdb1" is a new physical volume of "19.99 GB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name <== VolumeGroupはまだ割り当てていないので空 PV Size 19.99 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID NcfcBj-uewt-C40I-EdPv-rcIh-malQ-Eu7acF
VolumeGroup(vg_wing)に上記PhysicaVolumeを追加する。
# vgextend vg_wing /dev/sdb1 Volume group "vg_wing" successfully extended # pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name vg_wing PV Size 24.80 GB / not usable 3.72 MB Allocatable yes (but full) PE Size (KByte) 4096 Total PE 6348 Free PE 0 Allocated PE 6348 PV UUID Lnejqg-BXFK-mEjP-JWwT-a7wD-F63Q-WANN3P --- Physical volume --- PV Name /dev/sdb1 VG Name vg_wing<== VolumeGroupに割り当てられた PV Size 19.99 GB / not usable 1.43 MB Allocatable yes PE Size (KByte) 4096 Total PE 5118 Free PE 5118<==まだPEは割り当てられていない Allocated PE 0 PV UUID NcfcBj-uewt-C40I-EdPv-rcIh-malQ-Eu7acF # vgdisplay <== VolumeGroupの状況を確認 --- Volume group --- VG Name vg_wing System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 44.79 GB <== サイズが増えた PE Size 4.00 MB Total PE 11466 Alloc PE / Size 6348 / 24.80 GB Free PE / Size 5118 / 19.99 GB <== 追加した分が空きになっている VG UUID f9WKww-jQjY-Hr63-LH2Z-nspp-nKew-anCzXW
次にLogicalVolume(lv_root)のサイズをVolumeGroup(lv_wing)の空きサイズ(19.99GB)を目一杯つかって拡張。
現在のLogicalVolumeの状況 # lvdisplay --- Logical volume --- LV Name /dev/vg_wing/lv_root VG Name vg_wing LV UUID n9GBw7-BHT6-LF1e-BU1K-TlfQ-lpc7-5wljQR LV Write Access read/write LV Status available # open 1 LV Size 23.83 GB Current LE 6100 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 <略> # lvextend -L +19.99G /dev/vg_wing/lv_root <== サイズを拡張 Rounding up size to full physical extent 19.99 GB Extending logical volume lv_root to 43.82 GB Logical volume lv_root successfully resized
拡張後の状況を確認すると、、、
# lvdisplay --- Logical volume --- LV Name /dev/vg_wing/lv_root VG Name vg_wing LV UUID n9GBw7-BHT6-LF1e-BU1K-TlfQ-lpc7-5wljQR LV Write Access read/write LV Status available # open 1 LV Size 43.82 GB <== サイズが拡張された Current LE 11218 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 <略> # vgdisplay --- Volume group --- VG Name vg_wing System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 44.79 GB PE Size 4.00 MB Total PE 11466 Alloc PE / Size 11466 / 44.79 GB Free PE / Size 0 / 0 <== LogicalVolumeに割り当てたので空きがなくなった VG UUID f9WKww-jQjY-Hr63-LH2Z-nspp-nKew-anCzXW
これで、/を格納しているボリュームのサイズを拡張できたので、最後に/のファイルシステムサイズを拡張する。ext4ではresize2fsでファイルシステムをマウントしたまま、サイズ変更できる。
# resize2fs /dev/vg_wing/lv_root resize2fs 1.41.9 (22-Aug-2009) Filesystem at /dev/vg_wing/lv_root is mounted on /; on-line resizing required old desc_blocks = 2, new_desc_blocks = 3 Performing an on-line resize of /dev/vg_wing/lv_root to 11487232 (4k) blocks. The filesystem on /dev/vg_wing/lv_root is now 11487232 blocks long.
サイズ変更後、空き容量を確認すると、、、
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/vg_wing-lv_root
45228468 22767292 20166444 54% /
/dev/sda1 198337 36603 151494 20% /boot
tmpfs 507528 1704 505824 1% /dev/shm
空いた。