手当たり次第に書くんだ

飽きっぽいのは本能

Linux コマンドリファレンス LVM

概要

CentOSはインストーラで特に指定をしなければパーティションにLVMが使用されます。LVM(Logical volume manager)は、基本的な概念としてPV/VG/LVがあり、LVMを使用する場合は必ず1つ以上のPV/VG/LVが存在します。

PV

PVとは

PV(Physical volume)は、fdiskでパーティションタイプを”Linux LVM”に指定することでできる物理ディスクのパーティションです。PVはVGで束ねることができます。

コマンド

pvdisplay

pvdisplayでPVの状態を確認できます。

[root@centos ~]# pvdisplay

  --- Physical volume ---
  PV Name               /dev/nvme0n1p3
  VG Name               vg0
  PV Size               <78.50 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              20095
  Free PE               0
  Allocated PE          20095
  PV UUID               WiCkSf-PONS-hm0L-zADd-oxmh-0g6K-J40ZSh

pvs

pvsコマンドは簡易的な出力です。

[root@centos ~]# pvs

  PV             VG  Fmt  Attr PSize   PFree
  /dev/nvme0n1p3 vg0 lvm2 a--  <78.50g    0

VG

VGとは

VG(Volume group)は、単一、または複数のPVを束ね、単一の物理ディスクのように振舞います。このような性質から、束ねるPVの物理ディスクは同じ性能が良いです(使うことはできますが気持ち悪いですね)。また、RAIDとは異なり、可用性や処理能力を向上させるものではありません。

コマンド

vgdisplay

vgdisplayでVGの状態を確認できます。

[root@centos ~]# vgdisplay

  --- Volume group ---
  VG Name               vg0
  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               <78.50 GiB
  PE Size               4.00 MiB
  Total PE              20095
  Alloc PE / Size       20095 / <78.50 GiB
  Free  PE / Size       0 / 0
  VG UUID               PUup1p-adtX-YucK-YWoh-XfAV-hPey-TJKST1

vgs

vgsコマンドは簡易的な出力です。

[root@centos ~]# vgs

  VG  #PV #LV #SN Attr   VSize   VFree
  vg0   1   2   0 wz--n- <78.50g    0

LV

LVとは

LV(Logical volume)は、VG内に作られる論理的なボリュームです。VGの容量の範囲内で自由にパーティションをレイアウトでき、LinuxはLVをマウントして読み書きをします。/bootなどはLVを使用できません。

コマンド

lvdisplay

lvdisplayでLVの状態を確認できます。

[root@centos ~]# lvdisplay

  --- Logical volume ---
  LV Path                /dev/vg0/root
  LV Name                root
  VG Name                vg0
  LV UUID                C28mEW-6JYR-Ie5b-yRBl-Mf2t-XpuW-fY1BQM
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2021-10-23 12:34:21 +0900
  LV Status              available
  # open                 1
  LV Size                <74.50 GiB
  Current LE             19071
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg0/swap
  LV Name                swap
  VG Name                vg0
  LV UUID                qoeTA8-CwZi-vwLF-isOK-Iwyp-uMR5-nqfRc5
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2021-10-23 12:34:22 +0900
  LV Status              available
  # open                 2
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

lvcreate

lvcreateでVGの空き容量にLVを作成できます。本稿ではvg0(VG)の空き容量全てをsystem1(LV)に割り当てます。

[root@centos ~]# lvcreate vg0 -n system1 -l 100%FREE

  Logical volume "system1" created.

[root@centos ~]# lvdisplay /dev/vg0/system1

  --- Logical volume ---
  LV Path                /dev/vg0/system1
  LV Name                system1
  VG Name                vg0
  LV UUID                PfDvlQ-6Ogs-lUTE-GsfP-K9vB-nnon-JDtUKu
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2021-10-29 18:59:47 +0900
  LV Status              available
  # open                 0
  LV Size                <93.74 GiB
  Current LE             23997
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:4

サイズを指定するオプションでは-Lと-lがありますが、用途が異なるので注意が必要です。

-L(--size)

作成する論理ボリュームのサイズをGやT等の単位で指定します。

-l(--extents)

作成する論理ボリュームのサイズを論理エクステントの個数、または割合(%VG、%PVS、%FREE、%ORIGIN)で指定します。本稿の例では、"-l 100%FREE"で指定したVGの空き容量全てを割り当てています。

ファイルシステムの作成

作成されたばかりのLVはファイルシステムがなくマウントできない為、mkfsでフォーマットします。xfsを指定しています。

[root@centos ~]# mkfs /dev/mapper/vg0-system1 -t xfs

meta-data=/dev/mapper/vg0-system1 isize=512    agcount=4, agsize=6143232 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=24572928, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=11998, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.
マウント確認

/dev/mapper/vg0-system1のマウントを確認します。/system1にマウントしています。

[root@centos ~]# mkdir /system1
[root@centos ~]# mount /dev/mapper/vg0-system1 /system1
[root@centos ~]# df -h

/dev/mapper/vg0-system1    94G  702M   94G    1% /system1

[root@centos ~]# umount /system1
/etc/fstab

ホスト起動時にマウントするには、/etc/fstabに下記を追記します。再起動して確認しましょう。

[root@centos ~]# vim /etc/fstab

/dev/mapper/vg0-system1 /system1 xfs defaults 0 0

lvrename

lvrenameでLVの名前を変更できます。スペルを間違えた、名前が気に入らない、役割に基づいた名前を付けていたが役割が変わった、等の場合に簡単に名前だけ変更できます。

本稿では、vg1のsystemをvg1のsystem2に変更します。引数の指定は、変更前、変更後です。lvdisplayのLV Pathの値を指定します。

[root@centos ~]# lvrename /dev/vg1/system /dev/vg1/system2

尚、LVの名前は即変更されますが、dfコマンドの出力はマウントしなおさないと変わりません。/etc/fstabの内容も書き換えが必要です。その他、マウントポイントを変更する場合は、それに伴う関連設定(例:NFS等)の変更も必要です。

Linux コマンドリファレンス LVM

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る