ルートファイルシステムで「EXT4-fs error (device sda1): ext4_mb_generate_buddy: EXT4-fs: group **: ** blocks in bitmap, ** in gd」ってエラー出た。


ルートファイルシステムで「EXT4-fs error (device sda1): ext4_mb_generate_buddy: EXT4-fs: group **: ** blocks in bitmap, ** in gd」ってエラー出た。ルートファイルシステムで「EXT4-fs error (device sda1): ext4_mb_generate_buddy: EXT4-fs: group **: ** blocks in bitmap, ** in gd」ってエラー出た。

vagrantで作ったCentOS6.5の開発環境でサーバ内の
フォルダがいたるところでおかしくなる現象が発生した。

作成したツールが悪さしたのかとか思っていたけど、
どうもrootでしか触れない箇所も一部書き換えられている
ようだったので、そうじゃないと判断。

「dmesg」、「/var/log/message」をみたら以下のようなエラーを吐いていた。

Sep  8 08:30:35 vagrant-centos65 kernel: sda: sda1 sda2 sda3
Sep  8 08:30:35 vagrant-centos65 kernel: sd 0:0:0:0: [sda] Attached SCSI disk
Sep  8 08:30:35 vagrant-centos65 kernel: EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts:
Sep  8 08:30:35 vagrant-centos65 kernel: Refined TSC clocksource calibration: 3096.416 MHz.
Sep  8 08:30:35 vagrant-centos65 kernel: Switching to clocksource tsc
Sep  8 08:30:35 vagrant-centos65 kernel: dracut: Mounted root filesystem /dev/sda1
Sep  8 08:30:35 vagrant-centos65 kernel: SELinux:  Disabled at runtime.
Sep  8 08:30:35 vagrant-centos65 kernel: type=1404 audit(1410132625.773:2): selinux=0 auid=4294967295 ses=4294967295
Sep  8 08:30:35 vagrant-centos65 kernel: dracut:
Sep  8 08:30:35 vagrant-centos65 kernel: dracut: Switching root
Sep  8 08:30:35 vagrant-centos65 kernel: udev: starting version 147
Sep  8 08:30:35 vagrant-centos65 kernel: vboxguest 0000:00:04.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20
Sep  8 08:30:35 vagrant-centos65 kernel: input: Unspecified device as /devices/pci0000:00/0000:00:04.0/input/input5
Sep  8 08:30:35 vagrant-centos65 kernel: vboxguest: major 0, IRQ 20, I/O port d020, MMIO at 00000000f0000000 (size 0x400000)
Sep  8 08:30:35 vagrant-centos65 kernel: piix4_smbus 0000:00:07.0: SMBus base address uninitialized - upgrade BIOS or use force_addr=0xaddr
Sep  8 08:30:35 vagrant-centos65 kernel: e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
Sep  8 08:30:35 vagrant-centos65 kernel: e1000: Copyright (c) 1999-2006 Intel Corporation.
Sep  8 08:30:35 vagrant-centos65 kernel: e1000 0000:00:08.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
Sep  8 08:30:35 vagrant-centos65 kernel: e1000 0000:00:08.0: eth1: (PCI:33MHz:32-bit) 08:00:27:a5:8f:41
Sep  8 08:30:35 vagrant-centos65 kernel: e1000 0000:00:08.0: eth1: Intel(R) PRO/1000 Network Connection
Sep  8 08:30:35 vagrant-centos65 kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
Sep  8 08:30:35 vagrant-centos65 kernel: parport_pc 00:04: reported by Plug and Play ACPI
Sep  8 08:30:35 vagrant-centos65 kernel: ppdev: user-space parallel port driver
Sep  8 08:30:35 vagrant-centos65 kernel: EXT4-fs (sda1): warning: mounting fs with errors, running e2fsck is recommended
Sep  8 08:30:35 vagrant-centos65 kernel: EXT4-fs error (device sda1): ext4_mb_generate_buddy: EXT4-fs: group 34: 9527 blocks in bitmap, 9528 in gd
Sep  8 08:30:35 vagrant-centos65 kernel: JBD: Spotted dirty metadata buffer (dev = sda1, blocknr = 0). There's a risk of filesystem corruption in case of system crash.
Sep  8 08:30:35 vagrant-centos65 kernel: EXT4-fs (dm-0): warning: maximal mount count reached, running e2fsck is recommended
Sep  8 08:30:35 vagrant-centos65 kernel: EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts:
Sep  8 08:30:35 vagrant-centos65 kernel: EXT4-fs error (device sda1): ext4_mb_generate_buddy: EXT4-fs: group 20: 5 blocks in bitmap, 29 in gd
Sep  8 08:30:35 vagrant-centos65 kernel: JBD: Spotted dirty metadata buffer (dev = sda1, blocknr = 0). There's a risk of filesystem corruption in case of system crash.
Sep  8 08:30:35 vagrant-centos65 kernel: NET: Registered protocol family 10
Sep  8 08:30:35 vagrant-centos65 kernel: lo: Disabled Privacy Extensions
Sep  8 08:30:35 vagrant-centos65 kernel: ADDRCONF(NETDEV_UP): eth1: link is not ready
Sep  8 08:30:35 vagrant-centos65 kernel: e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Sep  8 08:30:35 vagrant-centos65 kernel: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
Sep  8 08:30:35 vagrant-centos65 rpc.statd[955]: Version 1.2.3 starting
Sep  8 08:30:35 vagrant-centos65 sm-notify[956]: Version 1.2.3 starting
Sep  8 08:30:39 vagrant-centos65 smbd[1342]: [2014/09/08 08:30:39.851680,  0] printing/print_cups.c:151(cups_connect)
Sep  8 08:30:39 vagrant-centos65 smbd[1342]:   Unable to connect to CUPS server localhost:631 - Connection refused
Sep  8 08:30:39 vagrant-centos65 smbd[1312]: [2014/09/08 08:30:39.852067,  0] printing/print_cups.c:528(cups_async_callback)
Sep  8 08:30:39 vagrant-centos65 smbd[1312]:   failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
Sep  8 09:37:44 vagrant-centos65 kernel: EXT4-fs error (device sda1): ext4_mb_generate_buddy: EXT4-fs: group 16: 21091 blocks in bitmap, 21092 in gd
Sep  8 09:40:01 vagrant-centos65 logrotate: ALERT exited abnormally with [1]
Sep  8 09:43:50 vagrant-centos65 kernel: EXT4-fs error (device sda1): ext4_mb_generate_buddy: EXT4-fs: group 7: 7013 blocks in bitmap, 6546 in gd
Sep  8 09:43:50 vagrant-centos65 kernel: JBD: Spotted dirty metadata buffer (dev = sda1, blocknr = 0). There's a risk of filesystem corruption in case of system crash.

ここに注目。

EXT4-fs error (device sda1): ext4_mb_generate_buddy: EXT4-fs: group 34: 9527 blocks in bitmap, 9528 in gd

どうもEXT4の「/dev/sda1」がおかしい模様。

前にvmがいきなり落ちたのが原因かも・・・。

ちなみに以下のような構成

# mount
/dev/sda1 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/mapper/VgData01-LvData01 on /var/www/html type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/vagrant on /vagrant type vboxsf (uid=500,gid=500,rw)

 

# df -h
Filesystem                     Size  Used Avail Use% Mounted on
/dev/sda1                      7.3G  2.4G  4.6G  34% /
tmpfs                          939M     0  939M   0% /dev/shm
/dev/mapper/VgData01-LvData01   91G  729M   86G   1% /var/www/html
/vagrant                       863G  239G  625G  28% /vagrant

以下のページを参考に修復を開始。

vagrant up途中で止まったりvagrant sshがconnection closeでもあきらめちゃだめ、destroyしちゃだめ

システム起動時にUNEXPECTED INCONSISTENCYエラーが発生した場合は

Linuxで次回起動時にfsckを強制または抑止する方法について

/etc/fstab – ファイルシステム情報の設定

具体的には

ホスト機にディスプレイ、キーボード、マウスをつなぎ、
Vagrantfileファイル内の以下の箇所を変更。

# vb.gui = true
↓
vb.gui = true

 

$ vagrant up

ホスト機上でGUIで起動するので以下を実行。

# touch /forcefsck

一旦サーバを落とす。

# shutdown -h now

もう一回

$ vagrant up

すると途中でrootのパスワードを聞かれる。

Give root password for maintenance
(or type Control-D to continue):

ファイルシステム修復用のシェルが起動するので対象を確認する

# mount

今回は/dev/sda1なので以下のコマンドを実行

# fsck -t ext4 /dev/sda1

後はビビりながらEnterを押し続ける。

***** FILE SYSTEM WAS MODIFIED *****
***** REBOOT LINUX *****

↑上記のようなメッセージが出たら脱出

# exit

その後は普通に起動。

「/var/log/message」を確認してみる。

ちなみに今回の修復をするなかで、ルートファイルシステムでfsck場合は
シングルユーザモードで行うと書かれていたので、ゲストにSSHで
ログインしたまま

# /sbin/init 1

したら接続が切られて焦ったのでやらないほうがいい。。
この状態になったら

$ vagrant halt
$ vagrant up

で元に戻った。

あとホスト機でGUIモードで起動してrootログインしてから
シングルユーザモードになって

# fsck -t ext4 /dev/sda1

打っても稼動中って出て修復できなかった。
あー読み込み専用にしないといけなかったのかな。。

あと、
「/etc/fstab」を開きルートファイルシステムの6個目のフィールドを1に変更もやっておいたほうがよい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です