(O+P)ut

ITエンジニアのアウトプット録



(O+P)ut


【RHEL】xfsファイルシステムを縮小させる

はじめに

一般的にresize2fsコマンドで行うファイルシステムの拡張/縮小ですが、Red Hat Enterprise Linux Server 7からファイルシステムに標準採用されているxfs*1は、縮小に対しては削除してから作り直すというステップが必要です。

本記事では確認コマンドを随時取りながら縮小のステップを解説しています。

コマンド確認環境
Red HaT EnterPrise Linux Server release 7.5

ファイルシステムを縮小させる

そもそもファイルシステムを縮小させる目的は、物理ボリュームの空き容量の確保にあります。

以下にあるように、ファイルシステムを縮小させるということはそれに対応する論理ボリューム(LV)を縮小させることに繋がり、結果的にボリュームグループ(VG)、物理ボリューム(PV)の空き容量が大きくなります。
f:id:mtiit:20190312100337p:plain
https://networklessons.com/uncategorized/extend-lvm-partition より画像を抜粋

xfsファイルシステムの縮小のステップは以下になります

以下、実際の手順です。

xfsの縮小手順

事前確認作業

まずは物理ボリューム、論理ボリュームの空き容量を確認します。

pvscanコマンドで物理ボリュームの空き容量を

# pvscan
PV /dev/sda2 VG rhel lvm2 [<100.00 GiB / 5.00 GiB free]
Total ...

vgsコマンドで論理ボリュームの空き容量を

# vgs
VG #PV #LV #SN Attr VGSize VFree
rhel X       X      X    X  <100.00g  5.00g

表示できます。
また、ボリュームグループ名がrhelであることもあわせて確認できました。

次に、ボリュームグループにある論理ボリューム名をlvscanコマンドで確認します。

# lvscan
ACTIVE '/dev/rhel/root' [XX GiB] inherit
ACTIVE '/dev/rhel/home' [XX GiB] inherit
ACTIVE '/dev/rhel/swap' [XX GiB] inherit
ACTIVE '/dev/rhel/var' [XX GiB] inherit
ACTIVE '/dev/rhel/opt' [40 GiB] inherit

今回はoptを対象にします。
特定の論理ボリュームについて詳細情報を確認する場合はlvdisplayコマンドで上で確認したパスを引数にします。

# lvdisplay /dev/rhel/opt
--- Logical  volume ---
LV Path  /dev/rhel/opt
LV Name  opt
VG Name  rhel
...

対象のファイルシステムがxfsであることを念のためdfコマンドで確認してください。

# df -T
...
/dev/mapper/rhel-opt  xfs  XX  XX  XX X% /opt
...

ここまでが事前の確認作業です。

ここから削除、再作成を行います。
データのバックアップが必要な場合はxfsdumpというツールまたはcpコマンドにて別ファイルシステムにコピーしてください。

今回はopt配下の初期構築を想定し、特にバックアップファイルはないとして話を進めます。

本作業

まずは対象ファイルシステムumountコマンドでアンマウントします。

# umount /opt

この作業を行うとdfコマンドでファイルシステムが見えなくなっているはずです。

# df -T
...

次に、論理ボリュームをlvchangeコマンドで非アクティブ化させます。

# lvchange -an /dev/rhel/opt

anはavailableをnoにするという意味です。

再度lvscanコマンドでACTIVEがinactiveに変更されていることを確認します。

# lvscan
...
inactive '/dev/rhel/opt' [40 GiB] inherit

これが確認できれば論理ボリュームをlvremoveコマンドで削除します。

# lvremove /dev/rhel/opt
  Logical volume "opt" successfully removed

削除されればlvscanコマンドで該当の論理ボリュームは確認できなくなります。

この段階でpvscan、vgsコマンドで空き容量を表示すれば削除した分増加していることを確認できます。

# pvscan
PV /dev/sda2 VG rhel lvm2 [<100.00 GiB / 45.00 GiB free]
Total ...

削除した論理ボリュームを再度同名で作成します。
lvcreateコマンドを用い、オプションLでサイズをオプションnで論理ボリューム名とボリュームグループ名を指定します。

# lvcreate -L 10G -n opt rhel
 Logical volume "opt" created

このコマンド実行後にlvscanを行うと作成した論理ボリュームがACTIVE状態で表示され、pvscanを行うと作成した分だけ空き容量が減っています。

最後に、作成した論理ボリュームに対してmkfs.xfsコマンドでファイルシステムをxfs形式で作成します。

# mkfs.xfs /dev/rhel/opt

作成後、dfコマンドで表示されることが確認できれば作業終了です。

# df -T
...
/dev/mapper/rhel-opt  XX XX XX X% /opt

終わりに

実際、ディスクの大容量化に伴い拡張することはあれ縮小するケースは珍しくなってきました。
xfsとしても大容量化に対応すべく従来のex系のファイルシステムの上限である16TBを大きく上回る500TBまでをサポートしています。

そうはいっても、ケースによっては必要な作業かつ失敗すれば面倒な分野なので確認コマンド多めに整理しました。
参考になれば幸いです。

*1:xfs : eXtents File System