CentOS 7 ディスク(XFS)の縮小

XFS ファイルシステムはマウントしている状態でも拡大することはできますが、逆にそのサイズを縮小することはできません。

Redhat Enterprise Linux 7

GFS2 および XFS のファイルシステムでは縮小に対応していないため、GFS2 または XFS のファイルシステムが含まれる論理ボリュームのサイズは縮小できません。

Redhat Enterprise Linux 8

XFSファイルシステムはサイズの縮小が対応していないです。日常の運用の中にこのような要望があります。今回はその解決策を共有致します。

さて、縮小のイメージを先に共有します。

※ポイントは縮小前と同じディスクレイアウトにする。

これから実現方法を説明します。

1、HDD(sdb)を追加
2、CentOS7LiveCDにて対象サーバを起動
3、Terminalを起動し、lsblkにてHDDのレイアウトを確認
4、fdiskにて既存HDDのパーティション構成を確認
5、bootsectorのコピー
6、fdiskにて新HDDのパーティション作成
7、ファイルシステムの初期化
8、データ移行準備
9、データ移行
※これで移行が終わる。サーバを停止し、CentOS7LiveCDとsdaを外す。
10、ドキドキしながら起動ボッタンを押すとログイン画面出るまで待つ

簡単な説明になりますが、お役に立つと幸いです。

Linuxのカスタマイズスクリプト

直近、クラウドプロバイダーの案件を携わっています。仮想サーバの新規開通は既存のテンプレートから作ります。カスタマイズの項目は決まっていますが、設定値は毎回変わります。簡単な要件ではありますが、実現できるまで2〜3日もかかりました。

カスタマイズスクリプトはBashで作りました。全体構造は以下になります。

1、メニュー
EasyInfra様 CentOS新規開通スクリプト
============================================
下記のリストから望ましいタスクを選んで下さい。
 1、ホスト名とドメイン名の設定
 2、標準設定
 3、カスタマイズ設定
 4、パスワードの再設定(複数ユーザー)
============================================
半角のタスク番号を入力下さい。[1~4]:
2、設定項目
#ファクション定義
selinux ()
{
   if getenforce == "enabled"
   then
      sed -i "s/^SELINUX=.*$/SELINUX=disabled/" /etc/sysconfig/selinux
   fi
}

firewalld ()
{
   systemctl stop firewalld && ¥
   systemctl disable firewalld.service && ¥
   systemctl status firewalld.service
}
3、カスタマイズ設定
case "$task_id" in
 1)
   ~略~
   ;;
 2)
   selinux
   firewalld
   ;;
 3)
   ~略~
   ;;
 4)
   ~略~
   ;;
 *)
   echo "半角のタスク番号(1~4)を入力下さい。"
   ;;
esac

↑はあくまで例になります。設定項目ごとファクションを定義し、カスタマイズの部分はファクションの呼び出すだけで済みます。OSのバージョン変更より仕様が変わった場合も対象ファクションの編集のみで対応できます。お仕事は楽になるでしょう!