これは、LinuxでのLVM(論理ボリューム管理)の完全な初心者向けガイドです。
このチュートリアルでは、LVMの概念、そのコンポーネント、およびLVMを使用する理由を学習します。
理論的な説明だけにとどまりません。 LinuxでLVMを作成および管理するための実践的な例も示します。
つまり、現実の世界でLVMを使い始めるために必要なすべての情報を提供します。
LinuxのLVMとは何ですか?
LVMはLogicalVolumeManagementの略です。これは、従来のパーティションベースの方法とは別の方法でストレージシステムを管理します。 LVMでは、パーティションを作成する代わりに論理ボリュームを作成し、ディスクパーティションと同じようにファイルシステムにそれらのボリュームを簡単にマウントできます。
前のステートメントの1つの例外は、 / boot
に論理ボリュームを使用できないことです。 。これは、GRUB(Linuxで最も一般的なブートローダー)が論理ボリュームから読み取ることができないためです。一方、GRUBのよく知られた代替手段であるsystemd-bootは、vfatファイルシステムのみを読み取るため、これも機能しません。 LVMのコンポーネント
LVMには3つの主要なコンポーネントがあります:
- 物理ボリューム
- ボリュームグループ
- 論理ボリューム
リストは3つのコンポーネントで構成されていますが、パーティションシステムに直接対応しているのはそのうちの2つだけです。次の表はそれを記録しています。
ディスクパーティションシステム | LVM |
---|---|
パーティション | 論理ボリューム |
ディスク | ボリュームグループ |
物理ボリュームには直接対応するものはありませんが、それについてはすぐに説明します。
LVMの主な利点は、ボリュームまたはボリュームグループのサイズ変更がいかに簡単かということです。それはすべての醜い部分(パーティション、rawディスク)を抽象化し、作業するための中央ストレージプールを残します。
パーティションのサイズ変更の恐ろしさを経験したことがある場合は、LVMを使用することをお勧めします。
この記事はただではありません 仮説。途中で実際のコマンドの例を示します。何かを学ぶための最良の方法は、実際にそれを操作することです。そのためには、仮想マシンを使用することをお勧めします。
これを支援するために、VirtualBoxを使用して非常に軽量な仮想マシンを起動するために使用できる簡単なVagrantfileをすでに用意しました。この仮想マシンには、以下のコマンド例に使用できる3つの追加ディスクがあります。
ファイルシステムのどこかにディレクトリを作成し、 Vagrantfile
という名前のファイルに次のファイルを保存します。 。
Vagrant.configure "2" do | config | config.vm.box ="ubuntu / Focal64" config.vm.hostname ="lvm" 3.times {| i | config.vm.disk:disk、サイズ: "5GB"、名前: "drive-#{i}"} config.vm.provider:virtualbox do | machine | machine.memory =1024 machine.cpus =1 machine.customize ["modifyvm"、:id、 "--cpuexecutioncap"、 "50"] endend#vi:set ft =ruby
または、必要に応じて、 wget
を使用できます またはcurl
私の要点からファイルをダウンロードします。
wget https://gist.githubusercontent.com/debdutdeb/98ed1b6aef36885d07ce8247188dfd5e/raw/524259da5dfa2d8750883d01c8159829729e224d/Vagrantfile
VagrantとVirtualBoxがインストールされていることを確認してください。
Vagrantfileを配置したら、環境変数 VAGRANT_EXPERIMENTAL
を設定します。 ディスク
へ 。
export VAGRANT_EXPERIMENTAL =disks
最後に、次のコマンドを使用して仮想マシンを起動します(Vagrantfileと同じディレクトリにいることを確認してください):
vagrant up
マシンが実行されたら、 vagrant ssh
を使用できます SSHで接続し、この記事のサンプルコマンドを実行します。
vagrant destroy
を実行することを忘れないでください 完了したら、Vagrantfileと同じディレクトリから。
コマンドを使用する前に、 lvm2
をインストールする必要があります。 パッケージ。これはすべき 最新のディストリビューションのほとんど、特にUbuntuベースのディストリビューションにプレインストールされています。しかし、それでも、先に進む前にこれについて言及しなければなりませんでした。 lvm2
をインストールするには 、ディストリビューションのドキュメントを参照してください。
LVMを使ったハンズオン
この実践的なウォークスルーのために、40Gルートストレージ(重要ではない)とサイズ5Gの3つの外部ディスクを備えた仮想マシンを構築しました。これらのディスクのサイズは任意です。
[email protected]:〜$ lsblk -o name、size、fstypeNAME SIZE FSTYPEloop0 55.5M squashfsloop1 32.3M squashfsloop270.4Msquashfssda40G└─sda140Gext4sdb10M iso9660sdc 5G sdd 5G sde 5G pre>
ご覧のとおり、使用するデバイスは sdc
です。 、 sdd
およびsde
。
LVMには3つの主要なコンポーネントがあると言ったことを覚えていますか?
- 物理ボリューム
- ボリュームグループ
- 論理ボリューム
それらを1つずつ見る時が来ました。
1。物理ボリューム
LVMについて最初に知っておく必要があるのは、物理ボリュームです。物理ボリュームは、論理ボリュームである抽象化を実現するために使用される原材料または構成要素です。簡単に言うと、物理ボリュームはLVMシステムの論理ユニットです。
物理ボリュームは、rawディスク、またはディスクパーティションのいずれでもかまいません。物理ボリュームの作成と初期化は同じです。どちらも、さらなる操作のためにビルディングブロック(つまり、パーティション、ディスク)を準備しているだけであることを意味します。これはすぐに明らかになります。
ユーティリティ: 物理ボリュームを管理するすべてのユーティリティは、文字 pv
で始まります。 Pの場合 物理的なV olume。例えば。 pvcreate
、 pvchange
、 pvs
、 pvdisplay
など
重要なデータが保存されていない、または誤ってアクセスできるクラウド上の仮想環境またはサーバーを使用している場合を除き、このボックスの後に記載されているものはすべて破壊的です。今すぐ停止することをお勧めします。 物理ボリュームの作成
未加工の非パーティションディスクまたはパーティション自体を使用して、物理ボリュームを作成できます。
前述したように、仮想マシンに3つの外付けドライブが接続されているので、 / dev / sdc
から始めましょう。 。
pvcreate
を使用します 物理ボリュームを作成するコマンド。デバイス名を渡すだけで、他には何も渡されません。
sudo pvcreate / dev / sdc
次のように表示されます:-
[email protected]:〜$ sudo pvcreate / dev/sdc物理ボリューム"/dev/sdc"が正常に作成されました。
次に、 / dev / sdd
をパーティション化します 等しい部分に。任意のツール、 cfdisk
を使用します 、 parted
、 fdisk
など、この仕事を達成するための多くのツールがあります。
[email protected]:〜$ lsblk -o name、size、fstype | grepsddsdd5G├─sdd12.5G└─sdd22.5G
これで、これら2つのパーティションからさらに2つの物理ボリュームを1つのステップですばやく作成し、これらのデバイスの両方を pvcreate
に渡すことができます。 一度に。
sudo pvcreate / dev / sdd1 / dev / sdd2
見てください:-
[email protected]:〜$ sudo pvcreate / dev / sdd1 / dev/sdd2物理ボリューム"/dev/sdd1"が正常に作成されました。物理ボリューム「/dev/sdd2」が正常に作成されました。
利用可能な物理ボリュームの一覧表示
使用可能な物理ボリュームのリストを取得するために使用できるコマンドは、 pvscan
の3つです。 、 pvs
およびpvdisplay
。通常、これらのコマンドに何も渡す必要はありません。
pvscan
:-
[email protected]:〜$ sudo pvscan PV / dev / sdc lvm2 [5.00 GiB] PV / dev / sdd1 lvm2 [2.50 GiB] PV / dev / sdd2 lvm2 [<2.50 GiB]合計:3 [<10.00 GiB] /使用中:0 [0] / VGなし:3 [<10.00 GiB]
pvs
:-
[email protected]:〜$ sudo pvs PV VG Fmt Attr PSize PFree / dev / sdc lvm2 --- 5.00g 5.00g / dev / sdd1 lvm2 --- 2.50g 2.50g / dev / sdd2 lvm2 --- <2.50g <2.50g
pvdisplay
:-
[email protected]:〜$ sudo pvdisplay "/ dev/sdc"は"5.00GiB"の新しい物理ボリュームです---新しい物理ボリューム---PV名/dev/sdcVG名PVサイズ5.00GiB割り当て可能NOPEサイズ0合計PE0無料PE0割り当て済みPE0PV UUID SzSkdD-xKYa-4y7P-teyU-481p-uiQ8-qieMJJ "/ dev/sdd1"は"2.50GiB"の新しい物理ボリュームです- --NEW物理ボリューム---PV名/dev/sdd1VG名PVサイズ2.50GiB割り当て可能NOPEサイズ0合計PE0空きPE0割り当て済みPE0PV UUID 553Iy4-JJ21-LfIw-udtO-j9Cd-7gFS-iXXFVS "/ dev /sdd2"は"<2.50GiB"の新しい物理ボリュームです---新しい物理ボリューム---PV名/dev/sdd2VG名PVサイズ<2.50GiB割り当て可能NOPEサイズ0合計PE0無料PE0割り当て済みPE0PV UUID bf7ghn-QkPm-EUdp-GdyW-shMG-5sMn-VhNtYB
ご覧のとおり、物理ボリュームを一覧表示するだけでなく、これらのコマンドを使用すると、これらのボリュームに関するその他の情報も大量に得られます。
物理ボリュームの削除
pvremove
を使用して物理ボリュームを削除できます 指図。 pvcreate
と同じように 、デバイス(物理ボリュームとして初期化されている)を pvremove
に渡すだけです。 コマンド。
デモンストレーションのために、 / dev / sdd2
を削除します リストから。
sudo pvremove / dev / sdd2
出力はこれと同じである必要があります:-
[email protected]:〜$ sudo pvremove / dev/sdd2物理ボリューム"/dev/sdd2"のラベルが正常に消去されました。
次に、 sudo pvs
を使用して物理ボリュームを一覧表示します。
[email protected]:〜$ sudo pvs PV VG Fmt Attr PSize PFree / dev / sdc lvm2 --- 5.00g 5.00g / dev / sdd1 lvm2 --- 2.50g 2.50g
/ dev / sdd2
もうここにはありません。
2。ボリュームグループ
ボリュームグループは、物理ボリュームのコレクションです。これは、LVMの次のレベルの抽象化です。ボリュームグループは、複数のrawストレージデバイスのストレージ容量を組み合わせたストレージプールです。
ユーティリティ: すべてのボリュームグループユーティリティ名はvg
で始まります 、 Vの略です olume G ループ、例: vgcreate
、 vgs
、 vgrename
など
ボリュームグループの作成
ボリュームグループは、 vgcreate
を使用して作成されます 指図。 vgcreate
の最初の引数 はこのボリュームグループに付ける名前で、残りはストレージプールをバックアップする物理ボリュームのリストです。
sudo vgcreate lvm_tutorial / dev / sdc / dev / sdd1
例:-
[email protected]:〜$ sudo vgcreate lvm_tutorial / dev / sdc / dev/sdd1ボリュームグループ「lvm_tutorial」が正常に作成されました
ボリュームグループの一覧表示
ボリュームグループの一覧表示は、物理ボリュームの一覧表示に似ています。さまざまなレベルの詳細度でさまざまなコマンドを使用できます。 vgdisplay
、 vgscan
およびvgs
。
私は個人的にvgs
が好きです コマンド、 sudo vgs
[email protected]:〜$ sudo vgs VG #PV #LV #SN Attr VSize VFree lvm_tutorial 2 0 0 wz--n- 7.49g 7.49g
vgscan
:-
[email protected]:〜$sudovgscanメタデータタイプlvm2を使用してボリュームグループ"lvm_tutorial"が見つかりました
vgdisplay
:-
[email protected]:〜$ sudo vgdisplay --- VG Name lvm_tutorial System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read / write VG Status resizable MAX LV 0 Cur LV0オープンLV0最大PV0Cur PV 2 Act PV2VGサイズ7.49GiBPEサイズ4.00MiB合計PE1918AllocPE/サイズ0/0フリーPE/サイズ1918/7.49 GiB VG UUID LYVE9P-vY0G-OAW6-an8q- yfBx-rrB1-YU61m1
ボリュームグループに接続されている物理ボリュームの一覧表示
次のコマンドを使用して、特定のボリュームグループに接続されているすべての物理ボリュームを一覧表示できます。-
sudo pvdisplay -S vgname = -C -o pv_name
例:-
[email protected]:〜$ sudo pvdisplay -S vgname =lvm_tutorial -C -o pv_name PV / dev / sdc / dev / sdd1
物理ボリュームの数を取得することもできます。
sudo vgdisplay -S vgname = -C -o pv_count
例:-
[email protected]:〜$ sudo vgdisplay -S vgname =lvm_tutorial -C -o pv_count #PV 3
ボリュームグループの拡張
ボリュームグループの拡張とは、ボリュームグループに物理ボリュームを追加することを意味します。これを行うには、 vgextend
コマンドが使用されます。構文は単純です:-
vgextend
....
lvm_tutorial
を拡張してみましょう / dev / sdd2
によるボリューム 。
sudo vgextend lvm_tutorial / dev / sdd2
出力に焦点を当てます:-
[email protected]:〜$ sudo vgextend lvm_tutorial / dev/sdd2物理ボリューム"/dev/sdd2"が正常に作成されました。ボリュームグループ「lvm_tutorial」が正常に拡張されました
物理ボリュームのセクションで、 / dev / sdd2
を削除することになりました。 物理ボリュームとして使用しますが、パーティションまたはrawディスクは必須 物理ボリュームとして初期化されます。そうしないと、LVMはボリュームグループの一部としてそれを管理できません。したがって、 vgextend
準備/dev / sdd2
ボリュームグループに追加する前に。
念のため、このボリュームグループに接続されている物理ボリュームを一覧表示します。
sudo pvdisplay -S vgname =lvm_tutorial -C -o pv_name
出力:-
[email protected]:〜$ sudo pvdisplay -S vgname =lvm_tutorial -C -o pv_name PV / dev / sdc / dev / sdd1 / dev / sdd2
/ dev / sdd2
期待どおりにリストに追加されました。
ボリュームグループの削減
ボリュームグループを拡張することは別の物理ボリュームを追加することを意味するのと同じように、それを減らすことは1つ以上の物理ボリュームを削除することを意味します。
vgreduce
を使用します これを行うコマンド。一般的な構文は次のとおりです。-
vgreduce ....
物理ボリュームを削除しましょう/dev / sdc
および/dev / sdd1
。
sudo vgreduce lvm_tutorial / dev / sdc / dev / sdd1
例:-
[email protected]:〜$ sudo vgreduce lvm_tutorial / dev / sdc / dev/sdd1ボリュームグループ「lvm_tutorial」から「/dev/sdc」を削除ボリュームグループ「lvm_tutorial」から「/dev/sdd1」を削除"
ボリュームグループにアクティブな論理ボリュームがある場合、このように減らすことはできません。
物理ボリュームを再度リストします。
sudo pvdisplay -S vgname =lvm_tutorial -C -o pv_name
出力:-
[email protected]:〜$ sudo pvdisplay -S vgname =lvm_tutorial -C -o pv_name PV / dev / sdd2
これらの2つの物理ボリュームはなくなりました。
この記事の残りの部分のために、これら2つの物理ボリュームを追加し直します。
sudo vgextend lvm_tutorial / dev / sdc / dev / sdd1
ボリュームグループの削除
vgremove
を使用して論理ボリュームを削除できます コマンド。
sudo vgremove lvm_tutorial
今すぐこのコマンドを実行しないでください。実行しないと、ボリュームグループを再作成する必要があります。テストしたい場合は、この記事の最後で実行してください。
3。論理ボリューム
これは、主に使用するものです。論理ボリュームはパーティションのようなものですが、rawディスクの上に配置されるのではなく、ボリュームグループの上に配置されます。できます、
- 必要なファイルシステムで論理ボリュームをフォーマットします。
- 必要なファイルシステムの任意の場所にマウントします。
このセクションでは、学習します。
- 論理ボリュームを作成する方法。
- 論理ボリュームでの一般的な操作。
- 論理ボリュームのサイズ変更。
- 論理ボリュームの削除。
ユーティリティ: すべてのボリュームグループユーティリティ名はlv
で始まります 、 Lの略です ogical V olume。例えば lvcreate
、 lvs
、 lvreduce
などvgcreate
、 vgs
、 vgrename
など
論理ボリュームの作成
論理ボリュームは、 lvcreate
を使用して作成されます 指図。一般的に使用される構文は次のようになります
sudo lvcreate -L -n
分解させてください:-
-
-L
オプションは、新しい論理ボリュームのサイズ用です。末尾に「GB」、「MB」、または「KB」が付いた任意の整数を使用できます。例えば。 「1GB」。 -
-n
オプションは、この論理ボリュームに名前を付けるためのものです。 - 最後に、この論理ボリュームが含まれるボリュームグループの名前を渡す必要があります。したがって、論理ボリュームにサイズを提供するときは、ボリュームグループに使用可能なスペースがあることを確認してください。
仮想マシンで次のコマンドを実行します。-
sudo lvcreate -L 5GB -n lv1 lvm_tutorial
出力例:-
[email protected]:〜$ sudo lvcreate -L 5GB -nlv1lvm_tutorial論理ボリューム"lv1"が作成されました。
論理ボリュームでの一般的な操作
前に述べたように、ファイルシステムを論理ボリュームに配置することも、ファイルシステムの任意の場所にマウントすることもできます。
作成すると、論理ボリュームは / dev / /
にあります。 道。たとえば、この場合、ボリュームは / dev / lvm_tutorial / lv1
にあります。 。
[email protected]:〜$ ls -l / dev / lvm_tutorial / lv1 lrwxrwxrwx 1 root root 7 May 17 02:09 / dev / lvm_tutorial / lv1-> ../dm-0
>
これで、他のパーティションと同じように使用できます。 ext4でフォーマットします
sudo mkfs.ext4 / dev / lvm_tutorial / lv1
/ mnt
などの現在のディレクトリ構造のどこかにマウントします 、
sudo mount -t ext4 / dev / lvm_tutorial / lv1 / mnt
論理ボリュームのサイズ変更
lvextend
を使用して論理ボリュームを拡張できます コマンドを実行し、 lvreduce
を使用してサイズを縮小します 指図。または、単一のコマンド lvresize
を使用できます 両方のタスクを実行します。
まず、ボリュームグループにスペースが残っているかどうかを確認しましょう。
sudo vgs -S vgname =lvm_tutorial -o vg_free
出力:-
[email protected]:〜$ sudo vgs -S vgname =lvm_tutorial -o vg_free VFree <4.99g
出力によると、スペースが残っているので、ボリュームサイズを2GB増やしましょう。
論理ボリュームはまだ/mnt
にマウントされていることに注意してください 。
[email protected]:〜$マウント| grep'/ mnt' / dev / mapper / lvm_tutorial-lv1 on / mnt type ext4(rw、relatime)
次のコマンドを使用して、ボリュームのサイズを変更します。-
sudo lvresize -L + 2GB lvm_tutorial / lv1
一般的な構文は次のようなものです:-
lvresize -L [+ |-] [Size] /
-L
の後の記号+または- ボリュームのサイズを大きくしようとしているか、小さくしようとしているかによって異なります。
ボリュームサイズが大きくなった後、ファイルシステムのサイズも変更する必要があります。 ext4の場合、使用するコマンドは resize2fs
です。 。
sudo resize2fs / dev / lvm_tutorial / lv1
出力:-
[email protected]:〜$ sudo resize2fs /dev/lvm_tutorial/lv1resize2fs 1.45.5(07-Jan-2020)/ dev / lvm_tutorial/lv1のファイルシステムが/mntにマウントされています。オンラインでのサイズ変更requiredold_desc_blocks=1、new_desc_blocks =1 / dev / lvm_tutorial / lv1のファイルシステムの長さは1835008(4k)ブロックになりました。
すべてのファイルシステムがホットサイズ変更をサポートしているわけではありません。Ext4とXFSはサポートされているものの1つです。これらに固執することをお勧めします。
論理ボリュームの削減は少し複雑な作業であり、この記事ではこれについては説明しません。このボリュームのサイズを1GB削減します。
論理ボリュームの削除
lvremove
を使用して論理ボリュームを削除します 指図。コマンド構文は次のとおりです。-
lvremove /
仮想マシンで次のコマンドを実行します:-
sudo lvremove lvm_tutorial / lv1
出力:-
[email protected]:〜$ sudo lvremove lvm_tutorial /lv1アクティブな論理ボリュームlvm_tutorial/lv1を本当に削除して破棄しますか? [y / n]:y論理ボリューム"lv1"が正常に削除されました
論理ボリューム、物理ボリューム、およびボリュームグループで実行できる操作は他にも多数ありますが、それらすべてを1つの記事に書き込むことはできません。
もう1枚のディスク/dev / sde
を残しました 仮想マシンで。それを使用して、この記事のいくつかのコマンドを練習し、新しいボリュームグループを作成し、既存のボリュームグループを拡張して、練習するだけです。
この記事がお役に立てば幸いです。今後さらに詳しく知りたい場合は、下のコメントセクションでお知らせください。
Linux