サーバーディスク交換およびデータマイグレーション実戦エンジニアリング手順
1行要約
サーバーストレージの増設・交換は単なるファイルコピーではなく、**(1) DBトランザクション遮断と整合性保証、(2) rsync -avAXによるACL/SELinuxコンテキスト保持、(3) /etc/fstab UUIDベース安全マウント、(4) 元ディレクトリ保持(ロールバック経路)**が不可欠な高難度インフラ作業である。
1. ディスク交換・移行の4大原則
[データディレクトリ無損失移行プロセス]
1. 事前同期 (rsync 1次) ──(オンライン稼働中)──> [バックグラウンドコピー 95%完了]
2. サービス停止 (Stop) ──(メンテナンス突入)──> [書き込み完全遮断]
3. 最終差分同期 (rsync 2次) ──(数秒で完了)──> [100%整合性一致]
4. マウント切替 & サービス起動 ──(/etc/fstab UUID)──> [サービス正常再開]2. 実践実行手順 (SOP)
Step 1. 事前バックグラウンド同期(オンライン状態)
数百GBのDBデータは稼働中に1次コピーを先行実行し、本番停止時間を最小化する。
bash
# 所有権(-a)、属性(-A)、SELinuxコンテキスト(-X)を完全保持
rsync -avAX --progress /var/lib/mysql/ /data/mysql_new/Step 2. サービスデーモンのクリーンシャットダウン
バッファプールとWALログをディスクにフラッシュするため安全に停止。
bash
systemctl stop mariadbStep 3. 最終差分同期および検証
bash
rsync -avAX --delete /var/lib/mysql/ /data/mysql_new/
ls -ld /data/mysql_newStep 4. /etc/fstab UUIDマウント登録
再起動時のデバイス名変動を防ぐためブロックUUIDを使用。
bash
blkid /dev/sdb1
# /etc/fstab: UUID=xxxx-xxxx /data xfs defaults,noatime 0 0Step 5. リネームによるロールバック確保と起動
bash
mv /var/lib/mysql /var/lib/mysql_backup_20260517
ln -s /data/mysql_new /var/lib/mysql
systemctl start mariadb3. コアチェックポイント (Gotchas)
- SELinuxコンテキストの復元:
rsync時に-Xが抜けるとSELinuxポリシーでmysqldがPermission Deniedとなるため、restorecon -R /data/mysql_newを実行する。 noatimeマウントオプション: DB専用データディスクはマウント時にnoatimeを指定し、不要なアクセスタイム更新I/Oを削減する。
投稿日: 2026-05-17 06:09:18更新日: 2026-08-15 13:57:00