ubuntuのメンテナンス時に起きたカーネルパニックの対処法

仕事に集中しすぎて、ブログが更新ができていなかったのです。

ちょうど最近起きたカーネルパニックがあったのでそれを載せようと思います。

ubutuではセキュリティーパッチが出たよーってあった場合、ログインすると教えてくれます。

その時には、

sudo apt-get update
sudo apt-get upgrade

で更新できます。

また、カーネルも新しいバージョンが出ていたので

sudo apt-get dist-upgrade

でアップグレードをし

再起動

sudo reboot

いつもならだいたいいい感じにセキュリティーパッチとカーネルをバージョンアップします。

ここまではいいんですが、再起動すると突然カーネルパニックが起きました。

kernel panic not syncing unable to mount root fs on unkonown-block(0,0)

久しぶりにトラブルがきたーってなりながらここは冷静に

起動時のGRUBで少し前のカーネルのバージョンを選択しすると上記のカーネルパニックが起きず無事にサーバーが起動ができました。

またカーネルのバージョンアップをした時に同じようなことが起きるので、調査してから起きないようにして、最新のカーネルを入れます。

手順としては

1、現在のカーネルを確認
2、容量の確認
3、原因になったコマンドでインストールしたカーネル情報をピックアップ
4、カーネルを削除
5、原因のカーネルが削除されているか確認
6、不要なカーネルを削除し、削除されているか確認しつつ容量を確認
7、再起動
8、起動できるか確認
9、再度カーネルのアップグレード
10、再起動
11、起動できるか確認

です。

では実際にやって見ましょう。

現在のカーネルを確認

uname -r
Linux kvps-180-235-230-219 4.4.0-79-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

次にだいたい何かしらのファイルが大きくなって容量が圧迫されることが多いので、システムの容量を確認

df -h
Filesystem                                     Size  Used Avail Use% Mounted on
udev                                           982M  4.0K  982M   1% /dev
tmpfs                                          201M  588K  200M   1% /run
/dev/mapper/kvps--180--235--230--219--vg-root   97G   12G   80G  13% /
none                                           4.0K     0  4.0K   0% /sys/fs/cgroup
none                                           5.0M     0  5.0M   0% /run/lock
none                                          1001M     0 1001M   0% /run/shm
none                                           100M     0  100M   0% /run/user
cgmfs                                          100K     0  100K   0% /run/cgmanager/fs
/dev/vda1                                      236M  228M     0 100% /boot
tmpfs                                          201M     0  201M   0% /run/user/1

おっと、bootが容量が100%ですね。

ということは今回は、カーネルをインストールする時にインストールをするための容量が足らなかったようです。

下記のコマンドでインストールされているカーネルを確認

dpkg --get-selections | grep linux-image
linux-image-3.16.0-30-generic deinstall
linux-image-3.16.0-77-generic deinstall
linux-image-4.4.0-64-generic install
linux-image-4.4.0-66-generic install
linux-image-4.4.0-67-generic install
linux-image-4.4.0-72-generic install
linux-image-4.4.0-77-generic install
linux-image-4.4.0-78-generic install
linux-image-4.4.0-79-generic install
linux-image-extra-3.16.0-30-generic deinstall
linux-image-extra-3.16.0-77-generic deinstall
linux-image-extra-4.4.0-64-generic install
linux-image-extra-4.4.0-66-generic install
linux-image-extra-4.4.0-67-generic install
linux-image-extra-4.4.0-72-generic install
linux-image-extra-4.4.0-77-generic install
linux-image-extra-4.4.0-78-generic install
linux-image-extra-4.4.0-79-generic install
linux-image-extra-4.4.0-81-generic install
linux-image-generic install

最新のカーネルをメモして依存関係があるものを削除

% sudo apt-get autoremove --purge linux-image-extra-4.4.0-81-generic

再度削除されているか確認

dpkg --get-selections | grep linux-image
linux-image-3.16.0-30-generic deinstall
linux-image-3.16.0-77-generic deinstall
linux-image-4.4.0-64-generic install
linux-image-4.4.0-66-generic install
linux-image-4.4.0-67-generic install
linux-image-4.4.0-72-generic install
linux-image-4.4.0-77-generic install
linux-image-4.4.0-78-generic install
linux-image-4.4.0-79-generic install
linux-image-extra-3.16.0-30-generic deinstall
linux-image-extra-3.16.0-77-generic deinstall
linux-image-extra-4.4.0-64-generic install
linux-image-extra-4.4.0-66-generic install
linux-image-extra-4.4.0-67-generic install
linux-image-extra-4.4.0-72-generic install
linux-image-extra-4.4.0-77-generic install
linux-image-extra-4.4.0-78-generic install
linux-image-extra-4.4.0-79-generic install
linux-image-generic install

削除されましたね。

そして、上記で使っていない不要なカーネルを削除とカーネルの確認

% sudo apt-get autoremove --purge 不要なカーネル番号

カーネル情報を確認

dpkg --get-selections | grep linux-image
linux-image-4.4.0-79-generic install
linux-image-extra-4.4.0-79-generic install

bootの容量を確認

df -h
Filesystem                                     Size  Used Avail Use% Mounted on
udev                                           982M  4.0K  982M   1% /dev
tmpfs                                          201M  588K  200M   1% /run
/dev/mapper/kvps--180--235--230--219--vg-root   97G   12G   80G  13% /
none                                           4.0K     0  4.0K   0% /sys/fs/cgroup
none                                           5.0M     0  5.0M   0% /run/lock
none                                          1001M     0 1001M   0% /run/shm
none                                           100M     0  100M   0% /run/user
cgmfs                                          100K     0  100K   0% /run/cgmanager/fs
/dev/vda1                                      236M  70M     0     30% /boot
tmpfs                                          201M     0  201M   0% /run/user/1

bootの容量がちゃんと減りましたね。

そして再起動

% sudo reboot

無事に起動ができました。

もう一度カーネルをアップグレード

sudo apt-get dist-upgrade

再起動

sudo reboot

カーネルが正しくインストールされているか確認

uname -r
linux-image-extra-4.4.0-81-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

無事に解決できました。

ちなみに、このブログを見ている方は、カーネルのアップデートをするときは

1、ステージングサーバーで正しくアップデートできることを確認してから、本サービスにアップデートをしてください。
2、面倒だからセキュリティーパッチとカーネルアップデートを同時にするのはやめましょう。それぞれ別にアップデートすると良いです。
3、新規にサーバーを構築するときであればまとめてアップデートは問題ないと思います。
4、容量を常に確認しましょう。

サーバーのトラブルってとても焦りますよね。
最後までこの記事を読んでいただきありがとうございます。
少しでもお役に立てると嬉しいです。