Edited at

CentOS 7(XFS)のパーティションを縮小する手順

More than 3 years have passed since last update.

XFSは論理ボリュームの縮小に対応していません。

パーティションの縮小をするには削除→作成の手順が必要になります。

ちょっと検索しても手順がみつからなかったのでまとめておきます。


環境

VirtualBoxにCentOS 7を最小構成でインストール

lvmでhomeにroot以外の全ての領域を割当てた後、パーティションの縮小をする手順

オンライン・リモートでの作業を想定している。

対象のボリュームをアンマウントできない場合、シングルユーザーモードにする必要がある為、この手順は使えない。

(停止できないプロセスがあるボリュームなど)

$ uname -s -r -v -m -o

Linux 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 GNU/Linux
$ cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 2.0G 924M 1.1G 46% /
devtmpfs 236M 0 236M 0% /dev
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 245M 4.3M 241M 2% /run
tmpfs 245M 0 245M 0% /sys/fs/cgroup
/dev/mapper/centos-home 4.7G 33M 4.7G 1% /home
/dev/sda1 497M 119M 379M 24% /boot


参考


リサイズ手順

/home をリサイズする為にリサイズ用ユーザーを/home以外にホームディレクトリを持つユーザーを作りリサイズ作業を行う


手順概要


  1. /home以外にホームを持つwheelに所属するユーザーを作る

  2. 作業ユーザーでssh

  3. /home をアンマウント

  4. /homeを縮小

  5. 空領域を新規パーティションにする


手順詳細

作業用ホームを作り作業ユーザーを作る

ユーザー作成後、sshの鍵を設置する

selinuxが有効な場合、ラベルの設定もおこなう

$ cd /

$ sudo mkdir work
$ sudo useradd -d /work/resize -m -G wheel -p resize resize
$ sudo passwd resize
$ cd /work
$ sudo -u resize mkdir resize/.ssh
$ sudo -u resize vi resize/.ssh/authorized_keys
$ sudo -u resize chmod 700 resize/.ssh
$ sudo -u resize chmod 600 resize/.ssh/authorized_keys
$ sudo chcon -t ssh_home_t resize/.ssh
$ sudo chcon -t ssh_home_t resize/.ssh/authorized_keys
$ exit

リサイズ用ユーザー(resize)でログイン

local$ ssh -l resize srv1

xfsdump のインストール

$ sudo yum install xfsdump

ダンプ作成

$ cd /work

$ sudo xfsdump -J -L home -M drive -f home.dump /home
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control
xfsdump: level 0 dump of srv1.localdomain:/home
xfsdump: dump date: Fri Apr 10 21:29:26 2015
xfsdump: session id: 397ff781-1fe4-4799-b5d4-6c4948bb807a
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: 47936 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 32928 bytes
xfsdump: dump size (non-dir files) : 6336 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /work/home.dump OK (success)
xfsdump: Dump Status: SUCCESS

/home アンマウント

$ sudo umount /dev/mapper/centos-home

論理ボリュームの情報取得

VG name が必要になる

$ sudo lvdisplay

利用停止 → 削除

$ sudo lvscan

$ sudo lvchange -an /dev/centos/home
$ sudo lvremove /dev/centos/home

新/home 作成

$ sudo lvcreate -L 1.7G -n home centos

$ sudo mkfs.xfs /dev/centos/home
$ sudo mount /dev/centos/home
$ sudo xfsrestore -J -L home -f home.dump /home

残パーティション作成

$ sudo lvcreate -l 100%FREE -n drbd centos

$ sudo mkfs.xfs /dev/centos/drbd
$ sudo mkdir /drbd
$ sudo vi /etc/fstab
# drbdのマウント情報を追加する
/dev/mapper/centos-drbd /drbd xfs defaults 0 0
$ sudo mount /dev/centos/drbd