- 1 LVM(Logical Volume Manage)とは?
- 2 検証環境
- 3 パッケージのインストール
- 4 LVMコマンド一覧
- 5 事前準備
- 6 物理ボリュームの作成(pvcreate)
- 7 ボリュームグループの作成(vgcreate)
- 8 論理ボリュームの作成(lvcreate)
- 9 ファイルシステムの作成
- 10 論理ボリュームのマウント
- 11 環境削除
- Z 参考情報
1 LVM(Logical Volume Manage)とは?
複数のハードディスクやパーティションにまたがった記憶領域を、あたかも一つのディスクとして扱うことのできるディスク管理機能です。以下の手順で、論理ボリュームを作成し、その上にファイルシステムを作成してみます。
物理ボリューム作成(pvcreate)
↓
ボリュームグループ作成(vgcreate)
↓
論理ボリューム作成(lvcreate)
↓
論理ボリュームにファイルシステム作成
↓
作成したファイルシステムのマウント
2 検証環境
CentOS版数は以下のとおりです。仮想マシンは最小限の構成で作成しました。
[root@server ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
カーネル版数は以下のとおりです。
[root@server ~]# uname -r 3.10.0-1160.el7.x86_64
3 パッケージのインストール
lvm2パッケージをインストールします。
[root@server ~]# yum -y install lvm2
版数を確認します。
[root@server ~]# lvm version LVM version: 2.02.187(2)-RHEL7 (2020-03-24) Library version: 1.02.170-RHEL7 (2020-03-24) Driver version: 4.37.1 -snip-
4 LVMコマンド一覧
- 物理ボリュームの管理コマンド
コマンド | 概要 |
---|---|
pvcreate | 物理ボリュームの作成 |
pvdisplay | 物理ボリュームの表示 |
pvremove | 物理ボリュームの削除 |
- ボリュームグループの管理コマンド
コマンド | 概要 |
---|---|
vgcreate | ボリュームグループの作成 |
vgdisplay | ボリュームグループの表示 |
vgremove | ボリュームグループの削除 |
vgextend | ボリュームグループの拡張 |
vgreduce | ボリュームグループの縮小 |
- 論理ボリュームの管理コマンド
コマンド | 概要 |
---|---|
lvcreate | 論理ボリュームの作成 |
lvdisplay | 論理ボリュームの表示 |
lvremove | 論理ボリュームの削除 |
lvextend | 論理ボリュームの拡張 |
lvreduce | 論理ボリュームの縮小 |
5 事前準備
ここでは、ループバックデバイスを使って、お手軽にLVMの各種コマンドの使い方を練習してみます。
5.1 ファイルの作成
ループバックデバイスとして使うファイルを2つ作成します。ファイルサイズはともに500Mです。ddコマンドの使い方は、ddコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。
[root@server ~]# dd if=/dev/zero of=disk1.img bs=1024 count=512000 [root@server ~]# dd if=/dev/zero of=disk2.img bs=1024 count=512000
作成したファイルを確認します。
[root@server ~]# ls -lh disk* -rw-r--r--. 1 root root 500M 3月 4 19:36 disk1.img -rw-r--r--. 1 root root 500M 3月 4 19:37 disk2.img
5.2 ループバックデバイスの作成
ループバックデバイスを作成します。
[root@server ~]# losetup -f /root/disk1.img [root@server ~]# losetup -f /root/disk2.img
作成したループバックデバイスを確認します。losetupコマンドの使い方は、losetupコマンドの使い方 - hana_shinのLinux技術ブログを参照ください。
[root@server ~]# losetup -l NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE /dev/loop0 0 0 0 0 /root/disk1.img /dev/loop1 0 0 0 0 /root/disk2.img
6 物理ボリュームの作成(pvcreate)
ループバックデバイスに物理ボリュームを作成します。
[root@server ~]# pvcreate /dev/loop0 Physical volume "/dev/loop0" successfully created.
ループバックデバイスに物理ボリュームを作成します。
[root@server ~]# pvcreate /dev/loop1 Physical volume "/dev/loop1" successfully created.
作成した物理ボリュームを確認します。
[root@server ~]# pvscan PV /dev/loop0 lvm2 [500.00 MiB] PV /dev/loop1 lvm2 [500.00 MiB] Total: 2 [1000.00 MiB] / in use: 0 [0 ] / in no VG: 2 [1000.00 MiB]
7 ボリュームグループの作成(vgcreate)
作成した2つの物理ボリュームから、vg01という名前のボリュームグループを作成します。
[root@server ~]# vgcreate vg01 /dev/loop0 /dev/loop1 Volume group "vg01" successfully created
作成したボリュームグループを確認します。vg01という名前のボリュームグループが作成されたことがわかります。
[root@server ~]# vgdisplay --- Volume group --- VG Name vg01 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 992.00 MiB PE Size 4.00 MiB Total PE 248 Alloc PE / Size 0 / 0 Free PE / Size 248 / 992.00 MiB VG UUID 7eh6C1-78dI-iUzt-alQK-QyWF-kgyg-2I94NO
8 論理ボリュームの作成(lvcreate)
ボリュームグループにlv01という名前の論理ボリュームを作成します。このとき、ボリュームグループ全体のサイズに対する割合を指定して論理ボリュームを作成します。ここでは、ボリュームグループ全てを論理ボリュームとして使用するため、-lに100%FREEと指定します。
[root@server ~]# lvcreate -l100%FREE -n lv01 vg01 Logical volume "lv01" created.
作成した論理ボリュームを確認します。lv01という名前の論理ボリュームが作成できたことがわかります。また、LV Pathを確認すると、論理ボリュームが/dev/vg01/lv01であることがわかります。
[root@server ~]# lvdisplay --- Logical volume --- LV Path /dev/vg01/lv01 LV Name lv01 VG Name vg01 LV UUID mdF76R-BUvE-TU6Q-vmZR-97fC-atsL-ZIOyb9 LV Write Access read/write LV Creation host, time server, 2022-03-04 19:48:40 +0900 LV Status available # open 0 LV Size 992.00 MiB Current LE 248 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
9 ファイルシステムの作成
論理ボリュームにxfsファイルシステムを作成してみます。
[root@server ~]# mkfs.xfs /dev/vg01/lv01 Discarding blocks...Done. meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=63488 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=253952, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=855, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
10 論理ボリュームのマウント
論理ボリュームを/mntにマウントします。
[root@server ~]# mount -o loop /dev/vg01/lv01 /mnt
[root@server ~]# df -hT /mnt/ ファイルシス タイプ サイズ 使用 残り 使用% マウント位置 /dev/loop2 xfs 989M 33M 957M 4% /mnt
11 環境削除
デバイスをアンマウントします。
[root@server ~]# umount /mnt
論理ボリュームを削除します。
[root@server ~]# lvremove /dev/vg01/lv01 Do you really want to remove active logical volume vg01/lv01? [y/n]: y Logical volume "lv01" successfully removed
ボリュームグループを削除します。
[root@server ~]# vgremove vg01 Volume group "vg01" successfully removed
物理ボリューム(/dev/loop0)を削除します。
[root@server ~]# pvremove /dev/loop0 Labels on physical volume "/dev/loop0" successfully wiped.
物理ボリューム(/dev/loop1)を削除します。
[root@server ~]# pvremove /dev/loop1 Labels on physical volume "/dev/loop1" successfully wiped.
最後に、ループバックデバイスを削除します。まず、ループバックデバイスを確認します。/dev/loop0 ,/dev/loop1が存在することがわかります。
[root@server ~]# losetup -l NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE /dev/loop0 0 0 0 0 /root/disk1.img /dev/loop1 0 0 0 0 /root/disk2.img
ループバックデバイスを削除します。
[root@server ~]# losetup -d /dev/loop0 [root@server ~]# losetup -d /dev/loop1
ループバックデバイスを確認します。
[root@server ~]# losetup -l [root@server ~]#
Z 参考情報
私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ