HASH-TAG : LVM
2019年01月08日(火)


12.4/-2.5℃
Update: 06:41:15
サイクリング
今日もサイクリングは無しでした。
早起きできませ〜ん。
というか、氷点下でサイクリングとかありえな〜い。
Update: 10:20:05
LVM サイズ変更方法
会社で古い PC に Fedora 28 を入れて個人用ファイルサーバーとして運用しているのですが、「新年だし Fedora 29 にアップグレードしておこうな」と思ってバージョンアップ処理を始めたんです。 そしたら、ルートのファイルシステムの容量が足りなくて Fedora 29 のコンポーネントのダウンロードが出来無くなっていたんです。(ToT) 「なんで?」と思ってよくよく調べてみたら NextCloud のデータが全部 /var 下に構築されていたんですよ。 ルートのファイルシステムはディフォルトで 50G しかとられないので、そりゃそうですよね。 いままで容量をオーバーフローしなかったのが不思議なくらいですわ。( ̄∀ ̄;)
というわけで、今回は、なんとかしてルートのファイルシステムの容量を増やしてみたという話です。 HDD の容量は 500G で、ルートに 50G、/home に 450G くらい割り振られていいます。 これを、ルートに 200G、/home に 300G くらいの配分にします。
Fedora だと、インストール時に何も指定しないと ディフォルトで LVM(Logical Volume Management) になってしまうようです。 LVM というのは、物理的な HDD の上層に論理的なボリューム管理層を作って、その上にファイルシステムを構築するというものです。 LVM を使うと、複数の HDD をあたかも1つの物理ボリュームとして管理する事ができるんです。 HDD を追加して容量を増やしたりすることも可能です。
とはいっても、個人で運用しているようなシステムでは特に必要はないと思いますけどね。 わたしも、普段 LVM なのかどうかなんて考えずに使っています。 で、今回は初めての経験で、いろいろと戸惑ったので、自分メモとして残しておこうと思った次第です。
先ずは、LVM の論理ボリュームに実際どれだけの容量が配分されているかを確認します。 コマンドは、lvdisplay です。 システムに繋がっている論理ボリュームの詳細を全部表示してくれます。
あ、今回は開発で使っている CentOS 7 に HDD をつなぎ直して、CentOS 7 上で作業しています。 当然 root でやっています。
下記が lvdisplay を実行した結果です。 必要ないボリュームは削除しています。 /dev/fedora_toyopc/home というのが /home に割り振られている論理ボリューム、/dev/fedora_toyopc/root が ルートの論理ボリュームです。 LV Size というのが割り振られている論理ボリュームのサイズを示しています。
[root]# lvdisplay --- Logical volume --- LV Path /dev/fedora_toyopc/home LV Name home VG Name fedora_toyopc LV UUID J3lYZI-zwL1-CtrH-Y5QH-tYrw-B2c2-5jsi0U LV Write Access read/write LV Creation host, time toyopc, 2015-12-24 19:00:28 +0900 LV Status available # open 0 LV Size <413.27 GiB Current LE 105796 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4 --- Logical volume --- LV Path /dev/fedora_toyopc/root LV Name root VG Name fedora_toyopc LV UUID DS1Icy-Fzpo-e0cF-auRv-S7zU-sttf-zHpS0q LV Write Access read/write LV Creation host, time toyopc, 2015-12-24 19:00:33 +0900 LV Status available # open 0 LV Size 50.00 GiB Current LE 12800 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:5
Linux のファイルシステムで混乱してしまいがちなのが、論理(物理)ボリュームの上にファイルシステムが構築されているということです。 サイズの変更をする場合、論理(物理)ボリュームとファイルシステムの両方のサイズを変更して、整合させる必要があります。
手順としては、
- /home のファイルシステムのサイズを 150G(強) 小さくする
- /home の論理ボリュームのサイズを 150G 小さくする
- /home のファイルシステムのサイズを論理ボリュームのサイズに整合させる
- ルートの論理ボリュームのサイズを 150G 大きくする
- ルートのファイルシステムのサイズを論理ボリュームのサイズに整合させる
まずは、/home のファイルシステムのサイズを 150G(強) 小さくします。 使用するコマンドは、resize2fs です。 もともとは 413G あるので、取り敢えず 250G にします。
[root]# resize2fs /dev/fedora_toyopc/home 250G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/fedora_toyopc/home to 65536000 (4k) blocks. The filesystem on /dev/fedora_toyopc/home is now 65536000 blocks long.
続いて、/home の論理ボリュームのサイズを 150G 小さくします。 論理ボリュームを管理するコマンドはいくつかありますが、論理ボリュームのサイズを指定した分変更するコマンドは lvresize です。
ワーニングがでていますね。 当然ですが、既に使用してしまっている容量以下にリサイズしてしまうと、ファイルを破壊してしまいます。 私の場合 170G 程度しか使っていないので、問題無しです。
[root]# lvresize -L -150G /dev/fedora_toyopc/home WARNING: Reducing active logical volume to <263.27 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce fedora_toyopc/home? [y/n]: y Size of logical volume fedora_toyopc/home changed from <413.27 GiB (105796 extents) to <263.27 GiB (67396 extents). Logical volume fedora_toyopc/home successfully resized.
そして、/home のファイルシステムのサイズを論理ボリュームのサイズに整合させます。 resize2fs コマンドでサイズを指定せずに実行すると、論理(物理)ボリュームのサイズぴったりに合わせてくれます。
[root]# resize2fs /dev/fedora_toyopc/home resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/fedora_toyopc/home to 69013504 (4k) blocks. The filesystem on /dev/fedora_toyopc/home is now 69013504 blocks long.
この時点で、/home のサイズは初めにくらべて 150G 小さくなっています。
[root]# lvdisplay --- Logical volume --- LV Path /dev/fedora_toyopc/home LV Name home VG Name fedora_toyopc LV UUID J3lYZI-zwL1-CtrH-Y5QH-tYrw-B2c2-5jsi0U LV Write Access read/write LV Creation host, time toyopc, 2015-12-24 19:00:28 +0900 LV Status available # open 0 LV Size <263.27 GiB Current LE 67396 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4 --- Logical volume --- LV Path /dev/fedora_toyopc/root LV Name root VG Name fedora_toyopc LV UUID DS1Icy-Fzpo-e0cF-auRv-S7zU-sttf-zHpS0q LV Write Access read/write LV Creation host, time toyopc, 2015-12-24 19:00:33 +0900 LV Status available # open 0 LV Size 50.00 GiB Current LE 12800 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:5
続いて、/home を減らした分の容量をルートに移すために、lvresize を使ってルートの論理ボリュームのサイズを 150G 大きくします。
[root]# lvresize -L +150G /dev/fedora_toyopc/root Size of logical volume fedora_toyopc/root changed from 50.00 GiB (12800 extents) to 200.00 GiB (51200 extents). Logical volume fedora_toyopc/root successfully resized.
最後に、ルートのファイルシステムのサイズを論理ボリュームのサイズに整合させます。
[root]# resize2fs /dev/fedora_toyopc/root resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/fedora_toyopc/root to 52428800 (4k) blocks. The filesystem on /dev/fedora_toyopc/root is now 52428800 blocks long.
ちゃんとできたか、lvdisplay で確認します。
できていますね。 めでたしめでたし。(⌒o⌒)
[root]# lvdisplay --- Logical volume --- LV Path /dev/fedora_toyopc/home LV Name home VG Name fedora_toyopc LV UUID J3lYZI-zwL1-CtrH-Y5QH-tYrw-B2c2-5jsi0U LV Write Access read/write LV Creation host, time toyopc, 2015-12-24 19:00:28 +0900 LV Status available # open 0 LV Size <263.27 GiB Current LE 67396 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4 --- Logical volume --- LV Path /dev/fedora_toyopc/root LV Name root VG Name fedora_toyopc LV UUID DS1Icy-Fzpo-e0cF-auRv-S7zU-sttf-zHpS0q LV Write Access read/write LV Creation host, time toyopc, 2015-12-24 19:00:33 +0900 LV Status available # open 0 LV Size 200.00 GiB Current LE 51200 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:5
#LVM サイズ変更方法