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