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

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

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

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

その時には、

[code]
sudo apt-get update
sudo apt-get upgrade
[/code]

で更新できます。

また、カーネルも新しいバージョンが出ていたので
[code]
sudo apt-get dist-upgrade
[/code]
でアップグレードをし

再起動
[code]
sudo reboot
[/code]

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

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

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

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

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

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

手順としては

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

です。

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

現在のカーネルを確認
[code]
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
[/code]

次にだいたい何かしらのファイルが大きくなって容量が圧迫されることが多いので、システムの容量を確認
[code]
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
[/code]

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

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

下記のコマンドでインストールされているカーネルを確認
[code]
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
[/code]

最新のカーネルをメモして依存関係があるものを削除
[code]
% sudo apt-get autoremove –purge linux-image-extra-4.4.0-81-generic
[/code]

再度削除されているか確認
[code]
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
[/code]

削除されましたね。

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

[code]
% sudo apt-get autoremove –purge 不要なカーネル番号
[/code]

カーネル情報を確認

[code]
dpkg –get-selections | grep linux-image
linux-image-4.4.0-79-generic install
linux-image-extra-4.4.0-79-generic install
[/code]

bootの容量を確認

[code]
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
[/code]

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

そして再起動
[code]
% sudo reboot
[/code]

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

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

[code]
sudo apt-get dist-upgrade
[/code]

再起動
[code]
sudo reboot
[/code]

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

[code]
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
[/code]

無事に解決できました。

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

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