CentOSで/homeを/にマージする
背景
現在,CentOSで構築しているサーバに外付けのSSDを接続し,そちらを/homeにマウントしている.
しかし,CentOSの初期設定の際に/homeには論理ボリュームcentos-homeが割り当てられていた.
centos-homeはどこにもマウントされていないためcentos-rootにマージしたい.
解決策
以下に示している解決法は「とりあえずやったらできた」程度のものです.
下記手順を実行したことによって生じた損害等の一切の責任を負いかねますのでご了承ください.
(マサカリ🪓は歓迎します)
手順
流れとしては以下のようになります.
1. 論理ボリュームの確認
2. 現在/homeに存在するファイルの退避
3. 論理ボリュームcentos-homeの削除
4. 論理ボリュームが削除されたことの確認
5. 空いている容量を全てcentos-rootに割り当てる
6. 割り当てられたことの確認
7. OSが認識しているか確認
8. xfsファイルシステムを拡大
9. 正常にマウントされていることの確認
コマンド
(以下は全てrootで作業しています.)
1: 論理ボリュームの確認
まず,df
コマンドを用いてファイルシステムのディスク容量を確認します.以下の出力は/以外は省略してあります.現在,50GB中の約49GBを使用していることがわかります.
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 49G 1.6G 97% /
次にlvdisplay
コマンドを用いて論理ボリュームの情報を表示します.ログを取るのを忘れており出力結果は表示していないのですが,rootとhomeの論理ボリュームが表示されてい(ました|る思います).
$ lvdisplay -C
2: 現在/homeに存在するファイルの退避
/homeに既にファイルがある場合は別の場所に退避させます.可能であれば他の物理ボリュームが良いと思います.*1 今回,/homeは空だったのでコマンドは省略しますが,圧縮して他の場所に置けば良いです.
3: 論理ボリュームcentos-homeの削除
ファイルを退避させたらlvremove
コマンドを用いて論理ボリュームを解放します.
$ lvremove /dev/mapper/centos-home
4: 論理ボリュームが削除されたことの確認
もう一度lvdisplay
コマンドを用いて,削除されたことの確認を行います.
$ lvdisplay -C
5: 空いている容量を全てcentos-rootに割り当てる
lvextend
コマンドを使い,空き容量を全て/に割り当てます.
$ lvextend -l +100%FREE /dev/mapper/centos-root
6: 割り当てられたことの確認
元々50GBでしたが,500GBになりました.(464.56GBとなっていますが,ファイルシステムが使用する容量があるためこのようになっていると推察されます)*2
$ lvdisplay -C LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 464.56g
7: OSが認識しているか確認
ファイルシステムのディスク容量を確認します.
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 49G 1.6G 97% /
🤔 🤔 🤔
サイズが増えていません.
これはこの時点ではまだファイルシステムのリサイズは行なっていないためです.
8: xfsファイルシステムの拡大
今回使用しているファイルシステムがxfsなので,xfs_growfs
コマンドを用いて変更を反映します.
$ xfs_growfs -d / meta-data=/dev/mapper/centos-root isize=512 agcount=38, agsize=3276800 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=121782272, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=6400, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 13107200 to 121782272
9: 正常にマウントされていることの確認
もう一度df
コマンドを用いてファイルシステムのディスク容量を確認します.
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 465G 49G 417G 11% /
正しく反映されました👍
参考
*1:最悪初期化することになるかもしれないので
*2:https://hesonogoma.com/linux/comparativetableoffilesystem.html