LinuxのLVMの概要と設定内容を表示するコマンドについてまとめました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
- 1.LVM(Logical Volume Manager)の概要、メリット
- 2.物理ボリューム(PV)、ボリュームグループ(VG)、論理ボリューム(LV)
- 3.LVMのエクステントとは?
- 4.物理ボリュームを表示
- 5.ボリュームグループを表示
- 6.論理ボリュームを表示
- 7.dfコマンドと論理ボリュームの関係
・論理ボリュームが作成されると物理ディスクのサイズに制限されない。
・ハードウェアストレージ設定はソフトウェアには表示されないので、アプリケーションを停止したりファイルシステムをアンマウントせずに、サイズ変更や移動が可能になる。
・ディスクとパーティションを1つの論理ボリュームに集約する事が出来る。ファイルシステムを複数のディスクに渡って拡張する事が出来る。
・基になるディスクデバイスを再フォーマットしたり再パーティションせずに、論理ボリュームを拡大・縮小できる。
・システムがアクティブな時でもデータを移動したり再配置したり出来る。
・ディスクのストライプ化、ミラー化ができる。
・一貫性のあるバックアップのためのデバイススナップショットを取ったり、実際のデータに影響を及ぼすことなく変更の効果をテストすることが出来る。
・論理ボリュームの配下の物理ストレージユニットは、パーティションあるいはディスク全体などのブロックデバイス。
・上記デバイスは物理ボリュームとして初期化される。
●ボリュームグループ(VG)と論理ボリューム(LV)
・論理ボリュームを作成するために、物理ボリュームはボリュームグループに統合される。
これによってディスク領域のプールが作成され、そこから論理ボリュームが割り当てられる。
これは、ディスクがパーティションに分割される方法に類似している。
・論理ボリュームはファイルシステムやアプリケーション(データベース)からアクセスされて使用される。
・ボリュームグループ内で、割当て可能なディスク領域は”エクステント”と呼ばれる固定サイズの単位に分割される。
・1エクステントが割当て可能な領域の最小単位。
・物理ボリューム内では、エクステントは物理エクステント(PE)と呼ばれる。
・論理ボリュームは物理エスクテントと同サイズの論理エクステント(LE)を割り当てることができる。
そのため、エクステントは、ボリュームグループ内のすべての論理ボリュームで同じサイズになる。
・ボリュームグループは論理エクステントを物理エクステントにマッピングする。
・物理ボリュームとして使用可能なブロックデバイスをスキャン。
# lvmdiskscan /dev/ram0 [ 16.00 MiB] /dev/root [ 17.54 GiB] /dev/ram1 [ 16.00 MiB] /dev/vda1 [ 500.00 MiB] /dev/VolGroup/lv_swap [ 1.97 GiB] /dev/ram2 [ 16.00 MiB] /dev/vda2 [ 19.51 GiB] LVM physical volume /dev/ram3 [ 16.00 MiB] : /dev/ram15 [ 16.00 MiB] /dev/vdb [ 180.00 GiB] 3 disks 17 partitions 0 LVM physical volume whole disks 1 LVM physical volume (物理ボリュームのみ表示) # lvmdiskscan -l WARNING: only considering LVM devices /dev/vda2 [ 19.51 GiB] LVM physical volume 0 LVM physical volume whole disks 1 LVM physical volume
②pvsコマンド
・物理ボリューム情報を設定可能な形式で提供して、1つの物理ボリュームにつき1行ずつ表示。
# pvs PV VG Fmt Attr PSize PFree /dev/vda2 VolGroup lvm2 a-- 19.51g 0
③pvdisplay
・各物理ボリュームについて複数行の詳細出力
# pvdisplay --- Physical volume --- PV Name /dev/vda2 VG Name VolGroup PV Size 19.51 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 4994 Free PE 0 Allocated PE 4994 PV UUID 55BE・・・・
(各項目の説明)
PV Name
* physical volume device name
VG Name
* volume group name
PV Size
* physical volume size
Allocatable
* physical volume (not) allocatable
PE Size
* physical extent size
Total PE
* total number of physical extents
Free PE
* free number of physical extents
Allocated PE
* allocated number of physical extents
PV UUID
④pvscan
・物理ボリューム用にシステム内のサポートされたすべてのLVMブロックデバイスをスキャン
# pvscan PV /dev/vda2 VG VolGroup lvm2 [19.51 GiB / 0 free] Total: 1 [19.51 GiB] / in use: 1 [19.51 GiB] / in no VG: 0 [0 ]
# vgdisplay --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 19.51 GiB PE Size 4.00 MiB Total PE 4994 Alloc PE / Size 4994 / 19.51 GiB Free PE / Size 0 / 0 VG UUID
(各項目の説明)
MAX LV
maximum number of logical volumes
Cur LV
current number of logical volumes
Open LV
open count of all logical volumes in this volume group
Max PV
maximum number of physical volumes
Cur PV
current number of physical volumes
Act PV
actual number of physical volumes
VG Size
size of volume group
PE Size
physical extent size
Total PE
total number of physical extents for this volume group
Alloc PE / Size
allocated number of physical extents for this volume group
Free PE / Size
free number of physical extents for this volume group
VG UUID
②vgscanとキャッシュファイル
・vgscanコマンドは、システム内のすべてのディスクデバイスをスキャンし、LVM物理ボリュームとボリュームグループを検索し、この時に/etc/lvm/cache/ディレクトリ内に”.cache”という名前でLVM キャッシュファイルが構築されて、現在のLVMデバイスの一覧を管理する。
# vgscan Reading all physical volumes. This may take a while... Found volume group "VolGroup" using metadata type lvm2
・vgscanコマンドは、LVMによってシステムの起動時、vgcreateコマンド実行時、不整合が検出された場合などに自動的に実行される。
・/etc/lvm/lvm.confファイル内でフィルターを定義することで特定デバイスのスキャンを避けるように設定する事もできる。
# lvscan ACTIVE '/dev/VolGroup/lv_root' [17.54 GiB] inherit ACTIVE '/dev/VolGroup/lv_swap' [1.97 GiB] inherit
②lvs
# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv_root VolGroup -wi-ao---- 17.54g lv_swap VolGroup -wi-ao---- 1.97g
③lvdisplay
# lvdisplay --- Logical volume --- LV Path /dev/VolGroup/lv_root LV Name lv_root VG Name VolGroup LV UUID 13vAsX-pKPr-umeE-Xe6R-2ErC-Pr8j-owoiUX LV Write Access read/write LV Creation host, time , LV Status available # open 1 LV Size 17.54 GiB Current LE 4490 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
①dfコマンドの出力内容
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 9.8G 6.6G 60% / tmpfs 939M 0 939M 0% /dev/shm /dev/vda1 485M 118M 342M 26% /boot /dev/vdb 178G 188M 168G 1% /data
・マウントポイントの”/”が”/dev/mapper/VolGroup-lv_root”となっているのでLVMが構成されている事が分かります。
※実ディスク(SCSI、SATA)の場合は、ディスクが/dev/sdxで表示され、VPS環境の仮想ディスクの場合は、/dev/vdxでネーミングされています。
②論理ボリューム、ボリュームグループを確認
# lvdisplay --- Logical volume --- LV Path /dev/VolGroup/lv_root LV Name lv_root VG Name VolGroup
→論理ボリューム名がlv_rootでボリュームグループ名がVolGroupです。
③物理ボリュームを確認
# pvs PV VG Fmt Attr PSize PFree /dev/vda2 VolGroup lvm2 a-- 19.51g 0
→物理ボリュームが/dev/vda2である事が分かります。
④ファイルシステムの確認
mountコマンドでファイルシステムを確認
# mount /dev/mapper/VolGroup-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/vda1 on /boot type ext4 (rw) /dev/vdb on /data type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/boot、/、/dataは、ext4になっています。