🌐 173.0.0.x ファブリックネットワーク構築完了メモ
✅ 構築完了日: 2026年3月30日
✅ ステータス: 完全メッシュ接続確立・全リンク動作確認済み
✅ 目的: 旧172.31.x.xファブリックから173.0.0.x/30サブネットへの完全移行
📋 ネットワーク設計
完全メッシュトポロジー

3台のサーバー(Supermicro SSG-6048R、Dell PowerEdge R640、hirame X58A-UD3R)を各2ポートのQSFP+ 10GbE Mellanox ConnectX-3 Proで完全メッシュ接続。

リンクサーバー1IF名IPサーバー2IF名IP
Link1SupermicroSM-R640-FAB173.0.0.1/30R640R640-SM-FAB173.0.0.2/30
Link2SupermicroSM-HIRAME-FAB173.0.0.5/30hirameHIRAME-SM-FAB173.0.0.6/30
Link3R640R640-HIRAME-FAB173.0.0.9/30hirameHIRAME-R640-FAB173.0.0.10/30
サブネット割り当て
  • 173.0.0.0/30: Supermicro ↔ R640 直接リンク
  • 173.0.0.4/30: Supermicro ↔ hirame 直接リンク
  • 173.0.0.8/30: R640 ↔ hirame 直接リンク
🔧 各サーバーの設定
Supermicro SSG-6048R 設定

設定ファイル: /etc/netplan/00-supermicro.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    SM-R640-FAB:
      match:
        macaddress: "50:6b:4b:7f:0b:60"
      optional: true
      addresses:
        - 173.0.0.1/30
      dhcp4: false
      dhcp6: false
      accept-ra: false
      set-name: "SM-R640-FAB"
      mtu: 1500
    SM-HIRAME-FAB:
      match:
        macaddress: "50:6b:4b:7f:0b:61"
      optional: true
      addresses:
        - 173.0.0.5/30
      dhcp4: false
      dhcp6: false
      accept-ra: false
      set-name: "SM-HIRAME-FAB"
      mtu: 1500

物理インターフェース:

  • SM-R640-FAB: enp129s0 (MAC: 50:6b:4b:7f:0b:60)
  • SM-HIRAME-FAB: enp129s0d1 (MAC: 50:6b:4b:7f:0b:61)
Dell PowerEdge R640 設定

設定ファイル: /etc/netplan/00-mikyun-cloud.yaml

    R640-SM-FAB:
      match:
        macaddress: "70:10:6f:a7:56:f1"
      optional: true
      addresses:
        - 173.0.0.2/30
      dhcp4: false
      dhcp6: false
      accept-ra: false
      set-name: "R640-SM-FAB"
      mtu: 1500
      routes:
        - to: 173.0.0.4/30
          via: 173.0.0.1
    R640-HIRAME-FAB:
      match:
        macaddress: "70:10:6f:a7:56:f2"
      optional: true
      addresses:
        - 173.0.0.9/30
      dhcp4: false
      dhcp6: false
      accept-ra: false
      set-name: "R640-HIRAME-FAB"
      mtu: 1500

物理インターフェース:

  • R640-SM-FAB: enp59s0 (MAC: 70:10:6f:a7:56:f1)
  • R640-HIRAME-FAB: enp59s0d1 (MAC: 70:10:6f:a7:56:f2)

ルーティング: 173.0.0.4/30 (Supermicro-hirame) へはSupermicro経由でルーティング

hirame X58A-UD3R 設定

設定ファイル: /etc/netplan/99-static.yaml

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    HIRAME-SM-FAB:
      match:
        macaddress: "e4:1d:2d:7a:f1:c2"
      dhcp4: false
      addresses:
        - 173.0.0.6/30
      routes:
        - to: 10.250.0.0/24
          via: 173.0.0.5
        - to: 192.168.20.0/24
          via: 173.0.0.5
        - to: 173.0.0.0/30
          via: 173.0.0.5
      set-name: "HIRAME-SM-FAB"
    HIRAME-R640-FAB:
      match:
        macaddress: "e4:1d:2d:7a:f1:c1"
      dhcp4: false
      addresses:
        - 173.0.0.10/30
      set-name: "HIRAME-R640-FAB"

物理インターフェース:

  • HIRAME-SM-FAB: enp4s0d1 (MAC: e4:1d:2d:7a:f1:c2) → Supermicro
  • HIRAME-R640-FAB: enp4s0 (MAC: e4:1d:2d:7a:f1:c1) → R640

ルーティング: 10.250.0.0/24、192.168.20.0/24、173.0.0.0/30 はSupermicro経由

🔐 Supermicro IPフォワーディング設定

Supermicro が R640 ↔ hirame 間のルーターとして機能するため、IPフォワーディングとiptablesルールが必要です。

IPフォワーディング有効化
# 恒久的に有効化
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# 確認
sysctl net.ipv4.ip_forward
iptables FORWARD ルール

DockerインストールによりFORWARDチェインのデフォルトポリシーがDROPになっているため、ファブリック間の転送を明示的に許可する必要があります。

# Supermicro で実行
sudo iptables -I FORWARD -s 173.0.0.0/30 -d 173.0.0.4/30 -j ACCEPT
sudo iptables -I FORWARD -s 173.0.0.4/30 -d 173.0.0.0/30 -j ACCEPT

# 永続化
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
sudo systemctl enable netfilter-persistent

保存先: /etc/iptables/rules.v4

確認コマンド
# FORWARDルール確認
sudo iptables -L FORWARD -n -v --line-numbers

# ルールファイル確認
cat /etc/iptables/rules.v4
✅ 疎通確認コマンド
⚠️ 重要: 送信元IPを -I オプションで明示的に指定して、ファブリック経由の通信を強制してください。指定しない場合、別のVLAN経由でルーティングされる可能性があります。
直接リンク確認
# Supermicro → R640
ping -I 173.0.0.1 -c 3 173.0.0.2

# Supermicro → hirame
ping -I 173.0.0.5 -c 3 173.0.0.6

# R640 → Supermicro
ping -I 173.0.0.2 -c 3 173.0.0.1

# R640 → hirame (直接)
ping -I 173.0.0.9 -c 3 173.0.0.10

# hirame → Supermicro
ping -I 173.0.0.6 -c 3 173.0.0.5

# hirame → R640 (直接)
ping -I 173.0.0.10 -c 3 173.0.0.9
ルーティング経由確認(Supermicro経由)
# hirame → R640 (Supermicro経由)
ping -I 173.0.0.6 -c 3 173.0.0.2

# R640 → hirame (Supermicro経由)
ping -I 173.0.0.2 -c 3 173.0.0.6

期待結果: ttl=63 (1ホップ経由)、レイテンシ約0.3ms

🛠️ トラブルシューティング
問題1: hirame → R640 の通信が失敗

症状: hirameからR640へのpingが100% packet loss

原因: Supermicro の iptables FORWARD ポリシーがDROP

確認:

# Supermicro で実行
sudo iptables -L FORWARD -n -v
# → policy DROP が表示される場合は問題あり

解決: 上記「iptables FORWARD ルール」を適用

問題2: netplan apply 後にインターフェースが作成されない

症状: netplan設定後、ip addr show で目的のインターフェース名が表示されない

原因: MACアドレスの不一致、またはインデントエラー

確認:

# 実際のMACアドレス確認
ip link show | grep -A 1 "enp"

# netplan設定確認
sudo netplan get

解決: MACアドレスが正しいか確認し、YAMLインデントを修正

問題3: NFSマウントが失敗(access denied)

症状: mount.nfs: access denied by server

原因: Supermicro の /etc/exports が旧IPサブネットのみ許可

確認:

# Supermicro で実行
sudo exportfs -v | grep 173.0.0

解決: /etc/exports を 173.0.0.0/30 に更新して sudo exportfs -ra

📦 関連ファイル・サービス
NFSエクスポート設定(Supermicro)

設定ファイル: /etc/exports

/srv/storage 173.0.0.0/30(rw,sync,no_subtree_check,no_root_squash,fsid=0)
/srv/storage/nextcloud 173.0.0.0/30(rw,sync,no_subtree_check,no_root_squash)
/srv/storage/nextcloud/data *(rw,sync,no_subtree_check,no_root_squash)
/srv/storage/nextcloud/data 173.0.0.0/30(rw,sync,no_subtree_check,no_root_squash)
/srv/storage/nextcloud/backup 173.0.0.0/30(rw,sync,no_subtree_check,no_root_squash)
R640 NFSマウント設定

設定ファイル: /etc/fstab

173.0.0.1:/srv/storage/nextcloud-data /srv/storage/SM-storage nfs defaults,_netdev,noatime,nofail,x-systemd.automount,x-systemd.device-timeout=10,timeo=600,retrans=5 0 0
173.0.0.1:/srv/storage/nextcloud/backup /mnt/backup nfs defaults,_netdev 0 0

確認コマンド:

df -h | grep 173.0.0
mount | grep SM-storage
バックアップスクリプト更新

ファイル: /opt/mikyun/bin/remote_backup.sh

変更内容:

  • hirameのIP: 172.31.22.2 → 173.0.0.10
  • VPS部分を完全削除(バックアップ不要のため)

実行コマンド:

bash /opt/mikyun/bin/remote_backup.sh
📊 構築完了時の状態
全リンク動作確認済み(2026-03-30)
  • ✅ Supermicro ↔ R640: 0.2ms レイテンシ
  • ✅ Supermicro ↔ hirame: 0.2ms レイテンシ
  • ✅ R640 ↔ hirame (直接): 0.2ms レイテンシ
  • ✅ R640 ↔ hirame (Supermicro経由): 0.3ms、ttl=63
  • ✅ NFSマウント: 173.0.0.1経由で正常動作
  • ✅ hirameバックアップ: 173.0.0.10経由で正常動作

永続化完了:

  • ✅ 全サーバーのnetplan設定保存
  • ✅ Supermicro iptables設定保存(/etc/iptables/rules.v4)
  • ✅ Supermicro NFSエクスポート更新
  • ✅ R640 fstab更新
🔄 今後のメンテナンス
再起動後の確認
# 各サーバーで実行
ip addr show | grep "173.0.0"

# Supermicro で確認
sudo iptables -L FORWARD -n -v --line-numbers

# R640 で確認
df -h | grep 173.0.0
新規サーバー追加時
  1. 新サーバーのファブリックIF設定(173.0.0.x/30 サブネット追加)
  2. Supermicro iptables に新サブネット間のFORWARDルール追加
  3. 必要に応じてSupermicro NFSエクスポートに新サブネット追加
  4. sudo netfilter-persistent save で永続化
📝 補足: 旧172.31.x.x ファブリック設定は完全に廃止されました。すべての通信は173.0.0.x経由で行われます。
🔄 バックアップ設定更新メモ(2026-03-30)
✅ 更新完了: 2026年3月30日
✅ 主な変更: 173.0.0.x ファブリックネットワーク対応 / VPSバックアップ廃止
📋 変更サマリー
項目変更前変更後理由
NFSマウント元IP172.31.20.2 (旧ファブリック)173.0.0.1 (新ファブリック)ファブリックネットワーク刷新
hirame SSH接続先172.31.22.2173.0.0.10R640-hirame直接リンク利用
VPSバックアップ実施(5世代保持)廃止VPS構成変更により不要化
バックアップ対象VPS + hiramehirameのみ運用簡素化
🛠️ スクリプト修正内容
remote_backup.sh の変更点

ファイルパス: /opt/mikyun/bin/remote_backup.sh

1. VPS関連セクション完全削除

削除された機能:
  • VPS WireGuard設定バックアップ(/etc/wireguard/)
  • VPS Nginx設定バックアップ(/etc/nginx/)
  • VPS dnsmasq設定バックアップ(/etc/dnsmasq.d/)
  • VPS SSL証明書バックアップ(/etc/letsencrypt/)
  • VPS wg0ランタイム設定バックアップ

理由: VPS構成が変更され、R640からの直接バックアップが不要になったため

2. hirameのIPアドレス更新

# 変更前(旧ファブリック・間接接続)
hirame@172.31.22.2:/etc/netplan/

# 変更後(新ファブリック・直接接続)
hirame@173.0.0.10:/etc/netplan/

全5箇所を更新:

  • netplan設定バックアップ
  • systemd設定バックアップ
  • Dockerコンテナ一覧取得
  • ホームディレクトリバックアップ
  • スクリプト内表示メッセージ

3. 世代管理の簡素化

# 変更前(VPS + hirame)
ls -dt "${BACKUP_BASE}/vps/"[0-9]*/ 2>/dev/null | tail -n +6 | xargs rm -rf
ls -dt "${BACKUP_BASE}/hirame/"[0-9]*/ 2>/dev/null | tail -n +6 | xargs rm -rf

# 変更後(hirameのみ)
ls -dt "${BACKUP_BASE}/hirame/"[0-9]*/ 2>/dev/null | tail -n +6 | xargs rm -rf
修正後のスクリプト実行例
$ bash /opt/mikyun/bin/remote_backup.sh

╔══════════════════════════════════════════════════╗
║   🖥️  hirameバックアップ                         ║
╠══════════════════════════════════════════════════╣
║  開始時刻: 2026-03-30 07:00:12                    ║
╚══════════════════════════════════════════════════╝

━━━ hirame PC (173.0.0.10) ━━━━━━━━━━━━━━━━━━━━━
  [⏳ 実行] hirame: netplan設定...
  [✅ 完了] netplan設定 完了
  [⏳ 実行] hirame: systemd設定...
  [✅ 完了] systemd設定 完了
  [⏳ 実行] hirame: Dockerコンテナ一覧...
  [✅ 完了] Docker一覧 完了
  [⏳ 実行] hirame: ホームディレクトリ(設定ファイルのみ)...
  [✅ 完了] ホームディレクトリ 完了

  [⏳ 実行] 世代管理(5世代保持)...
  [✅ 完了] 世代管理完了

╔══════════════════════════════════════════════════╗
║  ✅ hirameバックアップ正常完了!                  ║
╠══════════════════════════════════════════════════╣
║  完了時刻: 2026-03-30 07:00:47                    ║
║  hirame : /srv/storage/SM-storage/backup/hirame/20260330_070012  ║
╚══════════════════════════════════════════════════╝
🗄️ NFSマウント設定変更
R640 fstab 更新

ファイルパス: /etc/fstab

# 変更前(旧ファブリック 172.31.20.2)
172.31.20.2:/srv/storage/nextcloud-data /srv/storage/SM-storage nfs defaults,_netdev,noatime,nofail,x-systemd.automount,x-systemd.device-timeout=10,timeo=600,retrans=5 0 0
172.31.20.2:/srv/storage/nextcloud/backup /mnt/backup nfs defaults,_netdev 0 0

# 変更後(新ファブリック 173.0.0.1)
173.0.0.1:/srv/storage/nextcloud-data /srv/storage/SM-storage nfs defaults,_netdev,noatime,nofail,x-systemd.automount,x-systemd.device-timeout=10,timeo=600,retrans=5 0 0
173.0.0.1:/srv/storage/nextcloud/backup /mnt/backup nfs defaults,_netdev 0 0

削除した行:

# 不要なマウント設定を削除
#173.0.0.1:/mnt/maguro-big /mnt/storage30 nfs defaults,_netdev 0 0
# ↑ このパスは存在しないため削除
Supermicro NFSエクスポート設定更新

ファイルパス: /etc/exports (Supermicro)

# 変更前(旧ファブリック 172.31.20.0/24)
/srv/storage 172.31.20.0/24(rw,sync,no_subtree_check,no_root_squash,fsid=0)
/srv/storage/nextcloud 172.31.20.0/24(rw,sync,no_subtree_check,no_root_squash)
/srv/storage/nextcloud/data 172.31.20.0/24(rw,sync,no_subtree_check,no_root_squash)
/srv/storage/nextcloud/backup 172.31.20.0/24(rw,sync,no_subtree_check,no_root_squash)

# 変更後(新ファブリック 173.0.0.0/30)
/srv/storage 173.0.0.0/30(rw,sync,no_subtree_check,no_root_squash,fsid=0)
/srv/storage/nextcloud 173.0.0.0/30(rw,sync,no_subtree_check,no_root_squash)
/srv/storage/nextcloud/data *(rw,sync,no_subtree_check,no_root_squash)
/srv/storage/nextcloud/data 173.0.0.0/30(rw,sync,no_subtree_check,no_root_squash)
/srv/storage/nextcloud/backup 173.0.0.0/30(rw,sync,no_subtree_check,no_root_squash)

適用コマンド:

# Supermicro で実行
sudo exportfs -ra
sudo exportfs -v | grep 173.0.0
✅ 動作確認
NFSマウント確認
# R640 で実行
df -h | grep 173.0.0

# 期待される出力
173.0.0.1:/srv/storage/nextcloud-data     66T  2.8T   63T   5% /srv/storage/SM-storage
173.0.0.1:/srv/storage/nextcloud/backup   66T  2.8T   63T   5% /mnt/backup
hirameへのSSH接続確認
# R640 で実行
ssh hirame@173.0.0.10 "hostname"

# 期待される出力
hirame-X58A-UD3R
バックアップ実行確認
# R640 で実行
bash /opt/mikyun/bin/remote_backup.sh

# 成功時の確認
ls -lt /srv/storage/SM-storage/backup/hirame/ | head -5

# 最新バックアップの中身確認
ls -la /srv/storage/SM-storage/backup/hirame/$(ls -t /srv/storage/SM-storage/backup/hirame/ | head -1)/
📦 バックアップ対象一覧(更新版)
対象内容保存先世代接続IP
Nextcloud ユーザーデータ/mnt/maguro/nextclouddata(76GB)SM-storage/backup/nextcloud/latest_data/差分rsync・常に最新ローカル
Nextcloud MariaDBnextcloudデータベース全体SM-storage/backup/nextcloud/日付/7世代ローカル
Nextcloud config.phpNC本体設定ファイルSM-storage/backup/nextcloud/日付/7世代ローカル
Nextcloud custom_appsカスタムアプリ群SM-storage/backup/nextcloud/日付/7世代ローカル
hirame netplan/etc/netplan/SM-storage/backup/hirame/日付/netplan/5世代173.0.0.10
hirame systemd/etc/systemd/system/SM-storage/backup/hirame/日付/systemd/5世代173.0.0.10
hirame home/home/hirame/(.cache等除外)SM-storage/backup/hirame/日付/home/5世代173.0.0.10
hirame Dockerコンテナ一覧docker ps -a の出力SM-storage/backup/hirame/日付/docker_containers.txt5世代173.0.0.10
⚠️ 削除されたバックアップ対象:
  • ❌ VPS WireGuard設定(/etc/wireguard/)
  • ❌ VPS Nginx設定(/etc/nginx/)
  • ❌ VPS dnsmasq設定(/etc/dnsmasq.d/)
  • ❌ VPS SSL証明書(/etc/letsencrypt/)
  • ❌ VPS wg0ランタイム設定

理由: VPS構成変更により、これらの設定は別の方法で管理されるようになりました。

🔧 保存先構成(更新版)
パス実体容量接続方式
/srv/storage/SM-storage/Supermicro NFS(173.0.0.166TB(空き63TB)173.0.0.x ファブリック経由
/srv/storage/backup/R640ローカル(/dev/sda2)2.2TB(空き668GB)ローカル

バックアップの実体はすべてSupermicro(NFS)側に保存。 R640ローカルは旧バックアップ用途のみ。

⏰ 自動実行(cron)

cron設定は変更なし。引き続き以下のスケジュールで実行されます。

時刻スクリプト内容
毎日 3:00nc_backup.shNextcloud完全バックアップ
毎日 4:00remote_backup.shhirameバックアップ(VPS削除)

確認コマンド:

crontab -l | grep -E "nc_backup|remote_backup"
🔄 今後の運用
定期確認項目
  1. NFSマウント状態: df -h | grep 173.0.0
  2. バックアップログ: tail -50 /var/log/remote_backup.log
  3. 最新バックアップ確認: ls -lt /srv/storage/SM-storage/backup/hirame/ | head -3
  4. 世代管理: 5世代以上のバックアップが残っていないか確認
トラブルシューティング

バックアップ失敗時の確認手順:

# 1. NFSマウント確認
df -h | grep SM-storage
# マウントされていない場合
sudo mount -a

# 2. hirame SSH接続確認
ssh hirame@173.0.0.10 "hostname"
# 接続できない場合
ping -I 173.0.0.9 173.0.0.10

# 3. ログ確認
tail -100 /var/log/remote_backup.log

# 4. 手動実行テスト
bash -x /opt/mikyun/bin/remote_backup.sh
📝 補足:
  • VPSバックアップが必要になった場合は、別途スクリプトを作成してください
  • 旧172.31.x.x経由のバックアップ設定は完全に廃止されました
  • すべてのリモートバックアップは173.0.0.xファブリックネットワーク経由で実行されます
✅ 更新完了確認項目:
  • ✅ remote_backup.sh スクリプト更新(VPS削除・IP変更)
  • ✅ R640 fstab 更新(173.0.0.1)
  • ✅ Supermicro /etc/exports 更新(173.0.0.0/30)
  • ✅ NFSマウント動作確認
  • ✅ hirameバックアップ動作確認
  • ✅ 世代管理動作確認
Supermicro SM-STG-P1 OS RAID1化作業記録

作業日: 2026年3月29日〜30日
担当者: みーきゅんわんわん
対象サーバー: Supermicro SSG-6048R-E1CR36N (SM-STG-P1)
目的: OS用M.2 SSDをRAID1ミラー化し、冗長性を確保する

1. 作業前の構成
ハードウェア構成
  • サーバー: Supermicro SSG-6048R-E1CR36N
  • マザーボード: X10DRi-T4+
  • 既存M.2 SSD: SAMSUNG MZVL2512HCJQ 476.9GB(OS起動用)
  • M.2スロット: 1スロットのみ(拡張が必要)
OS構成
  • OS: Ubuntu 24.04 LTS
  • ルートパーティション: /dev/nvme0n1p2 (476.4GB)
  • EFIパーティション: /dev/nvme0n1p1 (512MB)
  • ファイルシステム: ext4
2. ハードウェア追加作業
追加したハードウェア
  • M.2 SSD: Crucial CT500P2SSD8 465.8GB(新規購入)
  • M.2アダプター: PCIe x16 4スロット対応ライザーカード(Yahoo!オークション購入)
  • 取り付けスロット: Slot5 (CPU2側 PCIe x16スロット)
BIOS設定: PCIe Bifurcation有効化

M.2アダプターカードが4台のM.2 SSDを認識するには、PCIe x16スロットをx4×4に分割する必要がある。

BIOS設定手順:
1. サーバー起動時にDel キー連打 → BIOS Setup
2. Advanced → IIO Configuration → IIO2 Configuration
3. IOU2 (Slot5) を選択
4. Bifurcation設定: x16 → x4x4x4x4 に変更
5. Save & Exit
6. 再起動
重要: Bifurcation設定を行わないと、M.2アダプターに複数のSSDを接続しても1台しか認識されない。
デバイス認識確認
lsblk -o NAME,SIZE,MODEL

結果:
nvme0n1   476.9G SAMSUNG MZVL2512HCJQ-00BL7  (既存)
nvme1n1   465.8G CT500P2SSD8                 (新規追加)
3. RAID1構築作業(Phase 1: degraded RAID1作成)
バックアップ作成
mkdir -p /srv/storage/OS-FULL-BACKUP-SM-20260329

rsync -aAXHv --info=progress2 \
  --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/srv/storage/*"} \
  / /srv/storage/OS-FULL-BACKUP-SM-20260329/

# 完了確認
du -sh /srv/storage/OS-FULL-BACKUP-SM-20260329/
# 結果: 34GB
Crucial SSD パーティション作成
# パーティションテーブル削除
wipefs -a /dev/nvme1n1
sgdisk -Z /dev/nvme1n1

# GPTパーティション作成
sgdisk -og /dev/nvme1n1

# EFIパーティション (512MB)
sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI-MIRROR" /dev/nvme1n1

# RAIDパーティション (残り全部)
sgdisk -n 2:0:0 -t 2:fd00 -c 2:"RAID" /dev/nvme1n1

# 確認
lsblk -o NAME,SIZE,TYPE,PARTLABEL | grep nvme1n1
degraded RAID1作成(1台構成)

SAMSUNG SSDは稼働中のOSなので、先にCrucial SSD単体でdegraded RAID1を構築し、後でSAMSUNGを追加する安全な方法を採用。

# mdadmインストール
apt install -y mdadm

# degraded RAID1作成 (nvme1n1p2のみ、nvme0n1p2用のスロットは空けておく)
mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.2 missing /dev/nvme1n1p2

# RAID状態確認
cat /proc/mdstat
# 結果: md0 : active raid1 nvme1n1p2[1]
#       487729152 blocks super 1.2 [2/1] [_U]
4. OSコピーとブート設定
ファイルシステム作成
# RAID1デバイスにext4作成
mkfs.ext4 -L "OS-RAID1" /dev/md0

# UUID確認
blkid /dev/md0
# 結果: UUID="67fb0d90-bfb5-4b73-ad69-fe1df00836e1"
OSコピー
# マウント
mount /dev/md0 /mnt/mirror

# OS全体をコピー (約5分)
rsync -aAXHv --info=progress2 \
  --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/srv/storage/*"} \
  / /mnt/mirror/

# 34GB転送完了
fstab修正
cat > /mnt/mirror/etc/fstab << 'EOF'
UUID=67fb0d90-bfb5-4b73-ad69-fe1df00836e1 / ext4 defaults 0 1
UUID=9767-0583 /boot/efi vfat defaults 0 1
/swapfile none swap sw 0 0
UUID=769127c7-d395-4ce2-a64a-9786a780c07d /srv/storage ext4 defaults,noatime,nofail 0 2
EOF
chroot環境でinitramfs/GRUB設定
# EFIパーティションマウント
mount /dev/nvme1n1p1 /mnt/mirror/boot/efi

# chroot準備
mount --bind /dev /mnt/mirror/dev
mount --bind /proc /mnt/mirror/proc
mount --bind /sys /mnt/mirror/sys

# chroot実行
chroot /mnt/mirror

# mdadm.conf設定
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

# initramfs再生成(RAID対応)
update-initramfs -u -k all

# GRUB更新
update-grub

# GRUBインストール
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu-raid

# EFI grub.cfg作成(md0のUUIDを参照)
cat > /boot/efi/EFI/ubuntu/grub.cfg << 'EOF'
search.fs_uuid 67fb0d90-bfb5-4b73-ad69-fe1df00836e1 root
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
EOF

# chroot終了
exit

# アンマウント
umount /mnt/mirror/boot/efi
umount /mnt/mirror/dev
umount /mnt/mirror/proc
umount /mnt/mirror/sys
umount /mnt/mirror
EFIブートエントリ作成
# Crucial側のブートエントリ作成
efibootmgr -c -d /dev/nvme1n1 -p 1 -L "Ubuntu-RAID1" -l '\EFI\ubuntu\shimx64.efi'

# 確認
efibootmgr | grep RAID1
5. RAID1起動テストと問題解決
初回起動テスト結果

BootOrder設定後に再起動したが、nvme1n1(Crucial)からの起動に失敗。原因はEFI grub.cfgが誤ったUUIDを参照していたため。

トラブルシューティング
# EFI grub.cfg確認
mount /dev/nvme1n1p1 /mnt/efi
cat /mnt/efi/EFI/ubuntu/grub.cfg

# 問題: 間違ったUUID (SAMSUNG側のUUID)を参照していた
# 修正: 正しいmd0のUUIDに書き換え
cat > /mnt/efi/EFI/ubuntu/grub.cfg << 'EOF'
search.fs_uuid 67fb0d90-bfb5-4b73-ad69-fe1df00836e1 root
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
EOF

umount /mnt/efi
修正後、再起動で正常にmd0(RAID1)から起動成功。
6. Phase 2: SAMSUNG SSD追加(完全ミラー化)
SAMSUNG SSD パーティション再作成
警告: この操作でSAMSUNG SSDの既存データはすべて消去される。バックアップ必須。
# パーティション削除
wipefs -a /dev/nvme0n1
sgdisk -Z /dev/nvme0n1

# RAID1用パーティション作成
sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI-RAID" /dev/nvme0n1
sgdisk -n 2:0:0 -t 2:fd00 -c 2:"RAID" /dev/nvme0n1
SAMSUNG をRAID1に追加
# nvme0n1p2をmd0に追加
mdadm /dev/md0 --add /dev/nvme0n1p2

# 同期開始確認
cat /proc/mdstat
# 結果: [>....................]  recovery =  0.2% (1000832/487729152) 
#       finish=32.4min speed=250208K/sec

# 同期完了待ち(約30分)
watch -n 30 cat /proc/mdstat

# 同期完了
# 結果: md0 : active raid1 nvme0n1p2[2] nvme1n1p2[1]
#       487729152 blocks super 1.2 [2/2] [UU]
mdadm.conf更新とinitramfs再生成
# mdadm.conf確認(重複削除)
cat /etc/mdadm/mdadm.conf | grep -v "^ARRAY" > /tmp/mdadm.conf.tmp
echo "ARRAY /dev/md0 metadata=1.2 UUID=285896d1:0917e05d:001729fb:26446159" >> /tmp/mdadm.conf.tmp
cat /tmp/mdadm.conf.tmp > /etc/mdadm/mdadm.conf

# initramfs再生成
update-initramfs -u -k all
7. EFIパーティションミラーリング
SAMSUNG側EFI作成
# SAMSUNGのEFIパーティションをフォーマット
mkfs.vfat -F 32 -n "EFI-SM" /dev/nvme0n1p1

# マウント
mount /dev/nvme0n1p1 /mnt/efi-samsung

# Crucial側からコピー
rsync -av /boot/efi/ /mnt/efi-samsung/

# アンマウント
umount /mnt/efi-samsung
SAMSUNG側ブートエントリ作成
# SAMSUNGからも起動できるようにEFIエントリ追加
efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Ubuntu-RAID1-SAMSUNG" -l '\EFI\ubuntu\shimx64.efi'

# 確認
efibootmgr | grep SAMSUNG
# 結果: Boot0003* Ubuntu-RAID1-SAMSUNG
8. 起動トラブルと解決(initramfs問題)
問題発生

RAID1完成後の再起動で initramfs プロンプトが表示され、自動起動に失敗。

原因

initramfsがRAIDデバイスを自動認識できていなかった。

解決手順
# initramfsプロンプトで手動RAID起動
mdadm -A /dev/md0 /dev/nvme0n1p2 /dev/nvme1n1p2
exit  # リブート

# 起動後、mdadm.confとinitramfs修正(上記済み)
# 以降は自動起動成功
9. Telegram監視システム導入
監視スクリプト作成
# スクリプト作成
nano /usr/local/bin/mdadm_watch_telegram.sh

# 実行権限付与
chmod +x /usr/local/bin/mdadm_watch_telegram.sh
systemdタイマー設定
# タイマー作成
nano /etc/systemd/system/mdadm-watch.timer

# サービス作成
nano /etc/systemd/system/mdadm-watch.service

# 有効化・起動
systemctl daemon-reload
systemctl enable --now mdadm-watch.timer

# テスト送信
/usr/local/bin/mdadm_watch_telegram.sh --test
5分ごとにRAID状態を監視し、degraded検知時にTelegramへ通知を送信する。
10. 最終構成と確認
RAID1構成
デバイス構成:
- nvme0n1p2 (SAMSUNG 476.9GB) → active sync
- nvme1n1p2 (Crucial 465.8GB)  → active sync
- RAID容量: 465GB(小さい方に制限)
- RAID状態: [2/2] [UU]

EFI構成:
- nvme0n1p1 (SAMSUNG EFI) → Boot0003
- nvme1n1p1 (Crucial EFI) → Boot0002

BootOrder: 0003,0002,... (SAMSUNG優先)
状態確認コマンド
# RAID状態確認
cat /proc/mdstat

# 詳細確認
mdadm --detail /dev/md0

# マウント確認
df -h | grep "/$"
# 結果: /dev/md0 が / にマウント

# 監視タイマー確認
systemctl list-timers --all | grep mdadm

# 監視ログ確認
journalctl -u mdadm-watch.service -n 20 --no-pager
11. 冗長性テスト(未実施)
注意: 以下のテストは実機で実施していない。実施する場合は十分な準備と時間を確保すること。
Crucial SSD故障想定テスト
1. サーバーシャットダウン
2. Crucial SSD (nvme1n1) を物理的に抜く
3. 起動
4. 期待結果: SAMSUNGから自動起動、md0がdegraded [U_]で動作
SAMSUNG SSD故障想定テスト
1. サーバーシャットダウン
2. SAMSUNG SSD (nvme0n1) を物理的に抜く
3. 起動(BIOSでBoot0002選択の可能性あり)
4. 期待結果: Crucialから起動、md0がdegraded [_U]で動作
12. 運用上の注意事項
  • degraded状態の検知: 片方のSSD故障時、システムは動作継続するが気づきにくい。Telegram通知を必ず確認すること。
  • 故障SSD交換手順: degraded状態で新しいSSDを追加後、mdadm /dev/md0 --add /dev/nvmeXnYp2 でリビルド開始。
  • 定期確認: 週1回程度 cat /proc/mdstat で[UU]状態を目視確認推奨。
  • BIOS設定保持: CMOSクリア後はPCIe Bifurcation設定を再度有効化すること。
13. 関連ファイルとパス
バックアップ:
/srv/storage/OS-FULL-BACKUP-SM-20260329/

設定ファイル:
/etc/mdadm/mdadm.conf
/etc/fstab

監視スクリプト:
/usr/local/bin/mdadm_watch_telegram.sh
/etc/systemd/system/mdadm-watch.timer
/etc/systemd/system/mdadm-watch.service

状態ファイル:
/var/lib/mdadm_watch/last_state

ログ:
journalctl -u mdadm-watch.service
作業完了: Supermicro SM-STG-P1のOS RAID1化が完了。両方のM.2 SSDから起動可能で、片方故障時も動作継続する冗長構成を実現。
hirame PC ハードウェアリニューアル作業記録

作業日: 2026年3月30日
担当者: みーきゅんわんわん
対象機器: hirame PC (GA-X58A-UD3R)
目的: CPU、メモリ、電源を交換し、性能向上と安定性確保

1. 交換前のスペック
項目仕様
マザーボードGigabyte GA-X58A-UD3R
CPUIntel Xeon X5690 @ 3.47GHz (6コア12スレッド)
メモリ24GB DDR3-1600 (4GB × 6枚)
電源不明(旧電源)
OSUbuntu 22.04 LTS
役割Collabora Online (LibreOffice Online) サーバー、Nextcloud Talk HPB用途(予定)
IPアドレス192.168.10.40
2. 交換したハードウェア
交換パーツ一覧
パーツ交換後備考
CPUIntel Xeon X5690 @ 3.47GHz交換完了(同型番、新品または良品)
メモリ24GB DDR3-1600 (4GB × 6枚)交換完了(同容量、新品または良品)
電源550W 電源ユニット(中古)新規導入
補足: CPUとメモリは同じスペックの新しいパーツに交換。動作が高速化し、Officeアプリケーションのレスポンスが向上した。
3. 交換後のスペック確認
CPU仕様
lscpu コマンド結果:

Model name: Intel Xeon X5690
アーキテクチャ: x86_64
ソケット: LGA1366 (X58チップセット)
コア数: 6コア
スレッド数: 12スレッド (HTT有効)
ベースクロック: 3.47GHz
最大クロック: 3.73GHz (Turbo Boost)
CPU 最大 MHz: 3459.0000
CPU 最小 MHz: 1596.0000
キャッシュ: L3 12MB
メモリ仕様
free -h コマンド結果:

総メモリ: 24GB (23GiB認識)
メモリタイプ: DDR3-1600 (PC3-12800)
構成: 4GB × 6枚 (トリプルチャネル動作)
使用量: 1.5GB
空き容量: 18GB
バッファ/キャッシュ: 3.2GB
利用可能: 21GB

スワップ: 2.0GB (未使用)
電源ユニット
項目仕様
出力550W
状態中古品
備考安定した電源供給により、システム動作が安定化
4. 温度監視とシステム状態
CPU温度(交換後)
sensors コマンド結果:

coretemp-isa-0000
Adapter: ISA adapter
Core 0:  +45.0°C  (high = +81.0°C, crit = +101.0°C)
Core 1:  +52.0°C  (high = +81.0°C, crit = +101.0°C)
Core 2:  +41.0°C  (high = +81.0°C, crit = +101.0°C)
Core 8:  +48.0°C  (high = +81.0°C, crit = +101.0°C)
Core 9:  +43.0°C  (high = +81.0°C, crit = +101.0°C)
Core 10: +46.0°C  (high = +81.0°C, crit = +101.0°C)

GPU温度:
temp1: +63.2°C  (low = +65.0°C, high = +85.0°C)
Board Temp: +59.8°C  (low = +20.0°C, high = +60.0°C)
温度評価: CPU温度は41〜52°C で正常範囲内。警告温度81°C、クリティカル101°Cに対して十分なマージンあり。
ファン動作
adt7473-i2c-4-2e (GPU冷却システム)
fan1: 780 RPM  (min = 0 RPM)
fan2: 0 RPM    (min = 0 RPM)
fan3: 0 RPM    (min = 164 RPM)  ALARM

電圧:
in1:   3.00 V  (min = +0.00 V, max = +2.99 V)
+3.3V: 3.27 V  (min = +0.00 V, max = +4.39 V)
注意: fan3にALARMが表示されているが、これはGPUボード上のファン制御の仕様によるもの。システム動作に影響なし。
5. 交換後の動作確認
システムアップデート実施
# パッケージリスト更新
sudo apt update

# アップグレード実行
sudo apt upgrade -y

# 更新されたパッケージ:
- Google Chrome (146.0.7680.164-1)
- ubuntu-drivers-common (1:0.9.6.2~0.22.04.11)
- bind9関連パッケージ (1:9.18.39-0ubuntu0.22.04.3)

# 不要パッケージ削除
sudo apt autoremove -y
# 削除: libflashrom1, libftdi1-2, libllvm13
# 解放: 101MB
動作テスト結果
  • 起動速度: 正常、高速化を確認
  • Officeアプリケーション: レスポンス向上、動作が高速化
  • メモリ使用: 1.5GB / 24GB、十分な空き容量
  • CPU負荷: アイドル時1596MHz、負荷時3459MHzで動作確認
  • ネットワーク: 192.168.10.40で通信正常
6. 現在の役割と用途
稼働中のサービス
  • Collabora Online: Nextcloud用LibreOffice Onlineサーバー(Dockerコンテナで稼働)
  • IP: 192.168.10.40
  • VLAN: VLAN10 (MGMT)
今後の予定
  • Nextcloud Talk HPB: coturn、spreed-signaling、natsサーバーの構築予定
  • VPS連携: XServer VPS (162.43.8.20) をTURN/STUNサーバーとして利用
補足: Nextcloud Talk HPB構築は過去に一度試行し、ロールバックした経緯あり。今後は正しいアーキテクチャ(VPS側にcoturn配置)で再構築予定。
7. スペック比較表
項目交換前交換後変化
CPUXeon X5690Xeon X5690新品/良品に交換
メモリ24GB DDR324GB DDR3新品/良品に交換
電源不明(旧型)550W(中古)安定性向上
温度(CPU)36〜46°C41〜52°C若干上昇(正常範囲)
温度(GPU)50°C63°C上昇(正常範囲)
動作速度標準高速化体感で向上
8. 保守運用情報
温度監視コマンド
# リアルタイム温度監視
watch -n 5 sensors

# 温度ログ確認
sensors

# CPU周波数確認
lscpu | grep MHz
メモリ状態確認
# メモリ使用状況
free -h

# 詳細メモリ情報
cat /proc/meminfo
システムアップデート
# 定期アップデート手順
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
9. 注意事項とトラブルシューティング
温度上昇時の対応
  • CPU温度が70°C以上: エアフロー確認、ホコリ清掃
  • GPU温度が80°C以上: ファン動作確認、グラフィックドライバ更新
  • Board温度が70°C以上: ケース内冷却改善、周辺温度確認
電源関連
  • 中古電源のため、定期的な動作確認推奨
  • 異音、異臭がある場合は即座に電源交換
  • 電圧モニタリング: sensors で+3.3V、+12V確認
メモリエラー確認
# システムログでメモリエラー確認
dmesg | grep -i memory
dmesg | grep -i "hardware error"

# memtest86+実行(必要時)
# GRUB起動メニューから選択
10. 関連ドキュメント
  • マザーボードマニュアル: GA-X58A-UD3R Rev.2.0
  • CPU仕様: Intel Xeon X5690 (Westmere-EP, 32nm, TDP 130W)
  • Collabora構築手順: wanchance.com ドキュメント参照
  • Nextcloud Talk HPB失敗分析: 過去の作業ログ参照
作業完了: hirame PCのハードウェアリニューアルが完了。CPU、メモリ、電源を交換し、動作の高速化と安定性の向上を実現。温度も正常範囲内で、本番運用可能な状態。
R640 M.2 NVMe SSD移行 + 監視システム構築 完了報告

実施日: 2026年3月30日

対象サーバー: Dell PowerEdge R640 (katuo)

作業者: みーきゅんわんわん

作業結果: ✅ 完全成功

体感速度: 「えぐい早い」(ユーザー評価)

1. 作業概要

R640サーバーに搭載されたM.2 NVMe SSD(Samsung 970 EVO Plus 1TB)を活用し、Nextcloud環境の高速化と安定性向上を実現しました。

実施項目
  • M.2 SSDのフォーマットとマウント設定
  • R640ホストMariaDBの移行(301MB)
  • Docker Nextcloud stackの完全移行(1.6GB)
  • Redisの永続化設定
  • バックアップスケジュールの追加(1日2回化)
  • M.2 SMART監視システムの構築とTelegram通知設定
2. M.2 SSD移行内容
M.2 SSD基本情報
項目
デバイス/dev/nvme0n1
容量1TB(916GB利用可能)
フォーマットext4
マウントポイント/mnt/nvme-cache
UUID2d9c28a0-4a31-463f-9fb7-9eeac9df72b9
使用量2.0GB / 916GB(1%)
移行データ詳細
データ種別サイズ移行先
R640ホストMariaDB301MB/mnt/nvme-cache/mysql
Docker MariaDB247MB/mnt/nvme-cache/nextcloud-db
Nextcloud本体1.4GB/mnt/nvme-cache/nextcloud-app
Redis100KB/mnt/nvme-cache/redis
合計2.0GB

注意: ユーザーデータ(187GB)は引き続きHDD(/mnt/maguro/nextclouddata)に配置し、容量とコストのバランスを維持しています。

Docker compose.yml 変更点

Docker volumeからbind mountへ変更し、M.2上のディレクトリを直接マウント:

# 変更前(volume使用)
volumes:
  - db:/var/lib/mysql

# 変更後(M.2 bind mount)
volumes:
  - /mnt/nvme-cache/nextcloud-db:/var/lib/mysql

Redis永続化設定を追加:

command: redis-server --appendonly yes --save 60 1000

すべてのボリューム定義を削除し、bind mountへ統一しました。

3. バックアップ強化

M.2 SSD故障時のデータロストリスクを低減するため、バックアップ頻度を2倍に増強しました。

バックアップスケジュール
時刻内容対象
03:00Nextcloud完全バックアップ(1回目)DB + 設定 + ユーザーデータ
04:00hirameバックアップリモートサーバー
15:00Nextcloud DBバックアップ(2回目)DB + 設定
データロスト最大時間
  • 変更前: 24時間(1日1回バックアップ)
  • 変更後: 12時間(1日2回バックアップ)
cron設定
# Nextcloudバックアップ 毎日3:00
0 3 * * * /opt/mikyun/bin/nc_backup.sh >> /var/log/nc_backup.log 2>&1

# Nextcloud DB backup (2nd daily backup for M.2 redundancy)
0 15 * * * /opt/mikyun/bin/nc_backup.sh >> /var/log/nc_backup.log 2>&1

# リモートバックアップ 毎日4:00
0 4 * * * /opt/mikyun/bin/remote_backup.sh >> /var/log/remote_backup.log 2>&1
4. SMART監視システム

M.2 NVMe SSDの健康状態を5分間隔で自動監視し、異常時にTelegram通知を送信するシステムを構築しました。

監視項目と閾値
監視項目警告閾値クリティカル閾値
温度75°C以上85°C以上
予備容量20%未満
寿命(使用率)80%超過
クリティカル警告0x00以外
データ整合性エラー増加検知
現在の健康状態(2026-03-30 08:13時点)
項目状態
Overall HealthPASSED✅ 正常
温度45°C(センサー1)/ 43°C(センサー2)✅ 正常
予備容量100%✅ 正常
使用率0%✅ 正常
クリティカル警告0x00✅ 正常
稼働時間40,802時間(約4.7年)
書き込み量10.5TB
データ整合性エラー0件✅ 正常
システム構成
  • 監視スクリプト: /usr/local/bin/nvme_watch_telegram.sh
  • systemdタイマー: nvme-watch.timer(5分間隔)
  • systemdサービス: nvme-watch.service(oneshot)
  • 状態保存: /var/lib/nvme_watch/last_state
  • 通知先: Telegram(BOT TOKEN: 8581883769:…)
タイマー稼働状況
Active: active (waiting)
Trigger: 5分間隔
Next: Mon 2026-03-30 08:17:56 JST
Last: Mon 2026-03-30 08:12:56 JST (成功)
Status: ✅ 正常稼働中
5. 運用コマンド
状態確認
# タイマー状態確認
systemctl list-timers | grep nvme
systemctl status nvme-watch.timer --no-pager

# ログ確認
sudo journalctl -u nvme-watch.service -n 20 --no-pager

# M.2 SMART情報直接確認
sudo smartctl -a /dev/nvme0n1 | grep -E "Temperature|Spare|Percentage Used|Critical Warning"
手動テスト
# テスト通知送信(Telegramに届くか確認)
sudo /usr/local/bin/nvme_watch_telegram.sh --test

# 手動監視実行
sudo systemctl start nvme-watch.service
制御コマンド
# 監視停止
sudo systemctl disable --now nvme-watch.timer

# 監視再開
sudo systemctl enable --now nvme-watch.timer

# systemd再読み込み(設定変更後)
sudo systemctl daemon-reload
バックアップ確認
# cron設定確認
crontab -l | grep -E "nc_backup|remote_backup"

# バックアップログ確認
tail -50 /var/log/nc_backup.log
6. 最終状態
データ配置構成
ストレージ配置データ使用量用途
M.2 NVMe SSDMariaDB(ホスト + Docker)
Nextcloud本体
Redis
2.0GB / 916GB高速DB・アプリ層
HDD /dev/sda2ユーザーファイル187GB / 2.2TB大容量データ保管
Supermicro NFSバックアップリポジトリ冗長バックアップ
運用体制
  • パフォーマンス: 「えぐい早い」(体感評価)
  • バックアップ: 1日2回(03:00, 15:00)
  • 監視: 5分間隔SMART自動監視 + Telegram通知
  • データ保護: 最大12時間のデータロストリスク(従来24時間から半減)
完了事項チェックリスト
  • ✅ M.2 SSDフォーマット・マウント設定完了
  • ✅ R640ホストMariaDB移行完了(301MB)
  • ✅ Docker Nextcloud stack移行完了(1.6GB)
  • ✅ Redis永続化設定完了
  • ✅ compose.yml変更・動作確認完了
  • ✅ バックアップcron追加完了(15:00)
  • ✅ SMART監視スクリプト作成・配置完了
  • ✅ systemdタイマー設定・稼働確認完了
  • ✅ Telegram通知テスト成功
  • ✅ Nextcloud動作確認・速度改善確認完了
今後の推奨事項
  • 定期的にSMART情報を確認(月次)
  • バックアップログの定期確認(週次)
  • M.2温度が70°Cを超える場合はサーバー冷却の見直し検討
  • 使用率が50%を超えた段階で交換計画の検討開始

作業完了日時: 2026年3月30日 08:13 JST

次回確認推奨: 2026年4月(月次SMART確認)