【 lvreduce 】コマンド――論理ボリュームを縮小するLinux基本コマンドTips(345)

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

» 2019年10月11日 05時00分 公開
[西村めぐみ@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

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

Linux基本コマンドTips一覧

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

lvreduceコマンドとは?

 「lvreduce」は、LVM2(Logical Volume Manager 2)で、論理ボリュームを縮小するコマンドです。

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

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

 LVMでボリュームを作成/削除したり、現在の構成を表示したりする場合は次のコマンドを使用します。

対象 作成 削除
物理ボリューム pvcreateコマンド(連載第335回) pvremoveコマンド(連載第338回)
ボリュームグループ vgcreateコマンド(連載第336回) vgremoveコマンド(連載第339回)
論理ボリューム lvcreateコマンド(連載第337回) lvremoveコマンド(連載第340回)


対象 拡張 縮小
物理ボリューム pvextendコマンド pvreduceコマンド
ボリュームグループ vgextendコマンド(連載第342回) vgreduceコマンド(連載第344回)
論理ボリューム lvextendコマンド(連載第343回) lvreduceコマンド(連載第345回)


対象 情報表示 詳細情報表示
物理ボリューム pvsコマンド(連載第331回) pvdisplayコマンド(連載第332回)
ボリュームグループ lvsコマンド(連載第329回) lvdisplayコマンド(連載第330回)
論理ボリューム vgsコマンド(連載第333回) vgdisplayコマンド(連載第334回)


lvreduceコマンドの書式

lvreduce サイズ指定オプション [その他のオプション] 論理ボリューム名 [物理ボリューム名]

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





lvreduceの主なオプション(サイズ指定オプション)

短いオプション 長いオプション 意味
-L サイズ --size サイズ 論理ボリュームのサイズを指定する。単位には「M」や「G」「T」などが使用可能(※1)。現在の量からの差を指定する場合は頭に「-」記号を付ける
-l サイズ --extents サイズ 縮小する論理ボリュームのサイズを論理エクステント(※2)の個数、または割合「%VG」「%PVS」「%FREE」「%ORIGIN」で指定する。縮小する量を指定する場合は頭に「-」記号を付ける
 %VG ボリュームグループ全体に対する比率
 %FREE ボリュームグループの空き容量に対する比率
 %PVS 物理ボリュームに対する比率
 %ORIGIN 元の論理ボリュームの合計サイズ(スナップショット用)に対する割合

※1 大文字、小文字にかかわらず1024の倍数を意味する。
※2 LVMでは記憶領域の最小単位(通常は約4MB)を「物理エクステント」(PE)と呼ぶ。ボリュームグループを論理ボリュームに切り分ける際の最小単位を「論理エクステント」(LE)と呼ぶ。PEとLEは通常同じ大きさに設定されている。



lvreduceの主なオプション(その他のオプション)

短いオプション 長いオプション 意味
-r --resizefs ファイルシステムのサイズも変更する(内部で「fsadm」コマンドを使用)
-A yまたはn --autobackup yまたはn メタデータのバックアップを行うかどうかを指定する(デフォルトは「y」、バックアップを/etc/lvm/backupに保存する)
--alloc ポリシー 物理エクステントの最低レベルの割当ポリシーを「contiguous」「cling」「normal」「anywhere」から指定する(※3)
-n --nofsck 実施前にファイルシステムのチェックを行わない(--forceと併用)
--noudevsync udevデバイスマネジャーとの同期を行わない
-y --yes 全ての問い合わせに対し「y」を入力したものとして実行する
-f --force 処理内容を確認せず、強制的に実行する
-t --test 実際には実行せず、処理内容だけを表示する
-v --verbose 付加情報を表示する

※3 contiguousには全ての論理エクステントが隣接した物理エクステントを使用するなどの特徴があり、パフォーマンスがよい。anywhereは領域を有効に使えるものの、パフォーマンスが低下する可能性がある。デフォルトではcontiguousのポリシーに従って割り当て、割り当てができなくなるとclingポリシーに従い、次にnormalポリシーに従う。





論理ボリュームのサイズを縮小する

 「lvreduce -Lまたは-lオプション 論理ボリューム名」で、論理ボリュームのサイズを変更します。サイズを-Lまたは-lオプションで指定します。このようなオプションの使い方は、lvcreateコマンドで論理ボリュームを作成する際とほぼ同じです。

 「-サイズ」のように頭に「-」を付けることで、縮小するサイズを現在のサイズからの差分として指定できます。

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

コマンド実行例

lvreduce -L サイズ 論理ボリューム名

(論理ボリュームを指定したサイズに縮小する)

lvreduce -L 10g /dev/datagroup/data1

(ボリュームグループ「datagroup」上の論理ボリューム「data1」を10GiBになるように縮小する)

lvreduce -L -10g /dev/datagroup/data1

(ボリュームグループ「datagroup」上の論理ボリューム「data1」のサイズを10GiB小さくする)


 画面1では、ボリュームグループ「datagroup」にある論理ボリューム「data1」のサイズを縮小しています。

 まず、lvsコマンドで現在の論理ボリュームの状況を確認しています。

画面1 画面1 論理ボリュームのサイズを縮小したところ

 ボリュームグループ「datagroup」には論理ボリューム「data1」「data2」があり、「data1」のサイズは40GiBです(※4)。

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



 論理ボリューム「data1」を10GiB小さくしようとしたところ、警告メッセージ「THIS MAY DESTROY YOUR DATA」が出たので「n」キーで中断しました。なお、「data1」はまだフォーマットしていないためデータ破損の心配はありません。

 念のため、「lsblk」コマンドで状況を確認しました。lsblkはブロックデバイスを一覧表示するコマンドで、「-fs」はファイルシステムを表示するというオプションです。これで、data1にはファイルシステムがないと確認できました。

 あらためて、lvreduceコマンドを実行しました。今度は警告に対し「y」で処理を実行しています。



フォーマット済みの論理ボリュームのサイズを縮小する

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。