1. 概要

当初の計画よりも多くのストレージスペースが必要な場合は、LVMが役に立ちます。

LinuxカーネルのLogicalVolumeManagerを使用すると、ディスクパーティションを抽象化できます。物理ディスクのパーティションテーブルに書き込まれたパーティションにストレージボリュームを割り当てる代わりに、必要に応じて柔軟にスペースを割り当てます。 また、一度に1つのディスクを使用するのではなく、代わりにストレージプールを使用します。 つまり、スペースが不足した場合に、 /usrまたは/varボリュームを拡大または縮小できます。

このチュートリアルでは、新しい物理ディスクをストレージプール(別名、ボリュームグループ)に追加し、追加したストレージを使用して既存のファイルシステムを拡張します。

2. 状況

Ubuntu Server20.04LTSを使用しているとしましょう。 デフォルトでは、サーバーのストレージは / boot 用に従来の1GBパーティションに分割されており、残りのほとんどはLVMボリュームグループに割り当てられています。

lsblk:で確認できます

# lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT /dev/vda
NAME                      SIZE TYPE FSTYPE      MOUNTPOINT
vda                        25G disk             
├─vda1                      1M part             
├─vda2                      1G part ext4        /boot
└─vda3                     24G part LVM2_member 
  └─ubuntu--vg-ubuntu--lv  20G lvm  ext4        /

この出力から、 / dev / vd3 には24Gがありますが、ルートにマウントされた論理ボリュームには20Gしか割り当てられていないことがわかります。 これにより、「スペース不足」の緊急時に部屋を小刻みに動かすことができます。 未割り当て領域を維持するもう1つの理由:一貫した状態からバックアップするのに便利なLVMスナップショット。

dfのような従来のツールを使用してファイルシステムがどのように見えるかを見てみましょう。

# df -hT -text4
Filesystem                        Type  Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv ext4   20G  6.2G   13G  34% /
/dev/vda2                         ext4  976M  107M  803M  12% /boot

長い名前の論理ボリュームは、Linuxのブロックデバイスまたはパーティションのように見えます。

さて、それがいっぱいになり始めたらどうしますか?

3. 物理的、グループ化、および論理的

単純なパーティションの古き良き時代には、ストレージスペースを追加するために、すべてをより大きなパーティションにコピーする必要がありました。 その間、サーバーをオフラインにする必要があります。

LVMを使用すると、任意の物理ドライブ間で論理ボリュームを切り替えることができます。 任意の論理ボリュームとそのファイルシステムのサイズを安全に変更できます。

LinuxのLVMシステムには、物理ボリューム、ボリュームグループ、論理ボリュームの3つのレベルがあります。 lvm コマンドを使用すると、システム全体を操作できます。

ただし、これらの各レベルは、作成、検査、変更などが可能です。 一連のコマンドを使用:

  • pvコマンドは物理ボリュームを操作します
  • vgコマンドはボリュームグループを操作します
  • lvコマンドは論理ボリュームを操作します

3.1. 論理ボリュームの検査

LVMツールを使用したストレージを見てみましょう。

pvdisplay を使用すると、LVM物理ボリュームとしてマークされている古いスタイルのハードドライブパーティションが表示されます。

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/vda3
  VG Name               ubuntu-vg
  PV Size               <24.00 GiB / not usable 0   
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              6143
  Free PE               1023
  Allocated PE          5120
  PV UUID               qYYC7J-VjMf-niyu-m9C3-KU1n-bys8-1cA0GO

また、ubuntu-vgボリュームグループのメンバーであることにも注意してください。

PEはPhysicalExtentの略です。 エクステントは、ファイルシステムがブロックデバイスを測定する方法です。開始ブロックとブロック単位の長さです。

vgdisplay を使用すると、同様の情報が表示されます。 ボリュームグループに1つの物理ボリューム(ドライブパーティション/ dev / vda3)のみが含まれていることを確認できます。

# vgdisplay | grep PV
  Max PV                0
  Cur PV                1
  Act PV                1

VGに別のPVを追加したいと思います。 次に、論理ボリュームにそのことを通知できます。

現在、 lvdisplay は、その名前、使用するVG、および確保されているストレージの量を示しています。

# lvdisplay ubuntu-lv
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                QsSEyX-tpie-TBuw-sI6w-g6jN-Tp60-da7xjP
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2021-08-22 01:13:58 +0000
  LV Status              available
  # open                 1
  LV Size                20.00 GiB
  Current LE             5120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

3.2. ストレージの追加

つまり、別のハードディスクドライブを追加したとします。 RAIDを使用して、より高速で信頼性の高いストレージを使用することをお勧めします。 しかし、今のところ、さらに追加しましょう。 このように別のドライブを追加してストレージを拡張することを、リニアモードと呼びます。

まず、LVMで使用するために新しいハードドライブにタグを付けます。 これは物理レベルであるため、pvコマンドpvcreateを使用します。

# pvcreate /dev/vdd
  Physical volume "/dev/vdd" successfully created.
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/vda3
  VG Name               ubuntu-vg
  PV Size               <24.00 GiB / not usable 0   
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              6143
  Free PE               1023
  Allocated PE          5120
  PV UUID               qYYC7J-VjMf-niyu-m9C3-KU1n-bys8-1cA0GO
   
  "/dev/vdd" is a new physical volume of "25.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/vdd
  VG Name               
  PV Size               25.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               LYx1BE-udTE-imd2-1Ujx-ibph-kZyE-x9nWln

pvdisplay は、PVが「新規」であり、どのボリュームグループにもまだ接続されていないことを慎重に示していることに気付きました。

次に、物理ボリューム / dev /vddをボリュームグループubuntu-vgに追加します。

LVMコマンドvgextendを使用します。

# vgextend ubuntu-vg /dev/vdd
  Volume group "ubuntu-vg" successfully extended
# vgdisplay ubuntu-vg 
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               48.99 GiB
  PE Size               4.00 MiB
  Total PE              12542
  Alloc PE / Size       5120 / 20.00 GiB
  Free  PE / Size       7422 / 28.99 GiB
  VG UUID               oLnK3Q-OHRI-sMbw-72IM-qj2J-rJCj-olnalT

最後に、論理ボリュームubuntu-lvのサイズを変更できます。現在、20GiBです。 使用可能な空き容量の95% oを追加して、残りを節約しましょう。

lvresizeでそれを行います。

# lvresize --extents +95%FREE --resizefs ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from 20.00 GiB (5120 extents) to 47.54 GiB (12171 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 6
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 12463104 (4k) blocks long.

エクステントオプション、または -l を使用して、スペースのパーセンテージを要求します。 –sizeまたはそのエイリアス-L を使用して、20Gのようなハードな数値、または+10Gのような追加する量を指定することもできます。

# lvresize --size +10G --resizefs ubuntu-vg/ubuntu-lv

–resizefs オプションは、extまたはXFSファイルシステムを新しいスペースに合わせて自動的に拡張します。 これは、ファイルシステム固有のサイズ変更ツールを使用して別の手順として実行できますが、一度に実行すると便利です。

非LVMツールを使用してディスク容量を確認してみましょう。

# df -hT -text4
Filesystem                        Type  Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv ext4   47G  6.2G   39G  14% /
/dev/vda2                         ext4  976M  107M  803M  12% /boot

そして、追加の利用可能なスペースがあります。

3.3. さらなる考慮事項

リニアモードを使用して、このように複数のディスクを組み合わせると、ハードウェア障害によるデータ損失のリスクが高まります。 RAIDが役立ちます。

2つのアプローチがあります。 どちらも実行可能です。 最も簡単に思えるものを選択できます。

1つは、mdraidを使用してLinuxRAIDデバイスを作成することです。これにより、物理ボリュームと同じように扱い、ボリュームグループに追加することができます。

もう1つは、lvmの組み込みRAIDコマンドを使用することです。

これらの方法はどちらも、内部で同じRAIDソフトウェアを使用します。 したがって、実際には、ストレージをどのように整理するかが問題になります。

Archlinuxのwikiには優れた詳細が含まれています。

4. 結論

論理ボリュームマネージャーは、ベアハードドライブパーティションを使用する場合と比較して、ストレージの柔軟性を大幅に向上させます。

このチュートリアルでは、ルートボリュームを拡張しました。 これは、LVMを使用して作成されたために実行できました。 つまり、LVMで使用するために新しい物理ボリュームにタグを付け、それをボリュームグループに追加して、そのストレージを必要な場所にデプロイできるということです。

LVMを使用する方法は他にもたくさんあります。 しかし、必要に応じてスペースを追加できることを知っていると、命の恩人になる可能性があります。