[CentOS 7] インストールしてしまった後に /home をなくして / に吸収させる方法

現在のディスク状況を確認する

$ df -hT
ファイルシス            タイプ   サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root xfs         50G  1.4G   49G    3% /
devtmpfs                devtmpfs   923M     0  923M    0% /dev
tmpfs                   tmpfs      933M     0  933M    0% /dev/shm
tmpfs                   tmpfs      933M   97M  837M   11% /run
tmpfs                   tmpfs      933M     0  933M    0% /sys/fs/cgroup
/dev/mapper/centos-home xfs        179G   15G  164G    9% /home
/dev/sda1               xfs        497M  124M  374M   25% /boot
tmpfs                   tmpfs      187M     0  187M    0% /run/user/1000
$

ご覧のように /home が一番大きな領域を持っている。

/home はあんまり使わないし、この CentOS 7 には KVM をインストールしたので、これからゲスト OS がインストールされる場所 /var/lib/libvirt/images にデータを多く使うようになりそうだ。/var/lib/libvirt/images でファイルシステムを切ることまではしたくないのでとりあえず  / を大きくしたい。

df コマンドに -T を付けるとファイルシステムのタイプが表示される。なかなか便利なオプションだ。

手順の概要

簡単に手順を紹介すると、

  • /home をアンマウントする
  • /home を消去する
  • /home を消去したことで出来た領域を / に割り当てる

という流れです。

めちゃくちゃ重要な注意事項

上記手順の概要で説明した「/home を消去する」ですが、すでにユーザーを作っている場合、そのユーザーのホームディレクトリも一緒に消去されることになります。

だから / を拡張したあと、それをどうやって復元するか?について、その方法を事前に考えておく必要があります。

僕がやったのは

  • 必要なファイルを cp コマンドでバックアップする

だけです。

Dropbox を使えるようにしている CentOS ですので cp で Dropbox へファイル(主に python, ruby, bash スクリプト) をコピーしておきました。

で、/ を拡張した後、

  1. ユーザーを削除
  2. ユーザーを作成
  3. コピーしたファイルを /home/oreore に戻す
  4. もう一回 Dropbox を /home/oreore にインストールする

ということをやりました。

コンソールから root で作業する必要あり

/home を消去するわけですから、/home/oreore がホームディレクトリの oreore ユーザーでは作業ができません。コンソールで root でログインしてから作業する必要があります。

また、何かのプロセスが /home 以下にアクセスしていてもダメです。僕の場合、Dropbox が /home/oreore 以下にインストールされていて、それを常時起動するようにしていたので Dropbox のプロセスを止めてから作業する必要がありました。

/home を消去するのに lvremove コマンドを使用しますがこんな実行結果になりました。

# lvremove -f /dev/centos/home
  Logical volume centos/home contains a filesystem in use.
#

これを見て、「あ、ドロップボックスが /home 使ってるわ」と思いついて、Dropbox を止めました。

/home を消去して / を大きくする

lvremove で /home を削除して、lvextend で / の領域を拡張します。

# ls -l /dev/centos
total 0
lrwxrwxrwx. 1 root root 7 Apr 16 22:03 home -> ../dm-2
lrwxrwxrwx. 1 root root 7 Apr 16 22:03 root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Apr 16 22:03 swap -> ../dm-1
# umount -l /home
# lvremove -f /dev/centos/home
  Logical volume "home" successfully removed
# ls -l /dev/centos
total 0
lrwxrwxrwx. 1 root root 7 Apr 16 22:03 root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Apr 16 22:03 swap -> ../dm-1
# ls -l /dev/mapper
total 0
lrwxrwxrwx. 1 root root       7 Apr 16 22:03 centos-root -> ../dm-0
lrwxrwxrwx. 1 root root       7 Apr 16 22:03 centos-swap -> ../dm-1
crw-------. 1 root root 10, 236 Apr 16 22:03 control
# lvextend -l +100%FREE /dev/mapper/centos-root 
  Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 228.64 GiB (58533 extents).
  Logical volume root successfully resized.
# 

/home をマウントしに行かないように fstab を編集する

以下のように vi で /etc/fstab を編集しました。

# cp -p /etc/fstab /etc/fstab.20170416
# vi /etc/fstab

編集後は以下のようになっています。再起動します。

# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Mar 22 00:15:53 2016
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=cebe2831-d89e-4556-9aec-2caafed493e4 /boot xfs defaults 0 0
#/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
# shutdown -r now

OS が起動してきたら

# xfx_growfs
# df -h
 Filesystem Size Used Avail Use% Mounted on
 /dev/mapper/centos-root 229G 1.4G 228G 1% /
 devtmpfs 923M 0 923M 0% /dev
 tmpfs 933M 0 933M 0% /dev/shm
 tmpfs 933M 8.6M 925M 1% /run
 tmpfs 933M 0 933M 0% /sys/fs/cgroup
 /dev/sda1 497M 139M 358M 28% /boot
 tmpfs 187M 0 187M 0% /run/user/0
#

以上で終了です。

案外簡単な作業ではあったのですが、そもそもファイルシステムのこととか、xfs、 LVM 関連の知識がほとんどないので運良く成功しただけかもしれません。

で、次回(かまたいつか)KVM 環境にゲスト OS をインストールするところを書いてみたいと思います。

[CentOS 7] インストールしてしまった後に /home をなくして / に吸収させる方法” に対して2件のコメントがあります。

  1. 伊藤慎治 より:

    xfx_growfs ではなくて  xfs_growfs /dev/centos/root
    ではないですか?

    1. keramax2014 より:

      ああ、、、コマンドについてはきっとその通りです!xfx_growfs は書き間違えです。引数に /dev/centos/root が必要かどうかはすみません、今となっては思い出すことができません。コメント・ご指摘を頂きましてありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください