✅ ステータス: 完全メッシュ接続確立・全リンク動作確認済み
✅ 目的: 旧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で完全メッシュ接続。
| リンク | サーバー1 | IF名 | IP | サーバー2 | IF名 | IP |
|---|---|---|---|---|---|---|
| Link1 | Supermicro | SM-R640-FAB | 173.0.0.1/30 | R640 | R640-SM-FAB | 173.0.0.2/30 |
| Link2 | Supermicro | SM-HIRAME-FAB | 173.0.0.5/30 | hirame | HIRAME-SM-FAB | 173.0.0.6/30 |
| Link3 | R640 | R640-HIRAME-FAB | 173.0.0.9/30 | hirame | HIRAME-R640-FAB | 173.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 直接リンク
設定ファイル: /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)
設定ファイル: /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経由でルーティング
設定ファイル: /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 が R640 ↔ hirame 間のルーターとして機能するため、IPフォワーディングとiptablesルールが必要です。
# 恒久的に有効化 echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p # 確認 sysctl net.ipv4.ip_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
-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
# 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
症状: hirameからR640へのpingが100% packet loss
原因: Supermicro の iptables FORWARD ポリシーがDROP
確認:
# Supermicro で実行 sudo iptables -L FORWARD -n -v # → policy DROP が表示される場合は問題あり
解決: 上記「iptables FORWARD ルール」を適用
症状: netplan設定後、ip addr show で目的のインターフェース名が表示されない
原因: MACアドレスの不一致、またはインデントエラー
確認:
# 実際のMACアドレス確認 ip link show | grep -A 1 "enp" # netplan設定確認 sudo netplan get
解決: MACアドレスが正しいか確認し、YAMLインデントを修正
症状: 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
設定ファイル: /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)
設定ファイル: /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
- ✅ 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
- 新サーバーのファブリックIF設定(173.0.0.x/30 サブネット追加)
- Supermicro iptables に新サブネット間のFORWARDルール追加
- 必要に応じてSupermicro NFSエクスポートに新サブネット追加
sudo netfilter-persistent saveで永続化
✅ 主な変更: 173.0.0.x ファブリックネットワーク対応 / VPSバックアップ廃止
| 項目 | 変更前 | 変更後 | 理由 |
|---|---|---|---|
| NFSマウント元IP | 172.31.20.2 (旧ファブリック) | 173.0.0.1 (新ファブリック) | ファブリックネットワーク刷新 |
| hirame SSH接続先 | 172.31.22.2 | 173.0.0.10 | R640-hirame直接リンク利用 |
| VPSバックアップ | 実施(5世代保持) | 廃止 | VPS構成変更により不要化 |
| バックアップ対象 | VPS + hirame | hirameのみ | 運用簡素化 |
ファイルパス: /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 ║ ╚══════════════════════════════════════════════════╝
ファイルパス: /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 # ↑ このパスは存在しないため削除
ファイルパス: /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
# 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
# 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 MariaDB | nextcloudデータベース全体 | SM-storage/backup/nextcloud/日付/ | 7世代 | ローカル |
| Nextcloud config.php | NC本体設定ファイル | 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.txt | 5世代 | 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.1) | 66TB(空き63TB) | 173.0.0.x ファブリック経由 |
| /srv/storage/backup/ | R640ローカル(/dev/sda2) | 2.2TB(空き668GB) | ローカル |
バックアップの実体はすべてSupermicro(NFS)側に保存。 R640ローカルは旧バックアップ用途のみ。
cron設定は変更なし。引き続き以下のスケジュールで実行されます。
| 時刻 | スクリプト | 内容 |
|---|---|---|
| 毎日 3:00 | nc_backup.sh | Nextcloud完全バックアップ |
| 毎日 4:00 | remote_backup.sh | hirameバックアップ(VPS削除) |
確認コマンド:
crontab -l | grep -E "nc_backup|remote_backup"
- NFSマウント状態:
df -h | grep 173.0.0 - バックアップログ:
tail -50 /var/log/remote_backup.log - 最新バックアップ確認:
ls -lt /srv/storage/SM-storage/backup/hirame/ | head -3 - 世代管理: 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バックアップ動作確認
- ✅ 世代管理動作確認
作業日: 2026年3月29日〜30日
担当者: みーきゅんわんわん
対象サーバー: Supermicro SSG-6048R-E1CR36N (SM-STG-P1)
目的: OS用M.2 SSDをRAID1ミラー化し、冗長性を確保する
- サーバー: Supermicro SSG-6048R-E1CR36N
- マザーボード: X10DRi-T4+
- 既存M.2 SSD: SAMSUNG MZVL2512HCJQ 476.9GB(OS起動用)
- M.2スロット: 1スロットのみ(拡張が必要)
- OS: Ubuntu 24.04 LTS
- ルートパーティション: /dev/nvme0n1p2 (476.4GB)
- EFIパーティション: /dev/nvme0n1p1 (512MB)
- ファイルシステム: ext4
- M.2 SSD: Crucial CT500P2SSD8 465.8GB(新規購入)
- M.2アダプター: PCIe x16 4スロット対応ライザーカード(Yahoo!オークション購入)
- 取り付けスロット: Slot5 (CPU2側 PCIe x16スロット)
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. 再起動
lsblk -o NAME,SIZE,MODEL 結果: nvme0n1 476.9G SAMSUNG MZVL2512HCJQ-00BL7 (既存) nvme1n1 465.8G CT500P2SSD8 (新規追加)
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# パーティションテーブル削除 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
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]
# RAID1デバイスにext4作成 mkfs.ext4 -L "OS-RAID1" /dev/md0 # UUID確認 blkid /dev/md0 # 結果: UUID="67fb0d90-bfb5-4b73-ad69-fe1df00836e1"
# マウント
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転送完了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
# 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
# Crucial側のブートエントリ作成 efibootmgr -c -d /dev/nvme1n1 -p 1 -L "Ubuntu-RAID1" -l '\EFI\ubuntu\shimx64.efi' # 確認 efibootmgr | grep 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
# パーティション削除 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
# 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確認(重複削除) 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
# 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からも起動できるようにEFIエントリ追加 efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Ubuntu-RAID1-SAMSUNG" -l '\EFI\ubuntu\shimx64.efi' # 確認 efibootmgr | grep SAMSUNG # 結果: Boot0003* Ubuntu-RAID1-SAMSUNG
RAID1完成後の再起動で initramfs プロンプトが表示され、自動起動に失敗。
initramfsがRAIDデバイスを自動認識できていなかった。
# initramfsプロンプトで手動RAID起動 mdadm -A /dev/md0 /dev/nvme0n1p2 /dev/nvme1n1p2 exit # リブート # 起動後、mdadm.confとinitramfs修正(上記済み) # 以降は自動起動成功
# スクリプト作成 nano /usr/local/bin/mdadm_watch_telegram.sh # 実行権限付与 chmod +x /usr/local/bin/mdadm_watch_telegram.sh
# タイマー作成 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
デバイス構成: - 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
1. サーバーシャットダウン 2. Crucial SSD (nvme1n1) を物理的に抜く 3. 起動 4. 期待結果: SAMSUNGから自動起動、md0がdegraded [U_]で動作
1. サーバーシャットダウン 2. SAMSUNG SSD (nvme0n1) を物理的に抜く 3. 起動(BIOSでBoot0002選択の可能性あり) 4. 期待結果: Crucialから起動、md0がdegraded [_U]で動作
- degraded状態の検知: 片方のSSD故障時、システムは動作継続するが気づきにくい。Telegram通知を必ず確認すること。
- 故障SSD交換手順: degraded状態で新しいSSDを追加後、
mdadm /dev/md0 --add /dev/nvmeXnYp2でリビルド開始。 - 定期確認: 週1回程度
cat /proc/mdstatで[UU]状態を目視確認推奨。 - BIOS設定保持: CMOSクリア後はPCIe Bifurcation設定を再度有効化すること。
バックアップ: /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
作業日: 2026年3月30日
担当者: みーきゅんわんわん
対象機器: hirame PC (GA-X58A-UD3R)
目的: CPU、メモリ、電源を交換し、性能向上と安定性確保
| 項目 | 仕様 |
|---|---|
| マザーボード | Gigabyte GA-X58A-UD3R |
| CPU | Intel Xeon X5690 @ 3.47GHz (6コア12スレッド) |
| メモリ | 24GB DDR3-1600 (4GB × 6枚) |
| 電源 | 不明(旧電源) |
| OS | Ubuntu 22.04 LTS |
| 役割 | Collabora Online (LibreOffice Online) サーバー、Nextcloud Talk HPB用途(予定) |
| IPアドレス | 192.168.10.40 |
| パーツ | 交換後 | 備考 |
|---|---|---|
| CPU | Intel Xeon X5690 @ 3.47GHz | 交換完了(同型番、新品または良品) |
| メモリ | 24GB DDR3-1600 (4GB × 6枚) | 交換完了(同容量、新品または良品) |
| 電源 | 550W 電源ユニット(中古) | 新規導入 |
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 |
| 状態 | 中古品 |
| 備考 | 安定した電源供給により、システム動作が安定化 |
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)
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)
# パッケージリスト更新 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で通信正常
- 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サーバーとして利用
| 項目 | 交換前 | 交換後 | 変化 |
|---|---|---|---|
| CPU | Xeon X5690 | Xeon X5690 | 新品/良品に交換 |
| メモリ | 24GB DDR3 | 24GB DDR3 | 新品/良品に交換 |
| 電源 | 不明(旧型) | 550W(中古) | 安定性向上 |
| 温度(CPU) | 36〜46°C | 41〜52°C | 若干上昇(正常範囲) |
| 温度(GPU) | 50°C | 63°C | 上昇(正常範囲) |
| 動作速度 | 標準 | 高速化 | 体感で向上 |
# リアルタイム温度監視 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
- CPU温度が70°C以上: エアフロー確認、ホコリ清掃
- GPU温度が80°C以上: ファン動作確認、グラフィックドライバ更新
- Board温度が70°C以上: ケース内冷却改善、周辺温度確認
- 中古電源のため、定期的な動作確認推奨
- 異音、異臭がある場合は即座に電源交換
- 電圧モニタリング:
sensorsで+3.3V、+12V確認
# システムログでメモリエラー確認 dmesg | grep -i memory dmesg | grep -i "hardware error" # memtest86+実行(必要時) # GRUB起動メニューから選択
- マザーボードマニュアル: GA-X58A-UD3R Rev.2.0
- CPU仕様: Intel Xeon X5690 (Westmere-EP, 32nm, TDP 130W)
- Collabora構築手順: wanchance.com ドキュメント参照
- Nextcloud Talk HPB失敗分析: 過去の作業ログ参照
実施日: 2026年3月30日
対象サーバー: Dell PowerEdge R640 (katuo)
作業者: みーきゅんわんわん
作業結果: ✅ 完全成功
体感速度: 「えぐい早い」(ユーザー評価)
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通知設定
| 項目 | 値 |
|---|---|
| デバイス | /dev/nvme0n1 |
| 容量 | 1TB(916GB利用可能) |
| フォーマット | ext4 |
| マウントポイント | /mnt/nvme-cache |
| UUID | 2d9c28a0-4a31-463f-9fb7-9eeac9df72b9 |
| 使用量 | 2.0GB / 916GB(1%) |
| データ種別 | サイズ | 移行先 |
|---|---|---|
| R640ホストMariaDB | 301MB | /mnt/nvme-cache/mysql |
| Docker MariaDB | 247MB | /mnt/nvme-cache/nextcloud-db |
| Nextcloud本体 | 1.4GB | /mnt/nvme-cache/nextcloud-app |
| Redis | 100KB | /mnt/nvme-cache/redis |
| 合計 | 2.0GB | – |
注意: ユーザーデータ(187GB)は引き続きHDD(/mnt/maguro/nextclouddata)に配置し、容量とコストのバランスを維持しています。
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へ統一しました。
M.2 SSD故障時のデータロストリスクを低減するため、バックアップ頻度を2倍に増強しました。
| 時刻 | 内容 | 対象 |
|---|---|---|
| 03:00 | Nextcloud完全バックアップ(1回目) | DB + 設定 + ユーザーデータ |
| 04:00 | hirameバックアップ | リモートサーバー |
| 15:00 | Nextcloud DBバックアップ(2回目) | DB + 設定 |
- 変更前: 24時間(1日1回バックアップ)
- 変更後: 12時間(1日2回バックアップ)
# 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
M.2 NVMe SSDの健康状態を5分間隔で自動監視し、異常時にTelegram通知を送信するシステムを構築しました。
| 監視項目 | 警告閾値 | クリティカル閾値 |
|---|---|---|
| 温度 | 75°C以上 | 85°C以上 |
| 予備容量 | 20%未満 | – |
| 寿命(使用率) | 80%超過 | – |
| クリティカル警告 | – | 0x00以外 |
| データ整合性エラー | 増加検知 | – |
| 項目 | 値 | 状態 |
|---|---|---|
| Overall Health | PASSED | ✅ 正常 |
| 温度 | 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: ✅ 正常稼働中
# タイマー状態確認 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
| ストレージ | 配置データ | 使用量 | 用途 |
|---|---|---|---|
| M.2 NVMe SSD | MariaDB(ホスト + 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確認)
