2020-05-03

小容量ストレージ対策 〜 LVM

LVM, Logical Volume Manager(論理ボリュームマネージャ)は、UNIX 系 OS で利用できる機能で、複数の外部記憶装置(ストレージ)やその内部のパーティションをまとめ、単一の記憶領域として利用する機能です。

LVM を利用するにはストレージ内に専用のパーティション(区画)を設けます。パーティション内部は数 MB 単位の PE (Physical Extent) と呼ばれる管理単位に分割され、これを必要なだけ結合して単一の論理ボリューム (LV:Logical Volume) を構成します。

IT用語辞典 e-Words より引用、編集

小容量ストレージ対策に使える LVM

最近は低価格帯のノート PC でも、ストレージに 64GB の eMMC を搭載しているものを目にするようになりました。しかしちょっと前までは 32GB の eMMC が主流でした。そういった低価格帯のノート PC を買って Linux をインストールするのに、32GB という容量は小さすぎるということはありませんが、サブのノート PC として日常用途で使うのにはやはり容量が少ないという感は否めません。

プレインストールされている Windows の場合、小容量のストレージは C ドライブになるので、Windows Update 毎に空き容量を確保するために四苦八苦することになります。たとえ大容量の SD カードが使えるスロットがあっても、C ドライブにはならないからです。

※ Windows でも、下記のようなパーティションツールを利用すれば C ドライブを拡張できるようですが、未評価です。

Windows を捨てて Linux をインストールするのであれば、LVM を利用することで、大容量の SD カードの領域を有効に利用することができます。

今回は、右の 64GB のストレージを搭載した廉価なノート PC に Linux (Fedora) をインストール後、128GB の SD カードを挿入し、LVM を利用してシステムのストレージ領域を拡張した事例をまとめました。

LVM によるストレージ領域の拡張

本ブログ記事では下記の OS 環境で動作確認をしています。

Fedora 32 (Workstation Edition) x86_64

RHEL/CentOS や Fedora といった RedHat 系 Linux のインストーラは、デフォルトではストレージのパーティションを LVM で設定します。

インストール先のストレージ (eMMC 64GB) を指定して、他の設定はせずにデフォルトのままで Fedora をインストールしました。ストレージの使用状況は下記のようになっています。

[bitwalk@localhost ~]$ df -h
ファイルシス                            サイズ  使用  残り 使用% マウント位置
devtmpfs                                  2.9G     0  2.9G    0% /dev
tmpfs                                     2.9G     0  2.9G    0% /dev/shm
tmpfs                                     2.9G  2.1M  2.9G    1% /run
/dev/mapper/fedora_localhost--live-root    33G  7.8G   24G   25% /
tmpfs                                     2.9G  104K  2.9G    1% /tmp
/dev/mapper/fedora_localhost--live-home    17G  341M   15G    3% /home
/dev/mmcblk2p2                            976M  203M  707M   23% /boot
/dev/mmcblk2p1                            599M   21M  579M    4% /boot/efi
tmpfs                                     579M   88K  579M    1% /run/user/1000
[bitwalk@localhost ~]$ 

33GB の /(ルート)、17GB の /home が論理ボリュームに割り当てられています。

※ ストレージのサイズによって、インストーラが割り当てる論理ボリュームは異なります。ストレージの容量が 32GB の場合、/(ルート)が論理ボリュームに割り当てられるのみです。

インストール後のボリュームグループ確認

vgdisplay でストレージのボリュームグループを確認すると以下のようになっています。

[bitwalk@localhost ~]$ sudo vgdisplay
  --- Volume group ---
  VG Name               fedora_localhost-live
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <56.03 GiB
  PE Size               4.00 MiB
  Total PE              14343
  Alloc PE / Size       14343 / <56.03 GiB
  Free  PE / Size       0 / 0   
  VG UUID               9CUf0f-w0ep-vmfe-UWGl-gRDq-gGdw-t7mk3B
   

ボリュームグループは fedora_localhost-live が存在しています。

lvdisplay コマンドで論理ボリュームを確認すると以下のようになっています。

[bitwalk@localhost ~]$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/fedora_localhost-live/swap
  LV Name                swap
  VG Name                fedora_localhost-live
  LV UUID                1E1YJe-i0tH-qBAS-1XkU-EN7P-0DfO-C7Q2gK
  LV Write Access        read/write
  LV Creation host, time localhost-live, 2020-05-02 09:36:34 +0900
  LV Status              available
  # open                 2
  LV Size                5.76 GiB
  Current LE             1475
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/fedora_localhost-live/home
  LV Name                home
  VG Name                fedora_localhost-live
  LV UUID                rpsp7E-S8FA-bBEn-GdCX-t4r5-Gfyf-1gZ8CA
  LV Write Access        read/write
  LV Creation host, time localhost-live, 2020-05-02 09:36:34 +0900
  LV Status              available
  # open                 1
  LV Size                <16.49 GiB
  Current LE             4221
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2
   
  --- Logical volume ---
  LV Path                /dev/fedora_localhost-live/root
  LV Name                root
  VG Name                fedora_localhost-live
  LV UUID                zlYMCv-G2W2-ndHE-BI1J-Mvvq-ywzc-QEc2Ik
  LV Write Access        read/write
  LV Creation host, time localhost-live, 2020-05-02 09:36:43 +0900
  LV Status              available
  # open                 1
  LV Size                <33.78 GiB
  Current LE             8647
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   

ボリュームグループ fedora_localhost-live に、3つの論理ボリューム swap, home そして root が割り当てられています。

SD カードをボリュームグループに追加

ext4 形式でフォーマットした 128GB の SD カードを挿入します。挿入後、df コマンドで確認します。挿入した SD カードは /dev/mmcblk0p1 です。

[bitwalk@localhost ~]$ df -h
ファイルシス                            サイズ  使用  残り 使用% マウント位置
devtmpfs                                  2.9G     0  2.9G    0% /dev
tmpfs                                     2.9G     0  2.9G    0% /dev/shm
tmpfs                                     2.9G  2.1M  2.9G    1% /run
/dev/mapper/fedora_localhost--live-root    33G  7.8G   24G   25% /
tmpfs                                     2.9G  104K  2.9G    1% /tmp
/dev/mapper/fedora_localhost--live-home    17G  357M   15G    3% /home
/dev/mmcblk2p2                            976M  203M  707M   23% /boot
/dev/mmcblk2p1                            599M   21M  579M    4% /boot/efi
tmpfs                                     579M  108K  578M    1% /run/user/1000
/dev/mmcblk0p1                            118G   60M  112G    1% /run/media/bitwalk/c6949743-409e-4649-bc3c-5647296e748f
[bitwalk@localhost ~]$ 

vgextend コマンドで、ボリュームグループ fedora_localhost-live に SD カード /dev/mmcblk0p1 を追加して、ボリュームグループの領域を拡張します。

一旦、プライベートでマウントされている /dev/mmcblk0p1 をアンマウントしてから vgextend コマンドを実行します。

[bitwalk@localhost ~]$ umount /dev/mmcblk0p1
[bitwalk@localhost ~]$ sudo vgextend fedora_localhost-live /dev/mmcblk0p1
WARNING: ext4 signature detected on /dev/mmcblk0p1 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/mmcblk0p1.
  Physical volume "/dev/mmcblk0p1" successfully created.
  Volume group "fedora_localhost-live" successfully extended
[bitwalk@localhost ~]$ 

vgdisplay コマンドで、ボリュームグループ fedora_localhost-live にフリーな領域が増えていることを確認します。

[bitwalk@localhost ~]$ sudo vgdisplay
  --- Volume group ---
  VG Name               fedora_localhost-live
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               176.27 GiB
  PE Size               4.00 MiB
  Total PE              45126
  Alloc PE / Size       14343 / <56.03 GiB
  Free  PE / Size       30783 / <120.25 GiB
  VG UUID               9CUf0f-w0ep-vmfe-UWGl-gRDq-gGdw-t7mk3B
   
[bitwalk@localhost ~]$ 

論理ボリュームの拡張

/dev/fedora_localhost-live/home

論理ボリューム /dev/fedora_localhost-live/home に、追加した空エリアの半分 (50%) を割り当てます。

[bitwalk@localhost ~]$ sudo lvextend -l +50%FREE /dev/fedora_localhost-live/home
  Size of logical volume fedora_localhost-live/home changed from <16.49 GiB (4221 extents) to 76.61 GiB (19613 extents).
  Logical volume fedora_localhost-live/home successfully resized.
[bitwalk@localhost ~]$ df -h
ファイルシス                            サイズ  使用  残り 使用% マウント位置
devtmpfs                                  2.9G     0  2.9G    0% /dev
tmpfs                                     2.9G     0  2.9G    0% /dev/shm
tmpfs                                     2.9G  2.1M  2.9G    1% /run
/dev/mapper/fedora_localhost--live-root    33G  7.8G   24G   25% /
tmpfs                                     2.9G  104K  2.9G    1% /tmp
/dev/mapper/fedora_localhost--live-home    17G  357M   15G    3% /home
/dev/mmcblk2p2                            976M  203M  707M   23% /boot
/dev/mmcblk2p1                            599M   21M  579M    4% /boot/efi
tmpfs                                     579M  108K  578M    1% /run/user/1000
[bitwalk@localhost ~]

df で確認すると、まだ /dev/fedora_localhost-live/home の領域は増えていません。

resize2fs コマンドで /dev/fedora_localhost-live/home の領域を拡張します。

[bitwalk@localhost ~]$ sudo resize2fs /dev/fedora_localhost-live/home
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/fedora_localhost-live/home is mounted on /home; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 10
The filesystem on /dev/fedora_localhost-live/home is now 20083712 (4k) blocks long.

[bitwalk@localhost ~]$ df -h
ファイルシス                            サイズ  使用  残り 使用% マウント位置
devtmpfs                                  2.9G     0  2.9G    0% /dev
tmpfs                                     2.9G     0  2.9G    0% /dev/shm
tmpfs                                     2.9G  2.1M  2.9G    1% /run
/dev/mapper/fedora_localhost--live-root    33G  7.8G   24G   25% /
tmpfs                                     2.9G  104K  2.9G    1% /tmp
/dev/mapper/fedora_localhost--live-home    76G  364M   72G    1% /home
/dev/mmcblk2p2                            976M  203M  707M   23% /boot
/dev/mmcblk2p1                            599M   21M  579M    4% /boot/efi
tmpfs                                     579M  108K  578M    1% /run/user/1000
[bitwalk@localhost ~]$ 

df コマンドで /dev/fedora_localhost-live/home の領域が増えていることを確認できます。

/dev/fedora_localhost-live/root

残ったフリーの領域を全てルート領域 /dev/fedora_localhost-live/root に割り当てます。

[bitwalk@localhost ~]$ sudo lvextend -l +100%FREE /dev/fedora_localhost-live/root
  Size of logical volume fedora_localhost-live/root changed from <33.78 GiB (8647 extents) to <93.90 GiB (24038 extents).
  Logical volume fedora_localhost-live/root successfully resized.
[bitwalk@localhost ~]$ sudo resize2fs /dev/fedora_localhost-live/root
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/fedora_localhost-live/root is mounted on /; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 12
The filesystem on /dev/fedora_localhost-live/root is now 24614912 (4k) blocks long.

[bitwalk@localhost ~]$ df -h
ファイルシス                            サイズ  使用  残り 使用% マウント位置
devtmpfs                                  2.9G     0  2.9G    0% /dev
tmpfs                                     2.9G     0  2.9G    0% /dev/shm
tmpfs                                     2.9G  2.1M  2.9G    1% /run
/dev/mapper/fedora_localhost--live-root    93G  7.8G   81G    9% /
tmpfs                                     2.9G  104K  2.9G    1% /tmp
/dev/mapper/fedora_localhost--live-home    76G  364M   72G    1% /home
/dev/mmcblk2p2                            976M  203M  707M   23% /boot
/dev/mmcblk2p1                            599M   21M  579M    4% /boot/efi
tmpfs                                     579M  108K  578M    1% /run/user/1000
[bitwalk@localhost ~]$ 

まとめ

エンタープライズ用途のデータベースなどのサーバでストレージの領域が足りなくなった時に、LVM を利用していて、かつストレージを増設するスペースさえあれば、システムを稼動させたままでストレージ領域を拡張できます。その一方、プライベートで使う PC の小容量なストレージ事情にも同じやり方で LVM を応用できます。

最近は、コンテナ技術に関連して Podman/Docker によるサーバーの仮想化や、サンドボックスで実行される Flatpak アプリの利用が増え、いつの間にか /var 領域が肥大化してしまいます。Fedora のインストール時に設定をすれば /var も論理グループとしてルート領域と分離できます。用途に応じて、システムのスケーラビリティを LVM で柔軟にデザインできます。

気になるのは、ストレージに関わる障害発生時にどのような解析ができるかです。引き続き、情報収集を続けます。

GNOME Disks によるストレージ/ブロックデバイス一覧

参考サイト

  1. bitWalk's: 【備忘録】Fedoraで論理ボリュームを追加する [2018-12-29]
  2. 論理ボリュームの設定および管理 Red Hat Enterprise Linux 8 | Red Hat Customer Portal

ブログランキング・にほんブログ村へ
にほんブログ村

0 件のコメント: