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のバージョン変更より仕様が変わった場合も対象ファクションの編集のみで対応できます。お仕事は楽になるでしょう!

phpの楽しさ

Web系の案件が増えているため、phpの知識は足りないです。今更phpの開発に転身するつもりはありませんが、ソースの解析ができるぐらいであれば間違いないプラスになると思っています。前述の為にphpの勉強を始めました。

左図はある案件のテスト画面でした。WebサーバーとRDSデーターベースを異なるリージョンに設置し、SQL文の実行時間をページ上に公開する仕組みでした。簡単な画面でしたが、自分的には良い勉強になりました。

右図を見ると、簡単過ぎと思う人も居るんですが、実はphpの実務経験が無ければ、テストコードの実施結果はすぐ答えられるでしょうか。何でこんなテストを実施したのは、下記のコードの実施結果を確認したかったです。

/*ソース抜粋*/
global $wp_filter, $wp_actions, $wp_current_filter;
if ( $wp_filter ) {
$wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter );
} else {
$wp_filter = array();
}

上記のコードはHTMLのエレメントでそれぞれ色を付けましたよ。大変だ!