検索
連載

【 lvcreate 】コマンド――論理ボリュームを作成するLinux基本コマンドTips(337)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、LVM環境用に論理ボリュームを作成する「lvcreate」コマンドです。

Share
Tweet
LINE
Hatena
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、LVM環境用に論理ボリュームを作成する「lvcreate」コマンドです。

lvcreateコマンドとは?

 「lvcreate」はLVMの「論理ボリューム」を作成するコマンドです。

 Linuxでは当初、HDDなどに直接ファイルシステムを割り当てて管理していましたが、現在では、物理ボリュームをまとめて仮想化されたボリュームグループを作り上げた後、それを論理ボリュームに切り分けて管理する仕組み「LVM(Logical Volume Manager)」が取り入れられています。例えば、CentOSでは、デフォルト設定のインストールで論理ボリュームを使用します。

 実際にLVMの仕組みを使うには、まず「pvcreate」コマンド(連載第335回)で物理ボリュームを作成します。その後、「vgcreate」コマンド(連載第336回)を使って、物理ボリューム上にボリュームグループを作り上げます。最後に、lvcreateを使って、ボリュームグループ上に論理ボリュームを作成します。

 物理ボリュームを直接使うのではなく、論理ボリュームを作り上げて記憶領域を管理することで、LVMでは複数の物理的なディスクを1つにまとめて大容量のファイルシステムを構築したり、ファイルシステムのサイズを後から変更したりする操作が可能になります。

 lvcreateコマンドは、lvm2パッケージに収録されています。CentOS環境では「sudo yum install lvm2」、Ubuntu環境では「sudo apt install lvm2」でインストールできます。lvm2では、ほとんどの操作を「lvm」コマンドで実行できます。なお、lvcreateコマンドもlvmコマンドへのシンボリックリンクです。



lvcreateコマンドの書式

lvcreate [オプション] ボリュームグループ名 [物理ボリューム名]

※[ ]は省略可能な引数を示しています。





lvcreateの主なオプション(作成時の指定関連)

短いオプション 長いオプション 意味
-L サイズ --size サイズ 作成する論理ボリュームのサイズを指定する。単位には「G」や「T」などが使用可能(※1)
-l サイズ --extents サイズ 作成する論理ボリュームのサイズを論理エクステント(※2)の個数、または割合(「%VG」「%PVS」「%FREE」「%ORIGIN」)で指定する。例えば空き領域全てを使う場合は「-l 100%FREE」のように指定する(本文を参照
 %VG ボリュームグループ全体に対する割合
 %FREE ボリュームグループの空き容量に対する割合
 %PVS 物理ボリュームに対する割合
 %ORIGIN 元の論理ボリュームの合計サイズ(スナップショット用)に対する割合
-n 名前 --name 名前 作成する論理ボリュームの名前を指定する。省略時の名前は「lvol0」「lvol1」「lvol2」……となる
--addtag タグ タグ(オブジェクトタグ)を付ける。タグは、ボリュームグループ名などの名前の代わりに「vgs @タグ」のように使用できる(連載第336回
-W yまたはn --wipesignatures yまたはn 論理ボリュームを作成する際に、元々記録されていたファイルシステムの署名(signature)を削除するかどうかを指定する。デフォルトはゼロ(消去する)。lvm.confでも設定できる
-Z yまたはn --zero yまたはn 論理ボリューム先頭の4KiB(4096バイト)をゼロで消去するかどうかを指定する(デフォルトは「y」)
--alloc ポリシー 物理エクステント(※2)の最低レベルの割り当てポリシーを「contiguous」「cling」「normal」「anywhere」から指定する(※3)
-A yまたはn --autobackup yまたはn メタデータのバックアップを行うかどうかを指定する(デフォルトは「y」で、/etc/lvm/backupにバックアップを保存する)
--metadataprofile プロファイル名 設定プロファイルを指定する。定義済みプロファイルは「/etc/lvm/profile/プロファイル名.profile」にあり、保存場所は/etc/lvm/lvm.confで変更可能

lvcreateの主なオプション(作成後の動作関連)※4

短いオプション 長いオプション 意味
-a フラグ --activate フラグ 論理ボリュームのアクティブ化をフラグで指定する。主なフラグは次の通り
y 新しく作成した論理ボリュームをアクティブ化する
n 新しく作成した論理ボリュームをアクティブ化しない
ay 自動モード。lvm.confのアクティブ化リストに従う
-k yまたはn --setactivationskip yまたはn アクティブ化をスキップするかどうかを指定する
-K --ignoreactivationskip アクティブ化する際に、論理ボリュームをスキップするフラグを無視する(スキップするフラグは「--setactivationskip」オプションで設定)
-p rまたはrw --permission rまたはrw パーミッションを「r」(リードオンリー)または「rw」(読み書き可能)で指定する。デフォルトは「rw」
-r セクタ数 --readahead セクタ数 先読みするセクタの個数を指定する。auto(自動、デフォルト)またはnone(先読みしない)も指定できる

※1 大文字、小文字にかかわらず1024の倍数を意味する。
※2 LVMでは記憶領域の最小単位(通常は約4MB)を「物理エクステント」(PE)と呼ぶ。ボリュームグループを論理ボリュームに切り分ける際の最小単位を「論理エクステント」(LE)と呼ぶ。PEとLEは通常同じ大きさに設定されている。
※3 contiguousには全ての論理エクステントが隣接した物理エクステントを使用するなどの特徴があり、パフォーマンスがよい。anywhereは領域を有効に使えるものの、パフォーマンスが低下する可能性がある。デフォルトでは「contiguous」のポリシーに従って割り当て、割り当てができなくなると「cling」ポリシーに従い、次に「normal」ポリシーに従う。
※4 この他、スナップショットやキャッシュ、シンプール関連のオプションが多数ある。




論理ボリュームを作成する

 「lvcreate -n 論理ボリューム名 -L 論理ボリュームのサイズ ボリュームグループ名」で論理ボリュームを作成します。

 例えば「lvcreate -n data -L 32g datagroup」で、「data」という名前を付けたサイズが32GiB(※5)の論理ボリュームを、ボリュームグループ「datagroup」上に作成します。

※5 GiB(ギビバイト)は2の30乗バイト。「pvs」コマンドなど、lvm関連のコマンドでは「g」という単位で表示する。なお、GB(ギガバイト)は10の9乗バイトで、1GiB=約1.074GB、1GB=約0.93GiB。



 「-n 名前」を省略した場合、「lvol番号」という名前のボリュームを生成します。なお、作成後であってもボリューム名は「lvrename」コマンドで変更できます。

 lvcreateコマンドの実行にはroot権限が必要です。「sudo」コマンド(連載第68回)などを利用してください。

コマンド実行例

lvcreate -n 論理ボリューム名 -L サイズ ボリュームグループ名

(サイズと名前を指定してボリュームグループ上に論理ボリュームを作成する)

lvcreate -n data -L 32g datagroup

(「data」という名前でサイズが32GiBの論理ボリュームを「datagroup」というボリュームグループ上に作成する)(画面1


 画面1では、pvcreateコマンドで/dev/sdb(64GiB)と/dev/sdc(128GiB)上に物理ボリュームを作成し、vgcreateコマンドで/dev/sdbと/dev/sdcの物理ボリューム上に「datagroup」というボリュームグループを作成しました。続いて、lvcreateコマンドで、「data」という論理ボリューム(-n data)を、サイズ32GiB(-L 32g)で「datagroup」上に作成しています。

 論理ボリューム作成後の状況を確認するため、物理ボリュームの情報をpvsコマンド(連載第331回)で、ボリュームグループの情報をvgsコマンド(連載第333回)で、論理ボリュームの情報をlvsコマンド(連載第329回)で表示しました。

 最後のlvsコマンドの出力から「data」という論理ボリュームが「datagroup」上にあることが分かります。なお、属性(Attr)の6番目は「device (o)pen」の「o」です。他のボリュームは使用中ですが、dataボリュームは作成直後で、まだマウントされていないため、「o」が表示されていません。

画面1
画面1 物理ボリュームとボリュームグループ、論理ボリュームを作成したところ

 画面2では、画面1で作成した「data」ボリュームをmkfsコマンドでフォーマットして、mountコマンドで「/data」にマウントしています。

画面2
画面2 論理ボリュームをフォーマット後、マウントしたところ


論理ボリュームの容量を割合で指定して作成する

 「-l」(--extents)オプションを使うと、これから作成する論理ボリュームのサイズを具体的な容量ではなく、割合で指定できます。

 何に対する割合なのかは「%」の後の接尾辞(suffix)で示します。例えば、ボリュームグループ全体に対する割合であれば「%VG」、ボリュームグループの空き容量に対する割合であれば「%FREE」、物理ボリュームに対する割合であれば「%PVS」を使って指定します。

コマンド実行例

lvcreate -l 数値%VG -n 論理ボリューム名 ボリュームグループ名

(ボリュームグループ全体のサイズに対する割合を指定して論理ボリュームを作成する)

lvcreate -l 50%VG -n subvol datagroup

(ボリュームグループ「datagroup」の半分のサイズで、subvolという論理ボリュームを作成する)(画面3

lvcreate -l 数値%FREE -n 論理ボリューム名 ボリュームグループ名

(ボリュームグループの空き容量に対する割合を指定して、論理ボリュームを作成する)

lvcreate -l 50%FREE -n subvol datagroup

(ボリュームグループ「datagroup」の空き容量の半分を使って、subvolという論理ボリュームを作成する)(画面3


 画面3では、画面2の環境で「-l 50%VG」と「-l 50%FREE」の違いが分かるように論理ボリュームを作成する操作を2回実行しています。

画面3
画面3 論理ボリューム作成時の割合の指定方法を確認したところ

 まず、vgsコマンドでボリュームグループ「datagroup」の状況を確認し、続いてlvsコマンドで「datagroup」上の論理ボリュームを表示しています。ここでは、datagroup全体の容量が約192GiB(191.99GiB)、既に存在しているdataボリュームが32GiBで、datagroupの残りは約160GiB(159.99GiB)であることが分かりました。

 「-l 50%VG」を指定すると、datagroup全体の容量のほぼ半分(96GiB)の論理ボリュームが作成されました。

 いったんここで「lvremove」コマンドを使い、作成したばかりの論理ボリュームを削除し(※6)、あらためて「-l 50%FREE」で論理ボリュームを作成しました。すると、datagroupの空き容量の約半分を使って、80GiBの論理ボリュームが作成されました。

※6 「lvremove /dev/ボリュームグループ名/論理ボリューム名」で、論理ボリュームを削除する。「lvremove データグループ名」でデータグループ上の全ての論理ボリュームを削除することも可能。



 なお、「-l」オプションでは割合だけでなく、「エクステント」でサイズを指定することもできます。

 LVMでは物理ディスクをPE(Physical Extent:物理エクステント)単位で管理します(※7)。PEのデフォルトサイズは4MiB(4096×1024バイト、約4MB)です。なお、vgcreateコマンドでボリュームグループを作成する際に「-s」オプションでPEのサイズを変更できます。例えば、PEのサイズが4MiBで32GiBの論理ボリュームを作成したい場合、PEは8192個になるので「-l 8192」と指定します。

※7 vgdisplayコマンド(ボリュームグループの詳細情報を表示するコマンド、連載第334回)では、「PE」で物理エクステントの情報を表示する。





物理ボリュームを指定して論理ボリュームを作成する

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る