LVMとは?
Wikipediaには、以下のように記載されています。
論理ボリュームマネージャ(Logical Volume Manager、LVM)は、「物理ボリューム」を提供するハードディスクなどのストレージメディア・デバイス(補助記憶装置)に、直接ファイルシステムをマップするのではなく、粗粒度(典型的には、メビバイト単位程度)のブロックにより一旦「論理ボリューム」と呼ばれる仮想化されたボリュームに束ねて利用するためのシステムである。
簡単にまとめると、複数のハードディスクやパーティションをひとつのボリュームグループ(VG)にまとめ、単一の論理ボリューム(LV)として扱うことのできるディスク管理機能です。LinuxをはじめとするUnix系のOSで利用できる機能です。
LVMの構成例
理解を深めるため、図を用いて構成例を説明します。
![LVM概要](https://progzakki.sanachan.com/wp-content/uploads/2020/12/LVM-300x157.jpg)
LVM構成例
Physical Devices(物理デバイス) / Partitions(パーティション)
上図の最下部「/dev/sda」「/dev/sdb」が、物理的な2台のHDDに該当します。
それぞれ、パーティションを2つ切られており、「/dev/sda1、/dev/sda2」「/dev/sdb1、/dev/sdb2」として見えています。
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
Volume Groups (VG)「ボリュームグループ」
これら4つのパーティションを1つのボリュームグループ「cl」にまとめています。
これで、2台のHDDを1台のHDDとして扱うことができるようになります。
Logical Volume (LV)「論理ボリューム」
ボリュームグループを分割し、物理ドライブ上のPartition に相当する「論理ボリューム」を用意します。
ここでは、「/dev/cl/root」と「/dev/cl/data」です。
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
分割しなくても問題ありません。
File System (FS)「ファイルシステム」
論理ボリュームにファイルシステムをマッピングして、実際に使用します。
分割した論理ボリュームごとにファイルシステムを割り当てることができます。
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
「LVM」まとめ
ポイント
- 複数パーティションがあり、その上にボリュームグループ(VG)を作成できる
- VGの上に複数の論理ボリューム(LV)を作成し、ファイルシステム(FS)を構築して使用
注意ポイント
論理ボリューム(LV)は、物理ボリュームの総容量を越えることはできません。(当然ですが・・・)
LVM操作(拡張手順)
手順は物理デバイスに近い層から順に変更していきます。
- 現状の構成確認
- パーティション(Partition)の変更
- 物理ボリューム(Physical Volume)の変更
- 論理ボリューム(Logical Volume)の変更
- ファイルシステム(File System)の変更
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
手順①:df で現状の構成確認
df (Dump Filesystem) は、ファイルシステムに関する情報を表示してくれるコマンドです。
このコマンドを実行して、現在の構成を確認することができます。
1 2 3 4 5 6 7 8 9 10 11 |
[root@ ~]# df -h ファイルシステム サイズ 使用 残り 使用% マウント位置 /dev/mapper/cl-root 36G 1.4G 35G 4% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.4M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/cl-data 36G 1.4G 35G 4% /data /dev/sda1 497M 167M 330M 34% /boot tmpfs 380M 0 380M 0% /run/user/0 |
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
手順②:fdisk でパーティション拡張
パーティションを拡張するには、以下の条件を満たしている必要があります。
拡張できる条件
拡張したいパーティションの直後に未割当領域があること
パーティションを拡張するには、元の領域を含めた一連の領域が必要になります。
領域に空きがあれば、やることは簡単。既存のパーティションを削除し、新たにパーティションを作成するだけ。
fdisk は、「fdisk <物理ドライブへのパス>」の書式で実行します。
対話的なインターフェイスになっているため、使いやすいと思います。
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
パーティション情報を表示
fdisk のプロンプトで「p」を入力して表示させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[root@ ~]# fdisk /dev/sda Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. コマンド (m でヘルプ): p ★パーティション情報を表示 Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: dos ディスク識別子: 0x000cf688 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 83886079 41430016 8e Linux LVM |
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
既存のパーティションを削除
fdisk のプロンプトで「d」を入力して表示させます。
1 2 3 4 |
コマンド (m でヘルプ): d ★パーティションの削除 パーティション番号 (1,2, default 2): 2 Partition 2 is deleted |
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
スポンサーリンク
新しいパーティションの作成
fdisk のプロンプトで「n」を入力して作成します。
1 2 3 4 5 6 7 8 9 10 11 12 |
コマンド (m でヘルプ): n ★新しいパーティションを追加 Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p パーティション番号 (2-4, default 2): 最初 sector (1026048-125829119, 初期値 1026048): 初期値 1026048 を使います Last sector, +sectors or +size{K,M,G} (1026048-125829119, 初期値 125829119): 初期値 125829119 を使います Partition 2 of type Linux and of size 59.5 GiB is set |
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
パーティションタイプの変更
fdisk のプロンプトで「t」を入力して変更します。
1 2 3 4 |
コマンド (m でヘルプ): t ★パーティションタイプの変更 Selected partition 2 Hex code (type L to list all codes): 8e |
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
変更内容を書込む
fdisk のプロンプトで「w」を入力して書込みます。
1 2 3 4 5 6 7 8 9 10 |
コマンド (m でヘルプ): w ★パーティション情報をディスクに書き込み パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 WARNING: Re-reading the partition table failed with error 16: デバイスもしくはリソースがビジー 状態です. 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) ディスクを同期しています。 |
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
書込みは終わっているので、reboot コマンドで再起動して反映させましょう。
注意
この後の手順は、再起動後に行う必要があります。
手順③:物理ボリューム(Physical Volume)の拡張
物理ボリュームの拡張には「pvresize」コマンドを使用します。
1 2 3 4 |
[root@ ~]# pvresize /dev/sda2 Physical volume "/dev/sda2" changed 1 physical volume(s) resized / 0 physical volume(s) not resized |
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
手順④:論理ボリューム(Logical Volume)の拡張
論理ボリュームの拡張には「lvextend」コマンドを使用します。
1 2 3 4 |
[root@ ~]# lvextend -l +100%FREE /dev/cl/data Size of logical volume cl/data changed from 35.59 GiB (9111 extents) to 55.63 GiB (14242 extents). Logical volume data successfully resized. |
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
手順⑤:ファイルシステムの拡張
ファイルシステムの拡張には「resize2fs」コマンドを使用します。
1 2 3 4 5 |
[root@ ~]# resize2fs /dev/cl/data resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/cl/data Couldn't find valid filesystem superblock. |
![SANACHAN](https://progzakki.sanachan.com/wp-content/uploads/2021/12/SANACHAN.png)
resize2fs でエラーが出る場合(CentOSなど)、代わりに「xfs_growfs」コマンドを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@ ~]# xfs_growfs /dev/cl/data meta-data=/dev/mapper/cl-data isize=256 agcount=4, agsize=2332416 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=9329664, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=4555, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 9329664 to 14583808 |
おわりに
いかがでしたでしょうか。
ボリュームやファイルシステムの変更は失敗すると起動できなくなります。
気を付けてコマンドを入力し、実行するようにしてください。
以上、「【解説】LVMとは?|論理ボリュームを拡張してみよう!」でした。