LVMとはUNIX系OSなどで利用できるディスク管理機能です。LVMを利用すると物理ディスクとは別に仮想ディスクを作成することができ、その仮想ディスクの上にext4,ext3などのファイルシステムを構築できます。
記憶領域の管理を柔軟に行うことができ、たとえば、各論理ボリューム(LVM を利用しない場合のパーティションに相当)のサイズを後から変更したり、ハードディスク(LVM ではPV呼ぶ)の容量を超えるサイズの論理ボリュームを作ったり、後から新たな物理ボリュームを追加してボリュームグループ全体のサイズを増やしたりといったことが可能です。またLVMを利用すると複数の物理的なディスクを束ね、一本の大きなディスクとして使うことも可能でき(物理的な制約が軽減されます。)、ディスクを追加した際など、簡単にパーティションサイズの拡張ができます。
用語 | 説明 |
PV(Physical Volume)
|
物理的なブロックデバイス。仮想ディスクを作成するためにはまず、この物理ディスクはLVMで使う物理ディスクだよ~と宣言する必要があります。
|
VG(Volume Group)
|
PVから切り出したブロックデバイス。仮想的なハードディスクのようなもの。
|
LV(Logical Volume)
|
VGから切り出した仮想的なパーティション領域。従来のパーティションと同じように、この論理ボリューム上にファイルシステムを作って利用可能 |
PE(Physical Extent)
|
LVMによる領域管理の最小単位。 デフォルトでは、4MBとなる。PEが小さいほど、エクステント数は多くなりやすくなる。ただしエクステント数が多くなってもディスクパフォーマンスを悪化させる原因にはならない模様。また、エクステントサイズが多きすぎると、無駄に容量を消費しがちになります。結局のところデフォルト(4MB)を保持すべきとベンダーのページには記載が載っていました。なお、ひとつのVGには異なるサイズのエクステントは混在できないため注意が必要。 |
LVMはバージョン1と2があり、現在の主流はLVM2です。(LVM2には LVM1 との下位互換性があり。)VGはvgconvert コマンドを使用して LVM1 形式から LVM2 形式に変換することができます。また、LVMはPV/LVあたり65535ですが、LVM2では、PV/LV あたりの最大エクステント数に制限はありません。
LVMを操作するためのコマンドは以下のとおりです。LVMを使用して仮想ディスクを作成したり拡張する場合には、
1.PVの作成
2.PVをVGとしてグルーピング
3.LVにVGから容量を切り出す
イメージで作業を進めますが、フェーズによって以下のコマンドを使い分けます。
今回はESXi上でLVMを使用した仮想マシンが稼働している環境で、ディスク拡張を行う手順を紹介していきます。想像してたよりもめんどくさい…。
はじめに対象となる仮想マシンを停止し、vSphere Clientでディスクの割り当て量を増やします。今回は16GBから20GBまで容量を増やす事にしました。
※スナップショットがあるとディスクサイズの変更ができないようです。ある場合は消しましょう。
参考:仮想マシンのディスクがオンラインでもオフラインでも容量を拡張出来ない。VMwareでディスクサイズがグレーアウト
起動し、OSが認識している(まだ使える状態になってないけど)ディスク容量を確認します。
[root@kvm-tagutagu ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_tagutagutest-lv_root
ext4 14G 829M 13G 7% / ←メイン領域 LVの上でext4ファイルシステムが作成されている。
tmpfs tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 ext4 477M 30M 422M 7% /boot
(ESXi側でディスクの割り当てを増やす前)
[root@kvm-tagutagu ~]# fdisk -l Disk /dev/sda: 17.2 GB, 17179869184 bytes 255 heads, 63 sectors/track, 2088 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: 0x00083b85 Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 2089 16264192 8e Linux LVM Disk /dev/mapper/vg_tagutagutest-lv_root: 14.9 GB, 14935916544 bytes 255 heads, 63 sectors/track, 1815 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: 0x00000000 Disk /dev/mapper/vg_tagutagutest-lv_swap: 1715 MB, 1715470336 bytes 255 heads, 63 sectors/track, 208 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: 0x00000000
(ESXi側でディスクの割り当てを増やした後)
/dev/sdaの容量が増えました。ディスクを伸長させるとOSから見ると1本のディスクの使用していない領域が増えてます。この「使用していない領域」を区切って新たにパーティションを追加します。
[root@kvm-tagutagu ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes ← 物理ディスクが増えています。
255 heads, 63 sectors/track, 2610 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: 0x00083b85
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 2089 16264192 8e Linux LVM
Disk /dev/mapper/vg_tagutagutest-lv_root: 14.9 GB, 14935916544 bytes
255 heads, 63 sectors/track, 1815 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: 0x00000000
Disk /dev/mapper/vg_tagutagutest-lv_swap: 1715 MB, 1715470336 bytes
255 heads, 63 sectors/track, 208 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: 0x00000000
次は増やしたディスクをOSから利用できるようにするための作業です。増やした領域を新たにパーティションとして使えるようにします。windowsとかでもありますねハイ。
現在はsdaというディスクが一本見えていて、その中でsda1とsda2というパーティションがあるのがわかります。ESXi側から増やしたパーティション化されていない領域がsdaにありますのでこれをパーティショニングします。
[root@kvm-tagutagu ~]# ll /dev/sda sda sda1 sda2
パーティションを追加する場合は、fdiskコマンドを利用します。"n"を押してパーティション作成にはいり、さらにパーティション番号である"3"、そのあとどのくらいの容量(シリンダ指定)をパーティションに割り当てるかの質問には何も入力せずエンターを押します。これで勝手に使えるだけ割り当ててくれます。最後に"w"で変更適用を行います。なにやらアラートで、再起動後に新たなパーティションは認識されるよ~とわめいていますが、ウルセェ!進みます。
[root@kvm-tagutagu ~]# fdisk /dev/sda 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): n Command action e extended p primary partition (1-4) 3 Invalid partition number for type `3' Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (2089-2610, default 2089): Using default value 2089 Last cylinder, +cylinders or +size{K,M,G} (2089-2610, default 2610): Using default value 2610 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)
fdisk -lでディスク状態を参照すると先ほどまで見えなかったsda3が認識されています。ヤッタ
[root@kvm-tagutagu ~]# fdisk -l 抜粋~ Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 2089 16264192 8e Linux LVM /dev/sda3 2089 2610 4187609 83 Linux
しかし、まだパーティションを新たにぶった切っただけです。次に作成したパーティションのファイルシステムを指定し、フォーマットします。フォーマットにはcfdiskというコマンドユーティリティを使用します。(fdiskでも似たようなことはできます。)今回は/dev/sda3を選択し、cfdiskで 8E すなわちLINUX LVMに指定の上、フォーマットを行いました。
※パーティションタイプとは、システム ID、OS インジケータとも呼ばれ、そのパーティションを使用している OS の種類やファイルシステム等を数値で表します。
[root@kvm-tagutagu ~]# cfdisk
cfdisk (util-linux-ng 2.17.2) Disk Drive: /dev/sda Size: 21474836480 bytes, 21.4 GB Heads: 255 Sectors per Track: 63 Cylinders: 2610 Name Flags Part Type FS Type [Label] Size (MB) ------------------------------------------------------------------------------------------------------------------------------------------------------- Pri/Log Free Space 1.05 * sda1 Boot Primary Linux ext3 524.29 * sda2 Primary Linux LVM 16654.54 * sda3 Primary Linux 4288.12 * 01 FAT12 14 Hidden FAT16 <32M 51 OnTrack DM6 Aux1 84 OS/2 hidden C: drive B7 BSDI fs EE GPT 02 XENIX root 16 Hidden FAT16 52 CP/M 85 Linux extended B8 BSDI swap EF EFI (FAT-12/16/32) 03 XENIX usr 17 Hidden HPFS/NTFS 53 OnTrack DM6 Aux3 86 NTFS volume set BB Boot Wizard hidden F0 Linux/PA-RISC boot 04 FAT16 <32M 18 AST SmartSleep 54 OnTrackDM6 87 NTFS volume set BE Solaris boot F1 SpeedStor 05 Extended 1B Hidden W95 FAT32 55 EZ-Drive 88 Linux plaintext BF Solaris F4 SpeedStor 06 FAT16 1C Hidden W95 FAT32 (LB 56 Golden Bow 8E Linux LVM C1 DRDOS/sec (FAT-12) F2 DOS secondary 07 HPFS/NTFS 1E Hidden W95 FAT16 (LB 5C Priam Edisk 93 Amoeba C4 DRDOS/sec (FAT-16 < FB VMware VMFS 08 AIX 24 NEC DOS 61 SpeedStor 94 Amoeba BBT C6 DRDOS/sec (FAT-16) FC VMware VMKCORE 09 AIX bootable 39 Plan 9 63 GNU HURD or SysV 9F BSD/OS C7 Syrinx FD Linux raid autodetec 0A OS/2 Boot Manager 3C PartitionMagic recov 64 Novell Netware 286 A0 IBM Thinkpad hiberna DA Non-FS data FE LANstep 0B W95 FAT32 40 Venix 80286 65 Novell Netware 386 A5 FreeBSD DB CP/M / CTOS / ... FF BBT 0C W95 FAT32 (LBA) 41 PPC PReP Boot 70 DiskSecure Multi-Boo A6 OpenBSD DE Dell Utility 0E W95 FAT16 (LBA) 42 SFS 75 PC/IX A7 NeXTSTEP DF BootIt 0F W95 Ext'd (LBA) 4D QNX4.x 80 Old Minix A8 Darwin UFS E1 DOS access 10 OPUS 4E QNX4.x 2nd part 81 Minix / old Linux A9 NetBSD E3 DOS R/O 11 Hidden FAT12 4F QNX4.x 3rd part 82 Linux swap / Solaris AB Darwin boot E4 SpeedStor 12 Compaq diagnostics 50 OnTrack DM 83 Linux AF HFS / HFS+ EB BeOS fs Enter filesystem type: 8E cfdisk (util-linux-ng 2.17.2) Disk Drive: /dev/sda Size: 21474836480 bytes, 21.4 GB Heads: 255 Sectors per Track: 63 Cylinders: 2610 Name Flags Part Type FS Type [Label] Size (MB) ------------------------------------------------------------------------------------------------------------------------------------------------------- Pri/Log Free Space 1.05 * sda1 Boot Primary Linux ext3 524.29 * sda2 Primary Linux LVM 16654.54 * sda3 Primary Linux LVM 4288.12 * Pri/Log Free Space 6.86 *
無事に変更されました。
[root@kvm-tagutagu ~]# fdisk -l
抜粋~
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 2089 16264192 8e Linux LVM
/dev/sda3 2089 2610 4187609 8e Linux LVM
[root@kvm-tagutagu ~]# reboot
【partedツールで再起動をせずパーティション変更を反映させる方法】
[root@kvm-tagutagu ~]# ll /dev/sda* brw-rw---- 1 root disk 8, 0 May 13 08:14 /dev/sda brw-rw---- 1 root disk 8, 1 May 13 08:14 /dev/sda1 brw-rw---- 1 root disk 8, 2 May 13 08:14 /dev/sda2
【partedツールで再起動をせずパーティション変更を反映させる方法】
パーティションテーブルの一覧を表示します。
[root@kvm-tagutagu ~]# partx -l /dev/sda # 1: 2048- 1026047 ( 1024000 sectors, 524 MB) # 2: 1026048- 33554431 ( 32528384 sectors, 16654 MB) # 3: 33554432- 41929649 ( 8375218 sectors, 4288 MB) # 4: 0- -1 ( 0 sectors, 0 MB)
【partedツールで再起動をせずパーティション変更を反映させる方法】
[root@kvm-tagutagu ~]# partx -v -a /dev/sda device /dev/sda: start 0 size 41943040 gpt: 0 slices dos: 4 slices # 1: 2048- 1026047 ( 1024000 sectors, 524 MB) # 2: 1026048- 33554431 ( 32528384 sectors, 16654 MB) # 3: 33554432- 41929649 ( 8375218 sectors, 4288 MB) # 4: 0- -1 ( 0 sectors, 0 MB) BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 added partition 3
【partedツールで再起動をせずパーティション変更を反映させる方法】
[root@kvm-tagutagu ~]# ll /dev/sda*
brw-rw---- 1 root disk 8, 0 May 13 08:20 /dev/sda
brw-rw---- 1 root disk 8, 1 May 13 08:19 /dev/sda1
brw-rw---- 1 root disk 8, 2 May 13 08:19 /dev/sda2
brw-rw---- 1 root disk 8, 3 May 13 08:23 /dev/sda3
いよいよLVMのディスク操作にはいります。まずLVMに対してPVを新たに作認識させます。
[root@kvm-tagutagu ~]# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created
[root@kvm-tagutagu ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name vg_tagutagutest ←所属しているVGを表示する。
PV Size 15.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 3970
Free PE 0
Allocated PE 3970
PV UUID 9k08ic-uENM-oXu7-2Gw8-THp5-DW2q-pVoAUr
"/dev/sda3" is a new physical volume of "3.99 GiB"
--- NEW Physical volume ---
PV Name /dev/sda3
VG Name ←まだVGに追加していないので何も表示されない。
PV Size 3.99 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID a2B0Ek-glq2-HBDn-FA8j-0uru-HOVO-KVP0ak
次にVGに作成したPVを追加します。vgextendコマンドのあとにはすでに存在するvgを指定します。上記コマンドのVG Nameを参照してください。そのあと、pvdisplayで新たに追加したsda3がvg_tagutagutestに追加されたことを確認しました。
[root@kvm-tagutagu ~]# vgextend vg_tagutagutest /dev/sda3
Volume group "vg_tagutagutest" successfully extended
[root@kvm-tagutagu ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name vg_tagutagutest
PV Size 15.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 3970
Free PE 0
Allocated PE 3970
PV UUID 9k08ic-uENM-oXu7-2Gw8-THp5-DW2q-pVoAUr
--- Physical volume ---
PV Name /dev/sda3
VG Name vg_tagutagutest ←追加された。
PV Size 3.99 GiB / not usable 1.46 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1022
Free PE 1022
Allocated PE 0
PV UUID a2B0Ek-glq2-HBDn-FA8j-0uru-HOVO-KVP0ak
次にVGをLVに追加します。まずは現在の論理ボリューム(LV)を確認します。当然増えてはいません。そしてこのLVにはVG vg_tagutagutestが使用されていることがわかります。
[root@kvm-tagutagu ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg_tagutagutest/lv_root
LV Name lv_root
VG Name vg_tagutagutest
LV UUID uLOUPy-KusF-cThD-OXeW-e9Gu-foTb-f4mox2
LV Write Access read/write
LV Creation host, time tagutagu-test, 2016-05-07 09:35:33 +0900
LV Status available
# open 1
LV Size 13.91 GiB
Current LE 3561
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
次にLVに対してVGの使用していない領域を全て割り当てます。"lvextend -l +100%FREE"で指定した論理グループで利用しているボリュームグループの残り容量すべてを、同一の論理グループに割り当てることができます。
[root@kvm-tagutagu ~]# lvextend -l +100%FREE /dev/vg_tagutagutest/lv_root Size of logical volume vg_tagutagutest/lv_root changed from 13.91 GiB (3561 extents) to 17.90 GiB (4583 extents). Logical volume lv_root successfully resized
これでLVMの仮想ディスクの容量が無事に増えました。lvdisplayとfdiskで期待どおりの容量となっていることを確認します。
[root@kvm-tagutagu ~]# lvdisplay /dev/vg_tagutagutest/lv_root
--- Logical volume ---
LV Path /dev/vg_tagutagutest/lv_root
LV Name lv_root
VG Name vg_tagutagutest
LV UUID uLOUPy-KusF-cThD-OXeW-e9Gu-foTb-f4mox2
LV Write Access read/write
LV Creation host, time tagutagu-test, 2016-05-07 09:35:33 +0900
LV Status available
# open 1
LV Size 17.90 GiB
Current LE 4583
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
[root@kvm-tagutagu ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes ←増えた
255 heads, 63 sectors/track, 2610 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: 0x00083b85
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 2089 16264192 8e Linux LVM
/dev/sda3 2089 2610 4187609 8e Linux LVM
Disk /dev/mapper/vg_tagutagutest-lv_root: 19.2 GB, 19222495232 bytes
255 heads, 63 sectors/track, 2337 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: 0x00000000
Disk /dev/mapper/vg_tagutagutest-lv_swap: 1715 MB, 1715470336 bytes
255 heads, 63 sectors/track, 208 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: 0x00000000
[root@kvm-tagutagu ~]# resize2fs /dev/vg_tagutagutest/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_tagutagutest/lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg_tagutagutest/lv_root to 4692992 (4k) blocks.
The filesystem on /dev/vg_tagutagutest/lv_root is now 4692992 blocks long.
[root@kvm-tagutagu ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_tagutagutest-lv_root 18G 838M 16G 5% / ←増えた
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 477M 30M 422M 7% /boot
以上です。
Copyright © 2021 たぐたぐ.com. All rights reserved.