Ubuntu 18.04でストレージデバイスを管理するためにLVMを使用する方法
以下の文章を日本語で言い換えてください、一つのオプションだけで構いません:
イントロダクション
論理ボリューム管理、またはLVMは、ストレージデバイスの管理技術であり、ユーザーに物理的なストレージデバイスの配置をプール化し抽象化する力を与え、柔軟な管理を可能にします。デバイスマッパーLinuxカーネルフレームワークを使用したLVM2は、既存のストレージデバイスをグループ化し、必要に応じて結合されたスペースから論理ユニットを割り当てることができます。
このチュートリアルでは、ボリュームや潜在的なターゲットの情報を表示することによって、LVMの管理方法を学びます。また、さまざまなタイプのボリュームを作成したり削除したり、既存のボリュームをサイズ変更や変換する方法も学びます。
前提条件
進行するためには、Ubuntu 18.04サーバーに構成された、sudo特権を持つ非ルートユーザーが必要です。はじめるためには、当社のUbuntu 18.04初期サーバーセットアップガイドに従ってください。
また、もしLVMのコンポーネントや概念に馴染みがない場合は、さらなる情報についてはLVM入門ガイドをご確認ください。
準備ができたら、sudoユーザーでサーバーにログインしてください。
ステップ1 – 物理ボリューム、ボリュームグループ、および論理ボリュームに関する情報の表示
システム上のさまざまなLVMコンポーネントに関する情報を取得することは、物理的および論理的ボリュームの管理に不可欠です。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オプションを指定してください。
- 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
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 2 4 0 wz–n- 299.99g 10.00g /dev/sda(0) /dev/LVMVolGroup/projects LVMVolGroup 2 4 0 wz–n- 299.99g 10.00g /dev/sda(2560) /dev/LVMVolGroup/www LVMVolGroup 2 4 0 wz–n- 299.99g 10.00g /dev/sda(3840) /dev/LVMVolGroup/db LVMVolGroup 2 4 0 wz–n- 299.99g 10.00g /dev/sda(8960) /dev/LVMVolGroup/workspace LVMVolGroup 2 4 0 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-09 21: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の物理ボリューム内に含まれています。この情報は、基盤となるデバイスを削除し、データを特定の場所に移動する必要がある場合に役立ちます。
ステップ2 – LVMコンポーネントの作成または拡張
このセクションでは、物理ボリューム、ボリュームグループ、および論理ボリュームを作成および拡張する方法について説明します。
生のストレージデバイスから物理ボリュームを作成する
ストレージデバイスを 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の物理ボリュームに変換するのに適したデバイスに注意してください。
Warning
複数のデバイスを一度に指定して、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つのサーバーには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
これは、論理ボリューム内の残りのスペースを使用する必要があります。
高度なオプションを使用して論理ボリュームを作成する
いくつかの高度なオプションを使用して、論理ボリュームを作成することができます。考慮したいいくつかのオプションは次のとおりです。
- –type: This specifies the type of logical volume, which determines how the logical volume is allocated. Some available types will not be available if there are not enough underlying physical volumes to correctly create the chosen topography. Some of the most common types are:linear: The default type. The underlying physical devices used, if more than one, will be appended to each other, one after the other.
striped: Similar to RAID 0, the striped topology divides data into chunks and spread in a round-robin fashion across the underlying physical volumes. This can lead to performance improvements, but might lead to greater data vulnerability. This requires the -i option and a minimum of two physical volumes.
raid1: Creates a mirrored RAID 1 volume. By default, the mirror will have two copies, but more can be specified by the -m. This requires a minimum of two physical volumes.
raid5: Creates a RAID 5 volume. This requires a minimum of three physical volumes.
raid6: Creates a RAID 6 volume. This requires a minimum of four physical volumes. - -m: Specifies the number of additional copies of data to keep. A value of “1” specifies that one additional copy is maintained, for a total of two sets of data.
- -i: Specifies the number of stripes that should be maintained. This is required for the striped type, and can modify the default behavior of some of the other RAID options.
- -s: Specifies that the action should create a snapshot from an existing logical volume instead of a new independent logical volume.
デモンストレーションするために、まずストライプ化ボリュームを作成します。この方法では少なくとも2つのストライプを指定する必要があります。このトポロジーとストライプ数には、容量が利用可能な少なくとも2つの物理ボリュームが必要です。
- sudo lvcreate –type striped -i 2 -L 10G -n striped_vol LVMVolGroup
ミラーボリュームを作成するには、raid1のタイプを使用します。2つ以上のデータセットが必要な場合は、-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
Note
sudo lvconvert –merge LVMVolGroup/snap_test
これにより、スナップショットが撮影された時点の状態まで、スナップショットの元の状態に戻されます。
論理ボリュームの機能を劇的に変えることができる多くのオプションがあります。
論理ボリュームのサイズを拡大する
LVMの主な利点の1つは、論理ボリュームのプロビジョニングにおける柔軟性です。システムを停止することなく、ボリュームの数やサイズを即座に調整することができます。
既存の論理ボリュームのサイズを拡大するには、lvresizeコマンドを使用します。新しいサイズを指定するために-Lフラグを使用します。また、相対サイズを使用する場合は、+サイズを追加することもできます。その場合、LVMは指定された量だけ論理ボリュームのサイズを増やします。論理ボリュームで使用されているファイルシステムを自動的にリサイズするには、–resizefsフラグを渡します。
正しく論理ボリュームの名前を拡張するためには、ボリュームグループの後にスラッシュを加えて論理ボリュームを指定する必要があります。
- sudo lvresize -L +5G –resizefs LVMVolGroup/test
この例では、LVMVolGroupボリュームグループのテスト論理ボリュームの論理ボリュームとファイルシステムの両方が5G増加します。
ファイルシステムの拡張を手動で行いたい場合は、 –resizefs オプションを取り除き、その後ファイルシステムのユーティリティを使用してください。たとえば、Ext4 ファイルシステムの場合は、以下のように記述してください。
- sudo lvresize -L +5G LVMVolGroup/test
- sudo resize2fs /dev/LVMVolGroup/test
これは同じ結果を返します。 (Kore wa onaji kekka o kaeshimasu.)
ステップ3 – LVMのコンポーネントを削除またはサイズダウンする
利用可能な容量を縮小する手順は、データの喪失を引き起こす可能性があるため、通常はサイズを縮小またはコンポーネントを削除するといったやや複雑な手続きが必要です。
論理ボリュームのサイズを縮小する
論理ボリュームを縮小するためには、まずデータをバックアップする必要があります。利用可能な容量が減少するため、ミスがあるとデータの損失を引き起こす可能性があります。
準備ができたら、現在使用されているスペースの確認をしてください。
- 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コマンドを使用します。ファイルシステムの最終サイズを指定してください。
Warning
- sudo resize2fs -p /dev/LVMVolGroup/test 3G
操作が完了したら、同じサイズを-lvresizeコマンドの-Lフラグで渡すことで、論理ボリュームのサイズを変更します。
- sudo lvresize -L 3G LVMVolGroup/test
データの損失の可能性について警告があります。準備ができている場合は、「y」を入力して続行してください。
論理ボリュームを縮小した後、再びファイルシステムを確認してください。
- sudo fsck -t ext4 -f /dev/LVMVolGroup/test
もしすべてが正常に機能している場合、通常のマウントコマンドを使用してファイルシステムを再マウントすることができます。
- sudo mount /dev/LVMVolGroup/test /mnt/test
あなたの論理ボリュームは適切なサイズに縮小されました。 (Anata no ronri boryuumu wa tekisetsu na saizu ni shukushou sareました。)
論理ボリュームの削除
もし論理ボリュームが不要になった場合は、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
その取り外されたストレージデバイスは、他の目的で使用することも、システムから完全に取り除くこともできます。
結論
現在、Ubuntu 18.04でLVMを使用してストレージデバイスを管理する方法について理解しています。また、既存のLVMコンポーネントの状態に関する情報を取得する方法、LVMを使用してストレージシステムを組み立てる方法、およびボリュームを変更してニーズに合わせる方法も知っています。これらの概念を安全な環境でテストして、どのように組み合わさるかをより理解するために積極的に取り組んでください。