6/07/2015

[note] Ubuntuサーバに外付けHDD追加後、再起動時にエラーで止まる不具合への対処

最近、サーバにデータストレージ用に外付けHDDを増設したところ、その初期設定中にちょっとしたトラブルに遭ったのでメモ。なおサーバのOSはUbuntu(15.04,64bit)です。

と言っても、おそらくは遭遇する可能性自体そんなに高くないだろう事象なんですけれども。何かというと、初期化やマウントの設定等の後、再起動時に当該ドライブが見つからず、エラーを吐いて止まってしまうようになったのです。

その内容を説明する前に。エラーに至るまでの初期化等の手順は、大まかに以下の通りです。

1.稼働中のubuntuサーバにHDDをUSBで接続し、自動マウントされたものを即アンマウント
2.ドライブ内の初期パーティションを全て削除し、[Linux Filesystem]形式のパーティションを作成
3.作成したパーティションをext4でフォーマット($sudo mkfs.ext4 /dev/sd*1)
4.マウントポイントを作成し、手動でマウント
5./etc/fstab にUUID指定でオートマウント設定記述追加

以上の作業の後、再起動したわけですが、"Error: no medium found at /dev/sd*1"とか言う感じのメッセージと共に緊急モードへのログインプロンプトが出て止まるのです。Ctrl-Dで再実行、等ともあったのですが、試しに再実行してみても、同様のエラーメッセージが出て元に戻るばかり。再起動してみても変化もなく、仕方ない、と諦めてそこからログインして確認したところ、当然ながら追加したドライブはマウントされていないものの、ハードの認識はされています。従って、ドライブに問題があるのではなく、ファイルシステム側でマウントに際してドライブを見失っているだけ、という事になるのですが。。。これは妙な事になった、と首をひねった次第なのです。

というのは、上記5.にある通り、起動時マウントの設定はマウント先ドライブのUUIDを指定して行っているのだから、ドライブが認識されている以上、本来なら見失うなどという事は起こりえない筈なのです。どういうことなのかと。フォーラムのログを漁ってみても、今ひとつコレという情報も見当たりません。と右往左往することしばし、埒も明かず。

何らかの不具合な事は明らかながら、既知の事例が見当たらず、原因もわからない以上は自分で試行錯誤するしかないわけで。面倒な事になった、とため息を吐きつつ、workaroundの検討をする羽目になったのでした。経過の詳細は省きますが、fstabの設定を元に戻したり、その他のストレージ類を付け外して干渉の有無をチェックしたりと、色々と確認してみたのです。

その結果ですけれども。問題は解決し、正常に起動し、当初の意図通りマウントもされるようにはなりました。やれやれです。原因は、多分に推測が入るのですけれども、おそらくは上記手順の内、1.がまずかったのだろうという結論というか推論に至ったのです。具体的には以下の通り。

まず、上記1.のように既にリムーバブルドライブが接続されているところにリムーバブルドライブを追加する場合、既存ドライブより後ろのアルファベットがドライブレターとして割り当てられます(/dev/sd*の*の所)。

その状態で上記2.から5.までの作業を行うと、システム側に、そのドライブがそのドライブレターでマウントされた旨記録され、その後の再起動時にその記録を参照・照合して再マウントしようとしているようなのですね。(チェックをしているだけなのかもしれませんが、外からは同じように見えるでしょうしその辺は判然としません)

で、再起動の際、ドライブレターに変更が無ければ特にそれが問題になる事は無い筈なのですが、外付けドライブの場合、ドライブの検出順に割り振られる結果、再起動前と異なるドライブレターが割り振られてしまう事があります。※実際、私の場合は再起動前後で変わっていました。

すると、ファイルシステム中の記録と齟齬を起こし、ドライブ自体は検出されているにも関わらず、マウント対象とは認識出来ずにエラーとなってしまう、という事になっているようなのですね。

あくまで推測ですが、再起動前のドライブレターがエラーメッセージに出る以上、そう解釈する他無いように思われます。そうだとすれば、なんという間抜けな、というか。そもそもそういうエラーを避けるためにドライブをUUIDで指定してる筈なのに、それじゃ意味が無いと思うのですよ。この結論に至り、解決法を見出すまでに何回も再起動をさせられ、時間を浪費する羽目になった身としては、文句の一つ位は言う権利もあるだろうとも。なお、本件事象は、ext4だからなのかとか、具体的に何処のプロセスでの事なのかといった詳細は未検証につき不明です。

ともあれ。本件不具合の原因は、再起動の前後でのドライブレターの齟齬にある、とすれば、それを回避するには、その齟齬を無くせばいいわけです。その方法は色々あると思いますが、例えば以下の手順を踏めばいいでしょう。

f1./etc/fstabの記述を追加前の状態に戻し、再起動(各種ドライブは接続)
f2./etc/fstabに記述追加
f3.fstabに基づいて再マウント($sudo mount -a)

こうすれば、起動時のドライブレターでマウントされた状態が記録される事になります。これで解決。もっとも逆に言えば、最初に接続したあと、各種設定を行う(上記1.の)前に再起動をしておけばf1と同じ状態になるのですから、そうする方がスマートと言えるだろう話なのですけれども。後から言っても仕方のない事ではありますし、今回はあくまでトラブルとその解決方法の報告、という事でこれでおしまい。やれやれです。