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

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

YouTube

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

現在の状況

[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 ~]#

centos-rootには50GBで、centos-homeに411GBとなっています。これを変えていきたいなと思っています

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

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

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

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

実際に作業していく

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

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

まずは新しいユーザーのために「work」ディレクトリを作成します

[root@localhost ~]# mkdir /work

resizeユーザーの作成

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

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

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

xfsdumpをインストール

homeディレクトリをdumpするためにxfsdumpをインストールします。もしかしたら既に入っているかも知れません

[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 /]#

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

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

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

[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 はインストール済みか最新バージョンです
何もしません

インストール済みでした

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

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

ユーザー切り替え

[root@localhost ~]# su resize

バックアップ

[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

dumpファイルは/workの中に作られます。xfsdump: Dump Status: SUCCESS とでたら成功です。

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

バックアップが終わったらhomeディレクトリをアンマウントします
まずはhomeがマウントされているか確認します

[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

ちゃんといます。

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

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

[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

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

homeのボリュームの削除

アンマウントしたので、ディスク自体の削除をします。WindowsでいうとのこDドライブの完全削除とか、そんな感じです

[resize@localhost ~]$ sudo lvchange -an /dev/mapper/centos-home
[resize@localhost ~]$ sudo lvremove /dev/mapper/centos-home
  Logical volume "home" successfully removed

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

homeの再作成・マウント

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

50GBのhomeを作成

homeディクレトリは50GBにしたいので50GB作成します

sudo lvcreate -L 50G -n home centos

ファイルシステムの作成

次に、ファイルシステムを作成します

[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 ~]$

マウント

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

[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]$

マウント成功しました

rootの拡張

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

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

rootの使用領域を増やすため、残りの部分をrootに割り振ります

[resize@localhost ~]$ sudo lvextend -l +100%FREE /dev/centos/root
Logical volume root successfully resized.

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

ファイルシステムを拡張

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

[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

確認

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

[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

リストア

マウントしたら、今度はhomeディレクトリをリストアします

[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]$

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

まとめ

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

個人支援・寄付について

サイトラボではBuildreeの開発などのため、現在個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではkyashというサービスをつかっております。ビットコインでも受け付けております。