ゆけッ!やっせんぼ・とよちゃん! : サイクリング日記
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 のファイルシステムで混乱してしまいがちなのが、論理(物理)ボリュームの上にファイルシステムが構築されているということです。 サイズの変更をする場合、論理(物理)ボリュームとファイルシステムの両方のサイズを変更して、整合させる必要があります。

手順としては、

  1. /home のファイルシステムのサイズを 150G(強) 小さくする
  2. /home の論理ボリュームのサイズを 150G 小さくする
  3. /home のファイルシステムのサイズを論理ボリュームのサイズに整合させる
  4. ルートの論理ボリュームのサイズを 150G 大きくする
  5. ルートのファイルシステムのサイズを論理ボリュームのサイズに整合させる
です。

まずは、/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 サイズ変更方法