treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

sambaサーバのディスク故障でパス変更したメモ

ほぼ自分用のメモになりますが、マウントした箇所を忘れないように記録しておくこと=ドキュメント化は大切、という一例です。

故障したsambaサーバの構成を復習

ざっくりと構成図

sambaサーバは、共有フォルダを保管するディスクを正系と副系の二台用意してあり、ここをrsyncで定期的に同期しています。
正系ディスクは他にも、sambaサーバ2台目に同期したり、バックアップサーバからバックアップを取得したりするためのアクセスがあります。

fstabでマウントする指定を変えれば簡単

一括で副系を正系のHDDとして使うことが可能、なのですが、今回は作業上の理由から実施しませんでした。

やり方は後述。

FileSVRディスク故障で変更点メモ

これ以降で変更点をメモしていきます。

こういうディスク構成だった場合、

--------------------------------------------------------------
$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
~中略~
/dev/sdc         3.6T  2.1T  1.4T   62% /home/smbdisk1
/dev/sdd         3.6T  2.2T  1.3T   62% /home/smbdisk2
~以下略~
--------------------------------------------------------------
/home/smbdisk1(/dev/sdc)が故障、動作しないディスクです。これを予備側/home/smbadd2に切り替えます。

smb.conf編集

※変更点
"path = /home/smbdisk1/%FolderNAME%"
の箇所を
"path = /home/smbdisk2/%FolderNAME%"
に置き換え、

/home/smbdisk2/%FolderNAME%である「/dev/sdd」は動作しているため、smb.conf編集後に
# /etc/init.d/samba-ad-dc restart
で復旧する。

crontab -e編集

FileSVR内のHDD同期実行していたrsync命令を実行しないように変更します。
新HDD接続を実施したあとの復旧作業時には/home/smbdisk1/と/home/smbdisk2/の再度交換が必要です。

-----------------------------
root@FileSVR:/var/log# crontab -e
~~~
##
#HDD故障のため、以下のrsyncジョブをしばらく実行しない(2024年8月30日現在)
#30 0  * * * rsync -av --delete /home/smbdisk1/%FolderNAME%/ /home/smbdisk2/%FolderNAME%/
#30 6-23/1 * * * rsync -av --delete /home/smbdisk1/%FolderNAME%/ /home/smbdisk2/%FolderNAME%/

------------------------------
2台でrsyncしていたのを実施しないように一時的に設定変更しました。

rsyncd.conf編集

別のサーバからrsync経由で参照されているパスの変更をします。
FileSVR内の/etc/rsyncd.conf

※変更点
rsyncd.conf内のモジュール設定にマウントディレクトリの指定がある。
"path = /home/smbdisk1/%FolderNAME%"
の箇所を
"path = /home/smbdisk2/%FolderNAME%"
に置き換えます。

/home/smbdisk2/%FolderNAME%である「/dev/sdd」は動作しているため、smb.conf編集後に
# /etc/init.d/rsync restart
で復旧する。

シェルなどで参照しているパス変更

この他、自作のシェルがあるようなら、そのシェルで
"/home/smbdisk1/%FolderNAME%"を参照している箇所は全て"/home/smbdisk2/%FolderNAME%"に置き換えます。

以上で、ディスク交換によるパス変更は全て完了でき、以前と同様のジョブ実行結果を得ることができるようになりました。

が、もっと簡単な方法がこれ以降に記載するfstabで入れ替えする手順になります。(両者は択一式です。)

別の方法:fstabで入れ替えを実行する

今回は(初動となる)最初の入れ替えをネットワーク経由(SSH)で実施する必要があったため、このfstabで入れ替えると言う方法が使えなかったのですが、直接sambaサーバの実機が触れる状況であればこの方法が一番簡単かつ確実な正系&副系間のHDD交換が可能なはずです。

例えば、以下のようなfstabのエントリだとします。

--------------------------------------------------------------

$ cat /etc/fstab
# /etc/fstab: static file system information.
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/md0 during installation
~中略~
### samba Shared File /home/smbdisk1 was on /dev/sdc during installation
UUID=d3627c1e-xxxx-0000-xxxx-xxxxxx000000 /home/smbdisk1   ext4    defaults        0       2
### samba Shared File /home/smbdisk2 was on /dev/sdd during installation
UUID=2994eece-xxxx-0000-xxxx-xxxxxxxxxxxx /home/smbdisk2   ext4    defaults        0       2

--------------------------------------------------------------

前回<https://blog.treedown.net/entry/2025/04/01/010000>のエラーメッセージにあったように「/home/smbdisk1」にマウントしている「/dev/sdc」が故障ディスクでした。これが正系として参照されるために稼働するディスクです。

rsyncで同期してバックアップ的に動作する副系は「/home/smbdisk2」のマウントとなる「/dev/sdd」となります。これは故障していないので、バックアップディスクを正系に置き換えます。

デバイスのUUIDの表記を付け替えればいけるはずです。(今回は実施していないため、おそらく、という話になってしまいますが)以下のように編集します。

--------------------------------------------------------------

$ cat /etc/fstab
# /etc/fstab: static file system information.
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/md0 during installation
~中略~
### samba Shared File /home/smbdisk1 was on /dev/sdc during installation(faildisk)
##UUID=d3627c1e-xxxx-0000-xxxx-xxxxxx000000 /home/smbdisk1   ext4    defaults        0       2
### samba Shared File /home/smbdisk2 was on /dev/sdd during installation
##UUID=2994eece-xxxx-0000-xxxx-xxxxxxxxxxxx /home/smbdisk2   ext4    defaults        0       2
UUID=2994eece-xxxx-0000-xxxx-xxxxxxxxxxxx /home/smbdisk1   ext4    defaults        0       2

--------------------------------------------------------------

いったん2台のHDDエントリ行をコメントアウトし、改めて「UUID=2994eece~」行のマウント先を「/home/smbdisk1」と指定した行を追記しました。

エラーのあった旧HDDは取り外して、無事な方の(「UUID=2994eece~」である「/dev/sdd」だけ接続して)sambaサーバのOSを再起動すると(おそらくですが)「UUID=2994eece~」単一となって「/dev/sdc」として認識され、最終行の
「UUID=2994eece-xxxx-0000-xxxx-xxxxxxxxxxxx /home/smbdisk1   ext4    defaults        0       2」

が有効になって今まで副系だったディスクが正系として動作するようになるはずです。これで、前項までで実施した各パス変更の手間なく副系ディスクが/home/smbdisk1の正常なディスクとして使用できるはずです。

次回の故障発生時には、sambaサーバの目の前で直接操作ができる場合において、このやり方も試してみようと思います。