検索
連載

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

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

Share
Tweet
LINE
Hatena
「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」で処理を実行しています。



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

 ext2、ext3、ext4の場合、既にファイルシステムが存在している論理ボリューム(フォーマット済の論理ボリューム)も縮小できます(※5)。この場合、「-r」(--resizefs)オプションを使用します(画面2)。

※5 XFSには対応していない。



コマンド実行例

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

(論理ボリュームを指定したサイズに縮小し、ファイルシステムのサイズも変更する)

lvreduce -L -15g -r /dev/datagroup/data2

(ボリュームグループ「datagroup」上の論理ボリューム「data2」のサイズを15GiB減らし、ファイルシステムのサイズも変更する)


画面2
画面2 フォーマット済みの論理ボリュームのサイズを縮小したところ

 lvreduceコマンドは、マウントしている状態でも実行できます。

 画面3では、「data2」を「/media」にマウントした状態でlvreduceコマンドを実行しています。

画面3
画面3 マウント済みの状態で論理ボリュームのサイズを縮小したところ

 なお、「-r」付きで実行する場合、使用済みの領域のサイズよりも小さくすることはできません(画面4、※6)。

※6 「-r」を付けなければ縮小できる。ただし既存のデータが破壊されるため、縮小後、ファイルシステムを再作成する必要がある。



画面4
画面4 使用済みの領域のサイズよりも縮小しようとしたところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

元々はDOSユーザーで「DOS版UNIX-like tools」を愛用。ソフトハウスに勤務し生産管理のパッケージソフトウェアの開発およびサポート業務を担当、その後ライターになる。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。地方自治体の在宅就業支援事業にてMicrosoft Officeの教材作成およびeラーニング指導を担当。会社などの"PCヘルパー"やピンポイント研修なども行っている。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る