Rocky Linuxにディスクを追加してLVMで利用する方法(新規作成・既存ボリューム拡張手順)

Azure,Managed Disks,Others,Rocky Linux/CentOS,Virtual Machines

追加した物理ディスクを、LVM(Logical Volume Manager)を使用したRocky Linuxで利用するための手順です。
新規のボリュームやファイルシステムとして利用する手順と、既存のボリュームやファイルシステムを拡張して利用する手順の2つについて確認します。

パーティション作成、物理ボリューム作成、ボリュームグループの作成または拡張、論理ボリュームの作成または拡張、XFSファイルシステムの作成または拡張、ファイルシステムのマウントまでの、OSから領域として認識し利用可能にする手順を紹介します。

確認にはAzure環境上に構築したNVMeタイプの仮想マシンを利用しています。
また仮想マシンは起動した状態で手順確認しています。

※本記事内では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※本記事内では、Azure Managed Disks(マネージドディスク)をディスクとして表記しています。
※本記事内では、Logical Volume ManagerをLVMとして表記しています。
※Rocky Linux release 9.6 (Blue Onyx)の仮想マシンを利用しています。
※パーティションテーブルには GPT(GUID Partition Table)を利用しています。

標準のパーティション管理を利用している場合の手順については、こちらで紹介しています。

スポンサーリンク

データディスクの作成から仮想マシン(Azure VM)への追加までの手順

ディスクのリソース作成から仮想マシンへのアタッチ(追加)までの手順については、こちらで紹介しています。
今回は仮想マシンにデータディスク(32GiB)を追加しています。

Rocky Linuxに追加したディスクをLVMの新規ボリュームとして利用する手順

追加したディスクの認識状況を確認

lsblk、gdisk、df コマンドを利用して、追加されたディスクの認識状況を確認します。
追加したディスクは/dev/nvme0n2として認識されていることが確認できます。
パーティションは未作成であり、OSからもマウントされていない状態であることが分かります。

    • lsblk : ブロックデバイスの情報を一覧表示
    • gdisk : パーティション情報の一覧表示および編集(GPTパーティションテーブルを持つディスク)
    • df : マウントされているファイルシステムの空き領域を表示

[root@vm-01 ~]# lsblk
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1          259:0    0   10G  0 disk
├─nvme0n1p1      259:1    0    2M  0 part
├─nvme0n1p2      259:2    0  100M  0 part /boot/efi
├─nvme0n1p3      259:3    0 1000M  0 part /boot
└─nvme0n1p4      259:4    0  8.9G  0 part
  └─rocky-lvroot 253:0    0  8.8G  0 lvm  /
nvme0n2          259:5    0   32G  0 disk # 追加したディスクが新規デバイスとして認識されています

[root@vm-01 ~]# gdisk -l /dev/nvme0n2
Total free space is 67108797 sectors (32.0 GiB)

Number Start (sector) End (sector) Size Code Name
# パーティション未作成状態のため何も表示されません

[root@vm-01 ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
/dev/mapper/rocky-lvroot xfs       8.8G  1.1G  7.7G  13% /
/dev/nvme0n1p3           xfs       936M  272M  665M  30% /boot

※コマンド実行結果は抜粋して記載しています。

パーティションを新規作成

パーティション作成には、partedコマンドを利用します。
今回は、追加したディスクの全領域を1つのパーティションとして利用しています。
パーティション名(ラベル)は、data-disk-01としています。

    • parted : パーティションの作成や削除、サイズ変更、情報表示
      • mklabel : パーティションテーブルのラベル(GPTなど)を指定して新規作成
      • mkpart : パーティションを作成
      • set : フラグを設定

※今回は、確認しながら作業を進めるため、1つずつコマンドを実行しています。
※partprobeは、パーティションテーブルの作成をシステムに認識させるために使用しています。

[root@vm-01 ~]# parted /dev/nvme0n2
GNU Parted 3.5
Using /dev/nvme0n2
Welcome to GNU Parted! Type 'help’ to view a list of commands.
(parted) mklabel gpt
(parted) print
Model: MSFT NVMe Accelerator v1.0 (nvme)
Disk /dev/nvme0n2: 34.4GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt # パーティションテーブルが作成されています
Disk Flags:

Number Start End Size File system Name Flags

(parted) mkpart “data-disk-01" 0% 100%
(parted) set 1 lvm on
(parted) print
Model: MSFT NVMe Accelerator v1.0 (nvme)
Disk /dev/nvme0n2: 34.4GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name          Flags
 1      1049kB  34.4GB  34.4GB               data-disk-01  lvm #パーティションが作成されています

(parted) quit
[root@vm-01 ~]# partprobe /dev/nvme0n2
[root@vm-01 ~]# lsblk /dev/nvme0n2
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n2          259:5    0   32G  0 disk
└─nvme0n2p1      259:7    0   32G  0 part
[root@vm-01 ~]# gdisk -l /dev/nvme0n2
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        67106815   32.0 GiB    8E00  data-disk-01 

※–script(-s)オプションを利用すると、引数にコマンドを指定することで対話せずにpartedコマンドを実行できます。
※コマンド実行結果は抜粋して記載しています。

LVMの物理ボリューム(PV)を新規作成

作成したパーティションに、LVMの物理ボリュームを作成します。
LVMの物理ボリュームを作成することで、LVMから管理できるようになります。

    • pvcreate : LVMの物理ボリュームを作成
    • pvs : LVMの物理ボリューム情報を表示

[root@vm-01 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p4 rocky lvm2 a– <8.92g 132.00m
[root@vm-01 ~]# pvcreate /dev/nvme0n2p1
Physical volume “/dev/nvme0n2p1" successfully created.
Not creating system devices file due to existing VGs.
[root@vm-01 ~]# pvs
PV             VG    Fmt  Attr PSize   PFree 
/dev/nvme0n1p4 rocky lvm2 a–   <8.92g 132.00m
/dev/nvme0n2p1       lvm2 —  <32.00g <32.00g # 物理ボリュームが作成されています

※コマンド実行結果は抜粋して記載しています。

ボリュームグループ(VG)を新規作成

追加した物理ボリューム上に、ボリュームグループを新規作成します。
ボリュームグループを作成することで、LVMの論理ボリュームを作成できるようになります。

    • vgcreate : ボリュームグループを作成
    • vgs : ボリュームグループの情報を表示
[root@vm-01 ~]# vgs
VG    #PV #LV #SN Attr   VSize  VFree  
rocky   1   1   0 wz–n- <8.92g 132.00m
[root@vm-01 ~]# vgcreate rocky_data_01 /dev/nvme0n2p1
Not creating system devices file due to existing VGs.
Volume group “rocky_data_01" successfully created
[root@vm-01 ~]# vgs
VG            #PV #LV #SN Attr   VSize   VFree  
rocky           1   1   0 wz–n-  <8.92g 132.00m
rocky_data_01   1   0   0 wz–n- <32.00g <32.00g  # ボリュームグループが作成されています

※コマンド実行結果は抜粋して記載しています。

論理ボリューム(LV)を新規作成

追加したボリュームグループ上に、論理ボリュームを新規作成します。
論理ボリュームを作成することで、ファイルシステムを作成できるようになります。

    • lvcreate : 論理ボリュームを作成
    • lvs : 論理ボリュームの情報を表示
[root@vm-01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvroot rocky -wi-ao—- <8.79g
[root@vm-01 ~]# lvcreate -n lv_data_01 -l 100%FREE rocky_data_01
Logical volume “lv_data_01" created.
[root@vm-01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvroot rocky -wi-ao—- <8.79g
lv_data_01 rocky_data_01 -wi-a—– <32.00g # 論理ボリュームが作成されています

※コマンド実行結果は抜粋して記載しています。

XFSファイルシステムを新規作成

作成した論理ボリュームにファイルシステムを新規作成します。
ファイルシステムにはxfsを利用します。

    • mkfs.xfs : XFSファイルシステムの作成

[root@vm-01 ~]# mkfs.xfs /dev/rocky_data_01/lv_data_01
meta-data=/dev/rocky_data_01/lv_data_01 isize=512    agcount=4, agsize=2096896 blks
Discarding blocks…Done.

※コマンド実行結果は抜粋して記載しています。

ファイルシステムをOSからマウント

XFS形式で作成したファイルシステムをOSからマウントします。
マウントすることで、追加したディスクをOSから利用できるようになります。
マウントポイントは/datadisk01としています。

    • mount : ファイルシステムをマウント
    • findmnt : 現在マウントされているマウントポイントやデバイス情報を表示

ファイルシステムのマウントについては、Red Hat社のサイトに詳しい説明があります。

[root@vm-01 ~]# mkdir /datadisk01
[root@vm-01 ~]# mount /dev/rocky_data_01/lv_data_01 /datadisk01
[root@vm-01 ~]# findmnt –type xfs
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mapper/rocky-lvroot xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota
├─/boot /dev/nvme0n1p3 xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota
└─/datadisk01 /dev/mapper/rocky_data_01-lv_data_01 xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota
[root@vm-01 ~]# df -Th | grep datadisk01
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rocky_data_01-lv_data_01 xfs 32G 261M 32G 1% /datadisk01 # 新規にマウントされています
[root@vm-01 ~]# lsblk /dev/nvme0n2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n2 259:5 0 32G 0 disk
└─nvme0n2p1 259:6 0 32G 0 part
└─rocky_data_01-lv_data_01 253:1 0 32G 0 lvm /datadisk01
 # 追加されています

fstabに追記してファイルシステムのマウントを永続化

mountのみでは一時的なマウントとなり、OS再起動後はマウントが解除されます。
/etc/fstabに追記することで、マウントを永続化(再起動時にもマウント)できます。
fstabで指定するUUIDはlsblkコマンドで確認できます。

ディスクを取り外してしまうと、マウントエラーが発生し、OSが起動できなくなることがあります。
fstabに追記する際にnofailオプションを追加することで、ディスクを取り外してもOSが正常に起動できるようになります。

 /etc/fstabへのファイルシステムの追加については、Red Hat社のサイトに詳しい説明があります。

[root@vm-01 ~]# lsblk –fs /dev/nvme0n2p1
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme0n2p1 LVM2_member LVM2 001 8qPBDC-mBGd-l0w0-yhfx-3yc1-OxS1-5oErns
└─rocky_data_01-lv_data_01 xfs fff6d911-5846-4263-ac2b-5168342b777e 31.7G 1% /datadisk01

[root@vm-01]# vi /etc/fstab
###fstabへの追記内容###
UUID=fff6d911-5846-4263-ac2b-5168342b777e /datadisk01 xfs defaults,nofail 0 0

# OS再起動後にマウント状況を確認
[root@vm-01 ~]# df -Th | grep datadisk01
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rocky_data_01-lv_data_01 xfs 32G 261M 32G 1% /datadisk01

—広告—

Rocky Linuxに追加したディスクをLVMの既存ボリューム拡張に利用する手順

新規にデータディスク(32GiB)を仮想マシンに追加し、先ほど作成したLVMのボリュームを64GiBまで拡張します。

追加したディスクの認識状況を確認

lsblkコマンドを利用して、追加されたディスクの認識状況を確認します。
追加したディスクは/dev/nvme0n3として認識されていることが確認できます。

    • lsblk : ブロックデバイスの情報を一覧表示

[root@vm-01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 10G 0 disk
├─nvme0n1p1 259:1 0 2M 0 part
├─nvme0n1p2 259:2 0 100M 0 part /boot/efi
├─nvme0n1p3 259:3 0 1000M 0 part /boot
└─nvme0n1p4 259:4 0 8.9G 0 part
└─rocky-lvroot 253:1 0 8.8G 0 lvm /
nvme0n2 259:5 0 32G 0 disk
└─nvme0n2p1 259:6 0 32G 0 part
└─rocky_data_01-lv_data_01 253:0 0 32G 0 lvm /datadisk01
nvme0n3 259:7 0 32G 0 disk 
# 追加したディスクが新規デバイスとして認識されています

※コマンド実行結果は抜粋して記載しています。

パーティションを新規作成

追加したディスクの全領域を、1つのパーティションとして作成します。
パーティション名(ラベル)は、data-disk-02としています。

    • parted : パーティションの作成や削除、サイズ変更、情報表示
      • mklabel : パーティションテーブルのラベル(GPTなど)を指定して新規作成
      • mkpart : パーティションを作成
      • set : フラグを設定

※今回は、確認しながら作業を進めるため、1つずつコマンドを実行しています。
※partprobeは、パーティションテーブルの作成をシステムに認識させるために使用しています。

[root@vm-01 ~]# parted /dev/nvme0n3
GNU Parted 3.5
Using /dev/nvme0n3
Welcome to GNU Parted! Type 'help’ to view a list of commands.
(parted) mklabel gpt
(parted) mkpart “data-disk-02" 0% 100%
(parted) set 1 lvm on
(parted) print
Model: MSFT NVMe Accelerator v1.0 (nvme)
Disk /dev/nvme0n3: 34.4GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name          Flags
 1      1049kB  34.4GB  34.4GB               data-disk-02  lvm # パーティションが作成されています

[root@vm-01 ~]# partprobe /dev/nvme0n3
[root@vm-01 ~]# lsblk /dev/nvme0n3
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n3          259:5    0   32G  0 disk
└─nvme0n3p1      259:7    0   32G  0 par

※–script(-s)オプションを利用すると、引数にコマンドを指定することで対話せずにpartedコマンドを実行できます。
※コマンド実行結果は抜粋して記載しています。

LVMの物理ボリューム(PV)を新規作成

作成したパーティションに、LVMの物理ボリュームを作成します。
LVMの物理ボリュームを作成することで、LVMから管理できるようになります。

    • pvcreate : LVMの物理ボリュームを作成
    • pvs : LVMの物理ボリューム情報を表示

[root@vm-01 ~]# pvs
PV             VG            Fmt  Attr PSize   PFree 
/dev/nvme0n1p4 rocky         lvm2 a–   <8.92g 132.00m
/dev/nvme0n2p1 rocky_data_01 lvm2 a–  <32.00g      0
[root@vm-01 ~]# pvcreate /dev/nvme0n3p1
Physical volume “/dev/nvme0n3p1" successfully created.
Not creating system devices file due to existing VGs.
[root@vm-01 ~]# pvs
PV             VG            Fmt  Attr PSize   PFree 
/dev/nvme0n1p4 rocky         lvm2 a–   <8.92g 132.00m
/dev/nvme0n2p1 rocky_data_01 lvm2 a–  <32.00g      0
/dev/nvme0n3p1               lvm2 —  <32.00g <32.00g # 物理ボリュームが追加されています

※コマンド実行結果は抜粋して記載しています。

作成した物理ボリューム(PV)を既存のボリュームグループ(VG)に追加

作成した物理ボリュームを既存のボリュームグループに追加して拡張します。
ボリュームグループを拡張することで、LVMの論理ボリュームも拡張できるようになります。

    • vgextend : ボリュームグループに物理ボリュームを追加
    • vgs : ボリュームグループの情報を表示
[root@vm-01 ~]# vgs
VG            #PV #LV #SN Attr   VSize   VFree  
rocky           1   1   0 wz–n-  <8.92g 132.00m
rocky_data_01   1   1   0 wz–n- <32.00g      0
[root@vm-01 ~]# vgextend rocky_data_01 /dev/nvme0n3p1
Volume group “rocky_data_01" successfully extended
[root@vm-01 ~]# vgs
VG            #PV #LV #SN Attr   VSize  VFree  
rocky           1   1   0 wz–n- <8.92g 132.00m
rocky_data_01   2   1   0 wz–n- 63.99g <32.00g # ボリュームグループが拡張されています

[root@vm-01 ~]# df -Th | grep datadisk01
Filesystem                           Type      Size  Used Avail Use% Mounted on
/dev/mapper/rocky_data_01-lv_data_01 xfs        32G  261M   32G   1% /datadisk01 # 論理ボリューム拡張前なので変化はありません

※コマンド実行結果は抜粋して記載しています。

論理ボリューム(LV)とファイルシステムを拡張

論理ボリュームとフィルシステムのサイズを拡張します。
lvextendコマンドの-rオプションを利用することで、論理ボリュームの拡張に合わせて自動でファイルシステムもリサイズされます。
ファイルシステムも併せて拡張することで、OSから追加領域が認識され利用できるようになります。

    • lvextend : 論理ボリュームのサイズを拡張
    • lvs : 論理ボリュームの情報を表示
[root@vm-01 ~]# lvs
  LV         VG            Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvroot     rocky         -wi-ao—-  <8.79g
  lv_data_01 rocky_data_01 -wi-ao—- <32.00g
[root@vm-01 ~]# lvextend -r -l +100%FREE /dev/rocky_data_01/lv_data_01
File system xfs found on rocky_data_01/lv_data_01 mounted at /datadisk01.
Size of logical volume rocky_data_01/lv_data_01 changed from <32.00 GiB (8191 extents) to 63.99 GiB (16382 extents).
Extending file system xfs to 63.99 GiB (68711088128 bytes) on rocky_data_01/lv_data_01…
xfs_growfs /dev/rocky_data_01/lv_data_01
xfs_growfs done
Extended file system xfs on rocky_data_01/lv_data_01.
Logical volume rocky_data_01/lv_data_01 successfully resized.
[root@vm-01 ~]# lvs
LV         VG            Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lvroot     rocky         -wi-ao—- <8.79g
lv_data_01 rocky_data_01 -wi-ao—- 63.99g # 論理ボリュームが拡張されています
[root@vm-01 ~]# df -Th | grep datadisk01
/dev/mapper/rocky_data_01-lv_data_01 xfs        64G  490M   64G   1% /datadisk01 # ファイルシステムが64GiBに拡張されています

※コマンド実行結果は抜粋して記載しています。

—広告—

最後に

LVMで構成されたRocky Linuxの仮想マシンにディスクを追加して、OSから利用開始するまでの手順を確認しました。
今回は、新規のボリュームやファイルシステムとして利用する手順と、既存のボリュームやファイルシステムを拡張して利用する手順の2つについて確認しました。

引き続き、いろいろ試してみたいと思います。

Windows Serverの仮想マシンへのデータディスク追加手順は、こちらで紹介しています。

Azureのディスクサイズを変更する場合の手順は、こちらで紹介しています。

Rocky Linuxでディスクサイズを変更する場合の手順はこちらで紹介しています。

スポンサーリンク