/etc/fstabのデバイス名が変化し起動失敗した時の対処法【UUIDで解決!】
お久しぶりです、TTです。
今回は/etc/fstab、デバイス名関連でハマった時のお話になります。
【概要】
OSは CentOS Linux release 7.4 です。
作業内容は、すでに幾つかの追加ディスクのあるサーバへディスクを追加。
更にディスクの中身を移し替える、といった作業でした。
【発生した問題】
追加ディスクのパーティションを作成し、マウント。
fstabに記載すれば、再起動後もマウントは実行されるので問題ないはずでした。
以下がその状況に似せたfstabの内容です。
/dev/vda1 / xfs defaults 0 0
/dev/vdb /data xfs defaults 0 2
/dev/vdc1 /backup xfs defaults 0 2
/swapfile swap swap defaults 0 0
/dev/vde /storage xfs defaults 0 2 ←ここが追加領域です
しかしいざ再起動をすると、全然立ち上がらない。
クラウドのコンソールより画面を確認したところ、Linuxがメンテナンスモードで起動している…
逸る気持ちを抑えてログインし、dfコマンドでマウントされているディスクを確認…
fstabに記載はあるものの、まさかの何も触っていない backup 領域が認識されておらず起動しなかった、という事がありました。
【原因】
原因はLinuxのデバイス名が、OS再起動時にずれることによるものでした。
fstabには backup のデバイス名は /dev/vdc1 と記載していましたが、
Linuxのデバイス名は起動時に変化することがあり、
起動失敗時に確認してみると、案の定デバイス名が変わっており、そんなものはないということで
fstabの記述ミス扱いとなり失敗していたようです。
【解決方法】
デバイス名を書くのではなく、全てのデバイスでUUIDを記載する方法に変えました。
使用したコマンドは下記になります。
# df -hT
こちらでデバイス名とマウントされた領域を確認しておき
# blkid
こちらでUUIDを表示させることができます。
最終的に下記の様に記載して起動しました。
UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx / xfs defaults 0 0
UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx /data xfs defaults 0 2
UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx /backup xfs defaults 0 2
/swapfile swap swap defaults 0 0
UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx /storage xfs defaults 0 2
※UUIDは単一な為伏せております。
UUIDは絶対に重複することがないので、確実にデバイスを認識してくれます。
これで失敗するということは、fstabの記述が怪しいという切り分けにもなります。
【まとめ】
ディスクを追加したり、fstabの記載を変更してサーバが起動しない、というときは、
fstabにデバイス名で書かれていないか確認すると解決に近づけるかもしれません!
それでは、今回はこのあたりで失礼致します。
【参考】
UUIDによるデバイスのマウント
https://documentation.suse.com/ja-jp/sles/12-SP4/html/SLES-all/cha-uuid.html