GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでのLVMの完全な初心者向けガイド

これは、LinuxでのLVM(論理ボリューム管理)の完全な初心者向けガイドです。

このチュートリアルでは、LVMの概念、そのコンポーネント、およびLVMを使用する理由を学習します。

理論的な説明だけにとどまりません。 LinuxでLVMを作成および管理するための実践的な例も示します。

つまり、現実の世界でLVMを使い始めるために必要なすべての情報を提供します。

LinuxのLVMとは何ですか?

LVMはLogicalVolumeManagementの略です。これは、従来のパーティションベースの方法とは別の方法でストレージシステムを管理します。 LVMでは、パーティションを作成する代わりに論理ボリュームを作成し、ディスクパーティションと同じようにファイルシステムにそれらのボリュームを簡単にマウントできます。

前のステートメントの1つの例外は、 / bootに論理ボリュームを使用できないことです。 。これは、GRUB(Linuxで最も一般的なブートローダー)が論理ボリュームから読み取ることができないためです。一方、GRUBのよく知られた代替手段であるsystemd-bootは、vfatファイルシステムのみを読み取るため、これも機能しません。

LVMのコンポーネント

LVMには3つの主要なコンポーネントがあります:

  1. 物理ボリューム
  2. ボリュームグループ
  3. 論理ボリューム

リストは3つのコンポーネントで構成されていますが、パーティションシステムに直接対応しているのはそのうちの2つだけです。次の表はそれを記録しています。

ディスクパーティションシステム LVM
パーティション 論理ボリューム
ディスク ボリュームグループ

物理ボリュームには直接対応するものはありませんが、それについてはすぐに説明します。

なぜ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と同じディレクトリから。

LVMのインストール

コマンドを使用する前に、 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  

ご覧のとおり、使用するデバイスは sdcです。 、 sdd およびsde

LVMには3つの主要なコンポーネントがあると言ったことを覚えていますか?

  1. 物理ボリューム
  2. ボリュームグループ
  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
  1. 初心者向けのLinuxターミナルガイド

  2. Linuxでのプロセス間通信のガイドを紹介します

  3. Linuxでのfirewalldの初心者向けガイド

  1. Linuxパーミッションのビギナーズガイド

  2. Linuxコマンド-完全ガイド

  3. VirtualBox に Linux Mint 19 をインストールする:完全ガイド

  1. ChromebookにLinuxをインストールするための完全ガイド

  2. Linuxでのネットワークトラブルシューティングの初心者向けガイド

  3. Linuxファイルシステムをナビゲートするための初心者向けガイド