CentOS7のディスク容量を拡張する

CentOS7 minimalをインストールしました。最近のVPSやクラウドではあまり意識しなかったので忘れていましたが、CentOSではデフォルトでhomeディレクトリに結構容量がさかれています。/root/直下は50GBとなっています。これを変えていきたいと思います。

YouTube

作業を動画にしてみました。もし動画の方がわかりやすいとか見てみたいなどあったら是非みてください

現在の状況

[c]
[root@localhost ~]# df -Th
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 18M 1.8G 1% /dev/shm
tmpfs tmpfs 1.9G 9.8M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 7.1G 43G 15% /
/dev/sda1 xfs 1014M 169M 846M 17% /boot
/dev/mapper/centos-home xfs 411G 33M 411G 1% /home
tmpfs tmpfs 371M 52K 371M 1% /run/user/0
/dev/sdb1 vfat 3.8G 1.1G 2.8G 28% /run/media/root/CENTOS 7 X8
[root@localhost ~]#
[/c]
centos-rootには50GBで、centos-homeに411GBとなっています。これを変えていきたいなと思っています

homeは50GBで残りはrootにしたい

homeディレクトリは個人的にそんなに使わないので、正直50GBあればいいかなと思いました

事前にhomeディレクトリを持たないアカウントを作成

通常ユーザーアカウントを作成すると、homeディレクトリが作成されます。今回homeを縮小してrootを拡張するのでhomeディレクトリを持たないアカウントを作成してそのアカウントでやっていきます
sudo権限も持たせたいのでwheelグループにも所属させます

実際に作業していく

というわけで、実際に作業をしてきたいと思います。

workというディレクトリを作成

まずは新しいユーザーのために「work」ディレクトリを作成します
[c]
[root@localhost ~]# mkdir /work
[/c]

resizeユーザーの作成

resizeというユーザーを作成します。ホームディレクトリは事前に作成したworkになります

[c]
[root@localhost ~]# useradd -d /work/resize -m -G wheel -p resize resize
[root@localhost ~]# passwd resize
ユーザー resize のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードは 8 未満の文字列です。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[/c]

パスワードを適当に作ります。

xfsdumpをインストール

homeディレクトリをdumpするためにxfsdumpをインストールします。もしかしたら既に入っているかも知れません
[c]
[root@localhost /]# yum install xfsdump
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* epel: d2lzkl7pfhq30w.cloudfront.net
* extras: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
パッケージ xfsdump-3.1.7-1.el7.x86_64 はインストール済みか最新バージョンです
何もしません
[root@localhost /]#

[/c]

入ってますね。では次にいきます

fuserコマンドが使えるようにする

fuserコマンドは、homeパーティションを利用しているプロセスをみつけるために使います。psmisc パッケージをインストールすることで利用できるようになります

[c]
[root@localhost ~]# yum install psmisc
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: ftp.riken.jp
* extras: ftp.tsukuba.wide.ad.jp
* nux-dextop: mirror.li.nux.ro
* updates: ftp.tsukuba.wide.ad.jp
パッケージ psmisc-22.20-16.el7.x86_64 はインストール済みか最新バージョンです
何もしません
[/c]

インストール済みでした

homeディレクトリのバックアップ

homeディレクトリをバックアップします。ここではresizeユーザーで作業していきます

ユーザー切り替え

[c]
[root@localhost ~]# su resize
[/c]

バックアップ

[c]
[resize@localhost root]$ cd /work/
[resize@localhost work]$ sudo xfsdump -J -L home -M deive -f home.dump /home

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

#1) 他人のプライバシーを尊重すること。
#2) タイプする前に考えること。
#3) 大いなる力には大いなる責任が伴うこと。

[sudo] resize のパスワード:
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsdump: level 0 dump of localhost.localdomain:/home
xfsdump: dump date: Mon Sep 14 10:42:58 2020
xfsdump: session id: b5bf7b32-bc6c-4322-adb5-8cee9b62b82b
xfsdump: session label: "home"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 20800 bytes
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 21352 bytes
xfsdump: dump size (non-dir files) : 0 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /work/home.dump OK (success)
xfsdump: Dump Status: SUCCESS
[/c]
dumpファイルは/workの中に作られます。xfsdump: Dump Status: SUCCESS とでたら成功です。

homeディレクトリをアンマウント

バックアップが終わったらhomeディレクトリをアンマウントします
まずはhomeがマウントされているか確認します
[c]
[root@localhost ~]# df -Th
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 18M 1.8G 1% /dev/shm
tmpfs tmpfs 1.9G 9.8M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 7.1G 43G 15% /
/dev/sda1 xfs 1014M 169M 846M 17% /boot
/dev/mapper/centos-home xfs 411G 33M 411G 1% /home
tmpfs tmpfs 371M 52K 371M 1% /run/user/0
/dev/sdb1 vfat 3.8G 1.1G 2.8G 28% /run/media/root/CENTOS 7 X8
[/c]

ちゃんといます。

[c]
[resize@localhost ~]$ sudo umount /dev/mapper/centos-home
[sudo] password for resize:
[/c]

アンマウントしました。アンマウントされているか確認します

[c]
[root@localhost ~]# df -Th
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 18M 1.8G 1% /dev/shm
tmpfs tmpfs 1.9G 9.8M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 7.1G 43G 15% /
/dev/sda1 xfs 1014M 169M 846M 17% /boot
tmpfs tmpfs 371M 52K 371M 1% /run/user/0
/dev/sdb1 vfat 3.8G 1.1G 2.8G 28% /run/media/root/CENTOS 7 X8
[/c]

/homeの行がなくなりました。これでアンマウントは成功となります

homeのボリュームの削除

アンマウントしたので、ディスク自体の削除をします。WindowsでいうとのこDドライブの完全削除とか、そんな感じです
[c]
[resize@localhost ~]$ sudo lvchange -an /dev/mapper/centos-home
[resize@localhost ~]$ sudo lvremove /dev/mapper/centos-home
Logical volume "home" successfully removed
[/c]

Logical volume "home" successfully removed と表示されれば成功です

homeの再作成・マウント

消したhomeディレクトリですが、作成をし直します

50GBのhomeを作成

homeディクレトリは50GBにしたいので50GB作成します
[c]
sudo lvcreate -L 50G -n home centos
[/c]

ファイルシステムの作成

次に、ファイルシステムを作成します
[c]
[resize@localhost ~]$ sudo mkfs.xfs /dev/mapper/centos-home

meta-data=/dev/mapper/centos-home isize=256 agcount=4, agsize=6553600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=12800, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[resize@localhost ~]$
[/c]

マウント

homeディレクトリをマウントします

[c]
[resize@localhost ~]$ sudo mount /dev/mapper/centos-home

[resize@localhost work]$ df -Th
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 18M 1.8G 1% /dev/shm
tmpfs tmpfs 1.9G 9.8M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 7.1G 43G 15% /
/dev/sda1 xfs 1014M 169M 846M 17% /boot
tmpfs tmpfs 371M 52K 371M 1% /run/user/0
/dev/mapper/centos-home xfs 50G 33M 50G 1% /home
[resize@localhost work]$
[/c]

マウント成功しました

rootの拡張

リストアの前にrootの拡張をしていきます

残りの部分をrootに割り当てる

rootの使用領域を増やすため、残りの部分をrootに割り振ります
[c]
[resize@localhost ~]$ sudo lvextend -l +100%FREE /dev/centos/root
Logical volume root successfully resized.
[/c]

Logical volume root successfully resized. とでれば成功です

ファイルシステムを拡張

ファイルシステムの拡張をします

[c]
[resize@localhost work]$ sudo xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=3276800 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=13107200, 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=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13107200 to 107710464
[/c]

確認

dfコマンドで確認をしてみます

[c]
[resize@localhost work]$ df -TH
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 19M 2.0G 1% /dev/shm
tmpfs tmpfs 2.0G 11M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 442G 7.6G 434G 2% /
/dev/sda1 xfs 1.1G 177M 887M 17% /boot
tmpfs tmpfs 389M 54k 389M 1% /run/user/0
/dev/mapper/centos-home xfs 54G 34M 54G 1% /home
[/c]

リストア

マウントしたら、今度はhomeディレクトリをリストアします
[c]
[resize@localhost ~]$ cd /work/
[resize@localhost work]$ sudo xfsrestore -J -L home -f home.dump /home
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.4 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: found dump matching specified label:
xfsrestore: hostname: localhost.localdomain
xfsrestore: mount point: /home
xfsrestore: volume: /dev/mapper/centos-home
xfsrestore: session time: Wed Nov 23 18:46:10 2016
xfsrestore: level: 0
xfsrestore: session label: "home"
xfsrestore: media label: "drive"
xfsrestore: file system id: 6e53a8ec-c130-444a-bcfb-e139ef2d25e0
xfsrestore: session id: 33e8afd3-c614-4c8b-a795-5a0db3b3eefc
xfsrestore: media id: 65f32fe1-6ce5-4bb3-ae85-d18e85d28195
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 186 directories and 945 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore: stream 0 /work/home.dump OK (success)
xfsrestore: Restore Status: SUCCESS
[resize@localhost work]$
[/c]

色々ログがでてきますが、xfsrestore: Restore Status: SUCCESS とでたらOKです

まとめ

無事に成功してよかったです。

個人支援・寄付について

サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。

  • ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS