**LVM **または論理ボリューム管理は、ユーザーがコンポーネントストレージデバイスの物理レイアウトを集約および抽象化できるようにするストレージデバイス管理テクノロジであり、これにより、より簡単で柔軟な管理を実現します。デバイスマッパーのLinuxカーネルフレームワークを使用すると、LVM2の現在のイテレーションを使用して、既存のストレージデバイスをグループに収集し、必要に応じて結合されたスペースから論理ユニットを割り当てることができます。
このガイドでは、LVMを使用してストレージデバイスを管理する方法を紹介します。ボリュームと潜在的なターゲットに関する情報を表示する方法、さまざまなタイプのボリュームを作成および破棄する方法、およびサイズ変更または変換によって既存のボリュームを変更する方法を示します。これらの操作を示すために、Ubuntu18.04サーバーを使用します。
フォローアップするには、Ubuntu18.04サーバーにアクセスできる必要があります。管理タスクに sudo
権限を設定した非rootユーザーが必要です。サーバーをお持ちでない学生は[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使用して実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。
LVMのコンポーネントと概念に精通し、基本的なLVM構成をテストします。
準備ができたら、 sudo
ユーザーでサーバーにログインしてください。
システム内のさまざまなLVMコンポーネントに関する情報を簡単に取得できることが重要です。幸い、LVMツールスイートには、LVMスタックの各レイヤーに関する情報を表示するための多数のツールが用意されています。
LVMが管理する可能性のあるすべての使用可能なブロックストレージデバイスを表示するには、次の lvmdiskscan
コマンドを使用します。
sudo lvmdiskscan
/dev/sda [200.00 GiB]/dev/sdb [100.00 GiB]2 disks
2 partitions
0 LVM physical volume whole disks
0 LVM physical volumes
LVM物理ボリュームとして使用できるデバイスを確認できます。
これは、LVMで使用する新しいストレージデバイスを追加するときの最初のステップになる場合があります。
ヘッダーをストレージデバイスに書き込み、LVMコンポーネントとして自由に使用できることを示します。これらのヘッダーを持つデバイスは、物理ボリュームと呼ばれます。
-l
オプションを選択して lvmdiskscan
を使用すると、システム上のすべての物理デバイスを表示し、物理ボリュームのみを返すことができます。
sudo lvmdiskscan -l
WARNING: only considering LVM devices
/dev/sda [200.00 GiB] LVM physical volume
/dev/sdb [100.00 GiB] LVM physical volume
2 LVM physical volume whole disks
0 LVM physical volumes
pvscan
コマンドは、使用可能なすべてのデバイスでLVM物理ボリュームを検索するため、上記のコマンドと非常によく似ています。出力形式は少し異なり、少量の追加情報が含まれています。
sudo pvscan
PV /dev/sda VG LVMVolGroup lvm2 [200.00 GiB /0 free]
PV /dev/sdb VG LVMVolGroup lvm2 [100.00 GiB /10.00 GiB free]
Total:2[299.99 GiB]/in use:2[299.99 GiB]/in no VG:0[0]
詳細が必要な場合は、 pvs
コマンドと pvdisplay
コマンドの方が適しています。
pvs
コマンドは高度に構成可能であり、さまざまな形式で情報を表示できます。出力は厳密に制御できるため、スクリプトや自動化が必要な場合によく使用されます。その基本的な出力は、以前のコマンドと同様に、有用で明確な要約を提供します。
sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda LVMVolGroup lvm2 a--200.00g 0/dev/sdb LVMVolGroup lvm2 a--100.00g 10.00g
より詳細で人間が読める出力については、通常、 pvdisplay
コマンドの方が適しています。
sudo pvdisplay
- - - Physical volume ---
PV Name /dev/sda
VG Name LVMVolGroup
PV Size 200.00 GiB / not usable 4.00 MiB
Allocatable yes(but full)
PE Size 4.00 MiB
Total PE 51199
Free PE 0
Allocated PE 51199
PV UUID kRUOyU-0ib4-ujPh-kAJP-eeQv-ztRL-4EkaDQ
- - - Physical volume ---
PV Name /dev/sdb
VG Name LVMVolGroup
PV Size 100.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 25599
Free PE 2560
Allocated PE 23039
PV UUID udcuRJ-jCDC-26nD-ro9u-QQNd-D6VL-GEIlD7
ご覧のとおり、通常、 pvdisplay
コマンドは、物理ボリュームに関する詳細情報を取得するための最も簡単なコマンドです。
各ボリュームにマップされている論理エクステントを検出するには、 -m
オプションを pvdisplay
に渡します。
sudo pvdisplay -m
- - - Physical volume ---
PV Name /dev/sda
VG Name LVMVolGroup
PV Size 200.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 51199
Free PE 38395
Allocated PE 12804
PV UUID kRUOyU-0ib4-ujPh-kAJP-eeQv-ztRL-4EkaDQ
- - - Physical Segments ---
Physical extent 0 to 0:
Logical volume /dev/LVMVolGroup/db_rmeta_0
Logical extents 0 to 0
Physical extent 1 to 5120:
Logical volume /dev/LVMVolGroup/db_rimage_0
Logical extents 0 to 5119
...
これは、管理のためにどのデータがどの物理ディスクに保存されているかを判別するときに役立ちます。
LVMには、ボリュームグループに関する情報を表示するためのツールも多数あります。
vgscan
コマンドを使用してシステムをスキャンし、使用可能なボリュームグループを見つけることができます。また、必要に応じてキャッシュファイルを再構築します。これは、ボリュームグループを新しいシステムにインポートする場合に適したコマンドです。
sudo vgscan
Output Reading all physical volumes. This may take a while...
Found volume group "LVMVolGroup" using metadata type lvm2
このコマンドは多くの情報を出力しませんが、システムで使用可能なすべてのボリュームグループを見つけることができるはずです。詳細を表示するには、 vgs
および vgdisplay
コマンドを使用できます。
物理ボリュームの対応物と同様に、 vgs
コマンドは用途が広く、さまざまな形式で大量の情報を表示できます。その出力は簡単に操作できるため、スクリプトや自動化が必要な場合によく使用されます。たとえば、いくつかの便利な出力変更は、物理デバイスと論理ボリュームのパスを表示することです。
sudo vgs -o +devices,lv_path
VG #PV #LV #SN Attr VSize VFree Devices Path
LVMVolGroup 240 wz--n-299.99g 10.00g /dev/sda(0)/dev/LVMVolGroup/projects
LVMVolGroup 240 wz--n-299.99g 10.00g /dev/sda(2560)/dev/LVMVolGroup/www
LVMVolGroup 240 wz--n-299.99g 10.00g /dev/sda(3840)/dev/LVMVolGroup/db
LVMVolGroup 240 wz--n-299.99g 10.00g /dev/sda(8960)/dev/LVMVolGroup/workspace
LVMVolGroup 240 wz--n-299.99g 10.00g /dev/sdb(0)/dev/LVMVolGroup/workspace
より詳細で人間が読める出力については、通常、 vgdisplay
コマンドが最良の選択です。 -v
フラグを追加すると、ボリュームグループを構築する物理ボリューム、およびボリュームグループを使用して作成された論理ボリュームに関する情報も提供されます。
sudo vgdisplay -v
Using volume group(s) on command line.--- Volume group ---
VG Name LVMVolGroup
...
- - - Logical volume ---
LV Path /dev/LVMVolGroup/projects
...
- - - Logical volume ---
LV Path /dev/LVMVolGroup/www
...
- - - Logical volume ---
LV Path /dev/LVMVolGroup/db
...
- - - Logical volume ---
LV Path /dev/LVMVolGroup/workspace
...
- - - Physical volumes ---
PV Name /dev/sda
...
PV Name /dev/sdb
...
vgdisplay
コマンドは、LVMスタックのさまざまな要素に関する情報を結び付けることができるので便利です。
論理ボリュームに関する情報を表示するために、LVMには一連の関連ツールがあります。
他のLVMコンポーネントと同様に、 lvscan
オプションはシステムをスキャンし、検出した論理ボリュームに関する最小限の情報を出力します。
sudo lvscan
ACTIVE '/dev/LVMVolGroup/projects'[10.00 GiB] inherit
ACTIVE '/dev/LVMVolGroup/www'[5.00 GiB] inherit
ACTIVE '/dev/LVMVolGroup/db'[20.00 GiB] inherit
ACTIVE '/dev/LVMVolGroup/workspace'[254.99 GiB] inherit
詳細については、 lvs
コマンドは柔軟性があり、強力で、スクリプトで簡単に使用できます。
sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
db LVMVolGroup -wi-ao----20.00g
projects LVMVolGroup -wi-ao----10.00g
workspace LVMVolGroup -wi-ao----254.99g
www LVMVolGroup -wi-ao----5.00g
ストライプの数と論理ボリュームのタイプを理解するには、次の --segments
オプションを使用します。
sudo lvs --segments
LV VG Attr #Str Type SSize
db LVMVolGroup rwi-a-r---2 raid1 20.00g
mirrored_vol LVMVolGroup rwi-a-r---3 raid1 10.00g
test LVMVolGroup rwi-a-r---3 raid5 10.00g
test2 LVMVolGroup -wi-a-----2 striped 10.00g
test3 LVMVolGroup rwi-a-r---2 raid1 10.00g
最も読みやすい出力は、 lvdisplay
コマンドによって生成されます。
-m
フラグが追加されると、ツールは論理ボリュームがどのように分解および分散されるかについての情報も表示します。
sudo lvdisplay -m
- - - Logical volume ---
LV Path /dev/LVMVolGroup/projects
LV Name projects
VG Name LVMVolGroup
LV UUID IN4GZm-ePJU-zAAn-DRO3-1f2w-qSN8-ahisNK
LV Write Access read/write
LV Creation host, time lvmtest,2016-09-0921:00:03+0000
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
- - - Segments ---
Logical extents 0 to 2559:
Type linear
Physical volume /dev/sda
Physical extents 0 to 2559
...
この例では、出力から下に向かって、 / dev / LVMVolGroup / projects
論理ボリュームが完全に / dev / sda
物理ボリュームに含まれていることがわかります。この情報は、基になるデバイスを削除する必要があり、データを特定の場所に移動する場合に役立ちます。
このセクションでは、物理ボリューム、ボリュームグループ、および論理ボリュームを作成および拡張する方法について説明します。
LVMでストレージデバイスを使用するには、最初に物理ボリュームとしてマークする必要があります。これは、LVMがボリュームグループ内のデバイスを使用できることを指定します。
まず、 lvmdiskscan
コマンドを使用して、LVMが表示および使用できるすべてのブロックデバイスを検索します。
sudo lvmdiskscan
/dev/sda [200.00 GiB]/dev/sdb [100.00 GiB]2 disks
2 partitions
0 LVM physical volume whole disks
0 LVM physical volumes
ここでは、LVM物理ボリュームでの変換に適したデバイスを確認できます。
警告:LVMで使用するデバイスに、重要なデータが書き込まれていないことを再確認してください。 LVMでこれらのデバイスを使用すると、現在のコンテンツが上書きされます。サーバーに重要なデータが既にある場合は、続行する前にバックアップしてください。
ストレージデバイスをLVM物理ボリュームとしてマークするには、 pvcreate
を使用します。一度に複数のデバイスを渡すことができます。
sudo pvcreate /dev/sda /dev/sdb
これにより、すべてのターゲットデバイスにLVMヘッダーが書き込まれ、それらがLVM物理ボリュームとしてマークされます。
LVM物理ボリュームから新しいボリュームグループを作成するには、 vgcreate
コマンドを使用します。ボリュームグループ名に続けて、少なくとも1つのLVM物理ボリュームを指定する必要があります。
sudo vgcreate volume_group_name /dev/sda
この例では、単一の初期物理ボリュームを使用してボリュームグループを作成します。必要に応じて、作成時に複数の物理ボリュームを渡すことができます。
sudo vgcreate volume_group_name /dev/sda /dev/sdb /dev/sdc
通常、サーバーごとに必要なボリュームグループは1つだけです。 LVMによって管理されるすべてのストレージをプールに追加して、そこから論理ボリュームを割り当てることができます。
複数のボリュームグループが必要になる理由の1つは、ボリュームごとに異なるエクステントサイズを使用する必要があると感じる場合です。通常、範囲サイズを設定する必要はありません(ほとんどの場合、デフォルトのサイズは4Mです)が、必要に応じて、 -s
オプションを渡すことでボリュームグループを作成できます。
suod vgcreate -s 8M volume_group_name /dev/sda
これにより、8Mの範囲のサイズの新しいボリュームグループが作成されます。
他の物理ボリュームを追加してボリュームグループを拡張するには、 vgextend
コマンドを使用します。このコマンドは、ボリュームグループに続いて、追加する物理ボリュームを取得します。必要に応じて、一度に複数のデバイスを渡すことができます。
sudo vgextend volume_group_name /dev/sdb
ストレージプールの使用可能な容量を拡張するために、物理ボリュームがボリュームグループに追加されます。
ボリュームグループストレージプールから論理ボリュームを作成するには、 lvcreate
コマンドを使用します。 -L
オプションを使用して論理ボリュームのサイズを指定し、オプションを使用して名前 -n
を指定し、ボリュームグループを渡してスペースを割り当てます。
たとえば、 LVMVolGroup
ボリュームグループから test
という名前の10G論理ボリュームを作成するには、次のように入力します。
sudo lvcreate -L 10G -n test LVMVolGroup
ボリュームグループにボリューム容量を収容するのに十分な空き領域がある場合、新しい論理ボリュームが作成されます。
ボリュームグループの残りの空き領域を使用してボリュームを作成する場合は、 vgcreate
コマンドを -n
命名オプションとともに使用し、前と同じようにボリュームグループを渡します。サイズを渡す代わりに、 -l 100%FREE
オプションを使用します。このオプションは、ボリュームグループの残りのエクステントを使用して論理ボリュームを形成します。
sudo lvcreate -l 100%FREE -n test2 LVMVolGroup
これにより、論理ボリュームの残りのスペースが使い果たされます。
いくつかの詳細オプションを使用して、論理ボリュームを作成することもできます。検討する可能性のあるいくつかのオプションは次のとおりです。
**linear **:デフォルトのタイプ。使用される基本的な物理デバイス(複数の場合)は、単純に1つずつ接続されます。
ストライプ:RAID 0と同様に、ストライプトポロジはデータをブロックに分割し、ラウンドロビン方式で基盤となる物理ボリューム全体に分散します。これによりパフォーマンスは向上しますが、データホールが大きくなる可能性があります。これには、以下で説明する -i
オプションと少なくとも2つの物理ボリュームが必要です。
**raid1 **:ミラーリングされたRAID1ボリュームを作成します。デフォルトでは、ミラーには2つのコピーがありますが、以下で説明する -m
オプションを使用してさらに多くのコピーを指定できます。少なくとも2つの物理ボリュームが必要です。
**raid5 **:RAID5ボリュームを作成します。少なくとも3つの物理ボリュームが必要です。
**raid6 **:RAID6ボリュームを作成します。少なくとも4つの物理ボリュームが必要です。
**- m **:保持する他のデータのコピー数を指定します。値「1」は、追加のコピー、合計2セットのデータを維持することを指定します。
**- i **:維持するストライプの数を指定します。これは striped
タイプに必要であり、他の特定のRAIDオプションのデフォルトの動作を変更できます。
**- s **:操作で、新しい独立した論理ボリュームではなく、既存の論理ボリュームからスナップショットを作成する必要があることを指定します。
これらのオプションのいくつかの例を示して、それらが一般的にどのように使用されるかを示します。
ストライプボリュームを作成するには、少なくとも2つのストリップを指定する必要があります。このトポロジとストライプ数には、使用可能な容量を持つ少なくとも2つの物理ボリュームが必要です。
sudo lvcreate --type striped -i 2-L 10G -n striped_vol LVMVolGroup
ミラーリングされたボリュームを作成するには、 raid1
タイプを使用します。 3セット以上のデータが必要な場合は、 -m
オプションを使用してください。この例では、 -m 2
を使用して、合計3セットのデータを作成します(LVMは、2つのミラーを備えた元のデータセットとしてカウントします)。成功するには、少なくとも3つの物理ボリュームが必要です。
sudo lvcreate --type raid1 -m 2-L 20G -n mirrored_vol LVMVolGroup
ボリュームのスナップショットを作成するには、ボリュームグループではなく、元の論理ボリュームをスナップショットに提供する必要があります。スナップショットは最初は多くのスペースを占有しませんが、追跡される論理ボリュームへの変更とともに大きくなります。このプロセスで使用されるサイズは、スナップショットの最大サイズです(このサイズを超えるスナップショットは破損して使用できませんが、容量に近いスナップショットは拡張できます)。
sudo lvcreate -s -L 10G -n snap_test LVMVolGroup/test
注:論理ボリュームをスナップショットの時点に復元するには、次の lvconvert--merge
コマンドを使用します。
sudo lvconvert --merge LVMVolGroup/snap_test
これにより、スナップショットの起点がスナップショットが作成されたときの状態に復元されます。
ご覧のとおり、論理ボリュームの動作方法を大幅に変更できるオプションはたくさんあります。
LVMの主な利点の1つは、論理ボリュームを構成するときに提供される柔軟性です。システムを停止することなく、ボリュームの数やサイズを簡単に調整できます。
既存の論理ボリュームのサイズを増やすには、 lvresize
コマンドを使用します。 -L
フラグを使用して、新しいサイズを指定します。 「+」サイズを追加して、相対サイズを使用することもできます。この場合、LVMは論理ボリュームのサイズを指定された量だけ増やします。論理ボリュームで使用中のファイルシステムのサイズを自動的に調整するには、 --resizefs
フラグを渡します。
拡張する論理ボリュームの名前を正しく指定するには、ボリュームグループ、スラッシュ、論理ボリュームの順に指定する必要があります。
sudo lvresize -L +5G --resizefs LVMVolGroup/test
この例では、 LVMVolGroup
ボリュームグループの論理ボリュームのファイルシステムと test
論理ボリュームのファイルシステムが5G増加します。
ファイルシステムの拡張を手動で処理する場合は、 --resizefs
オプションを削除して、ファイルシステムのネイティブ拡張ユーティリティを使用できます。たとえば、Ext4ファイルシステムの場合、次のように入力できます。
sudo lvresize -L +5G LVMVolGroup/test
sudo resize2fs /dev/LVMVolGroup/test
これにより、同じ結果が得られます。
容量を減らすとデータが失われる可能性があるため、通常、コンポーネントを減らしたり削除したりして使用可能な容量を減らすプロセスには、さらに多くの時間がかかります。
論理ボリュームを縮小するには、最初にデータをバックアップする必要があります。これにより使用可能な容量が減少するため、エラーによってデータが失われる可能性があります。
準備ができたら、現在使用されているスペースを確認します。
df -h
Filesystem Size Used Avail Use% Mounted on
... /dev/mapper/LVMVolGroup-test 4.8G 521M 4.1G 12%/mnt/test
この例では、現在使用されているスペースが521Mよりわずかに大きいように見えます。このオプションを使用すると、ボリュームをどこまで減らすことができるかを見積もることができます。
次に、ファイルシステムをアンマウントします。拡張とは異なり、ファイルシステムの縮小はアンインストール時に実行する必要があります。
cd ~
sudo umount /dev/LVMVolGroup/test
アンインストール後、ファイルシステムをチェックして、すべてが正常であることを確認します。 -t
オプションを使用して、ファイルシステムタイプを渡します。ファイルシステムが正常であっても、 -f
を使用して以下を確認します。
sudo fsck -t ext4 -f /dev/LVMVolGroup/test
ファイルシステムを確認した後、ファイルシステムのネイティブツールを使用してファイルシステムのサイズを小さくすることができます。 Ext4ファイルシステムの場合、これは resize2fs
コマンドになります。ファイルシステムの最終サイズを転送します。
警告:ここで最も安全なオプションは、現在の使用量よりも大きい最終サイズを選択することです。データの損失を防ぎ、バックアップが適切に行われていることを確認するために、ある程度のバッファスペースを確保してください。
sudo resize2fs -p /dev/LVMVolGroup/test 3G
操作が完了したら、同じサイズの論理ボリュームを -L
フラグを介して lvresize
コマンドに渡し、論理ボリュームのサイズを調整します。
sudo lvresize -L 3G LVMVolGroup/test
データ損失の可能性についての警告が表示されます。準備ができたら、** y **と入力して続行します。
論理ボリュームを減らした後、ファイルシステムを再度確認します。
sudo fsck -t ext4 -f /dev/LVMVolGroup/test
すべてが正常な場合は、通常のマウントコマンドを使用してファイルシステムを再マウントできます。
sudo mount /dev/LVMVolGroup/test /mnt/test
これで、論理ボリュームが適切なサイズに縮小されます。
論理ボリュームが不要になった場合は、 lvremove
コマンドを使用して削除できます。
まず、現在マウントされている論理ボリュームをアンマウントします。
cd ~
sudo umount /dev/LVMVolGroup/test
次に、次のコマンドを入力して論理ボリュームを削除します。
sudo lvremove LVMVolGroup/test
手順の確認を求められます。論理ボリュームを削除する場合は、** y **と入力します。
ボリュームグループ全体(その中のすべての論理ボリュームを含む)を削除するには、 vgremove
コマンドを使用します。
ボリュームグループを削除する前に、通常、上記の手順を使用して論理ボリュームを削除する必要があります。少なくとも、ボリュームグループに含まれる論理ボリュームがマウント解除されていることを確認する必要があります。
sudo umount /dev/LVMVolGroup/www
sudo umount /dev/LVMVolGroup/projects
sudo umount /dev/LVMVolGroup/db
その後、ボリュームグループ名を vgremove
コマンドに渡すことで、ボリュームグループ全体を削除できます。
sudo vgremove LVMVolGroup
ボリュームグループを削除するかどうかを確認するように求められます。まだ論理ボリュームがある場合は、削除する前に別の確認プロンプトが表示されます。
LVM管理から物理ボリュームを削除する場合、必要なプロセスは、LVMが現在デバイスを使用しているかどうかによって異なります。
物理ボリュームを使用している場合は、デバイスの物理エクステントを別の場所に移動する必要があります。これには、ボリュームグループに物理エクステントを処理するのに十分な他の物理ボリュームが必要です。より複雑な論理ボリュームタイプを使用する場合、トポロジを収容するのに十分な空き領域がある場合でも、他の物理ボリュームが必要になる場合があります。
ボリュームグループに物理エクステントを処理するのに十分な物理ボリュームがある場合は、次のように入力して、削除する物理ボリュームからそれらを移動します。
sudo pvmove /dev/sda
ボリュームのサイズと転送するデータの量によっては、このプロセスに時間がかかる場合があります。
エクステントをピアボリュームに再配置した後、次のように入力して、ボリュームグループから物理ボリュームを削除できます。
sudo vgreduce LVMVolGroup /dev/sda
これにより、空になった物理ボリュームがボリュームグループから削除されます。これが完了したら、次のように入力して、ストレージデバイスから物理ボリュームラベルを削除できます。
sudo pvremove /dev/sda
これで、削除したストレージデバイスを他の目的に使用したり、システムから完全に削除したりできるようになります。
これまでのところ、LVMを使用してUbuntu18.04でストレージデバイスを管理する方法を理解している必要があります。既存のLVMコンポーネントのステータスに関する情報を取得する方法、LVMを使用してストレージシステムを構成する方法、およびニーズに合わせてボリュームを変更する方法を知っておく必要があります。これらの概念を安全な環境でテストして、それらがどのように組み合わされているかをよりよく理解できます。
その他のUbuntuチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。
参照:「LVMを使用してUbuntu18.0でストレージデバイスを管理する方法
Recommended Posts