
Ubuntu日本語フォーラム

ログインしていません。
皆さん、はじめまして。起動時の fsck のログについて教えてください。
Ubuntu 9.10 64bit 版を使ってみています。/ を fsck しようと調べてみて以下のことを知りました。
・マウント中は fsck できない
・/ を fsck するには起動時に fsck を自動実行する必要がある
・自動起動させるために sudo touch /forcefsck というコマンドを実行してから再起動する
ということで、試しに実行してみたところ確かに起動時にディスク チェックが実行されているようです。特に止まらずに進んでいったのでエラーはなかったようですが、このチェック結果はどこかに保存されているのだろうか?ということで更に調べたところ、
・起動時の fsck の結果は以下のファイルに記録される
/var/log/fsck/checkfs
/var/log/fsck/checkroot
ということらしいのですが、上記のファイルを見てみてもどちらも "(Nothing has been logged yet.)" という記載があるだけで、チェック結果のようなものはありませんでした。
ということで質問です。
1. Ubuntu 9.10 でも起動時の fsck のログは上記のファイルに出力されますか?
2. fsck でエラーがなかった場合にも結果がログ出力されますか?
もしログ出力されない場合は、エラーがなかったことは後から確認できますか?
以上 2 点、よろしくお願いします。
オフライン
別環境の Ubuntu 8.04 でも sudo touch /forcefsck を試してみたところ、起動時にディスク チェックが実行されて checkfs と checkroot が生成されました。ということは、9.10 の不具合なのでしょうか?それとも当方の固有の問題?もし良かったら Ubuntu 9.10 環境をお持ちの方、試してみていただけませんか?よろしくお願いします。
オフライン
同じ/forcefsckでも、9.10と8.04では作りが全然違います。
--
9.10の場合:
$ grep -ri forcefsck /etc/* してみると、/etc/init/mountall.confで何かやってます。
/etc/init/mountall.confでは、mountallを--force-fsckオプション付きで呼んでます。
また、man mountallの冒頭を見ると、
mountall reads fstab(5) and calls fsck(8), mount(8) and swapon(8) in the correct order (略)
"calls fsck"なので、内部的にfsckを呼んでいるとの記述となってます。
--
8.04の場合:
$ grep -ri forcefsck /etc/* してみると、
/etc/init.d/checkroot.shと/etc/init.d/checkfs.shで何かやってます。
/etc/init.d/checkroot.shでは、内部でfsckコマンドを呼び、ログを/var/log/fsck/checkrootに吐いてます。
--
ちなみに、私の8.04と9.10でやったら、 #2の内容と同じ現象でした。
私が分かるのはこれくらいです。
STGSAGWAN さん、ご確認 & アドバイスありがとうございます。
そもそも、8.04 と 9.10 では処理内容(処理方法)が違っていたんですね。教えて頂いた /etc/init/mountall.conf も見てみました。mountall に --force-fsck オプションをつけて呼び出すことで fsck が実行されているのだと思いますが、その結果の処理が 8.04 とは異なっているのですね。
そうなると、9.10 では結果をどうやって残しているのかが疑問ではありますが、これ以上調べるのは私には難しそうです(英語のサイトもうろうろしてみましたが、よく分かりませんでした)。今後のパッチの類で 8.04 と同じになる可能性もあるかもしれませんので、様子を見たいと思います。
どうもありがとうございました。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
9.10ではupstart化の影響で実装が変わっていて、今後たぶん、元に戻ることはないと思います(なにしろBeta初期に「要らなくなった古いcheckroot.shとかが残ってるよ」というバグレポートがあったぐらいなので。https://bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/430355 )。
ただ、「待っていれば直るか」という面では、forcefsck周りの実装はリリース直前までごたごたしていたものの一つなので(今も少しバグってるかも)、しばらく待つと直っている可能性は高いと思われます。
ただ、念のため(何かの理由でパッケージが更新されなくなっているかもしれないので)以下を調べてみていただいた方がいいかもしれません。mountallのパッケージのバージョンが0.20.0より古いものだと、特定の条件でforcefsckが効かなくなります。
cat /etc/fstab していただくと、
UUID=1ed1a7b5-6f9e-4b98-adf8-5db65515defd / ext4 errors=remount-ro 0 1
というように、「/」を含む行があると思います。この行の末尾の、例で「1」であるものが「0」になっているとチェックが省略されます。
Betaの頃のmountallは0.2.0以前のものだったので(9.10のデフォルトバージョンはさらに新しい1.0)、もしかするとこれを踏んでいる可能性もゼロではないかなあと思いました。
オフライン
kiyoshi さん、hito さん、コメントありがとうございます。
mountall.conf の書き換えはやってみたことはありませんが、mountall.conf は書き換えても問題ないものなのですか? mountall の標準出力で fsck の(正常、異常)結果が出力されるのかどうかもわかりませんが、出力されるなら最初からそう書かれていたりしないんですかね。
cat /etc/fstab の結果は
UUID=697d60xx-6axx-4fxx-97xx-a422xxxxxxxx / ext3 errors=remount-ro 0 1
となっていて、最後の値は 1 だったので大丈夫のようです。あと mountall のバージョンは 1.0 でした。
ちなみに、最初は 9.10 のデフォルトである ext4 を使用していたのですが、KVM の仮想ディスクを作成したらとてもアクセスが遅かったので ext3 にしています。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
kiyoshi さん、たくさんの情報ありがとうございます。お礼が遅くなりすみません。
to #8
> いや、だからこそhitoさんのコメントがあるということです。
↑この 1 文の意味が分かりませんでした。#5 は「リダイレクト指定で結果を出力させる方法もあるのでは?」という案で、#6 は「forcefsck 周りの実装がリリース直前までごたごたしていたので、結果出力についてはしばらく待つと直るのかも?ただ、ひょっとすると mountall パッケージのバージョンのせいなのかもしれないので確認してみては?」という別のことなのかと思っていました。まぁ、「しばらく待つと直るのかも?」の修正方法のひとつとして「リダイレクト指定による修正」の可能性もあるのかな?とは思っていましたが(ということで、やってしまっていました…後述します)。
to #9
起動時の fsck では、検査経過は表示されています。↓こんな感じです。
Filesystem checks are in progress:
/(/dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) nn%
Press ESC to cancel checks
起動中のログの表示のさせ方は知りませんでした。アドバイスありがとうございます。あと、LiveCD からの fsck はいい方法ですね。ということで、ちょっと試してみました(fsck コマンド実行に自信がないのでとりあえず KVM のゲストで Ubuntu 9.10 CD 起動でやってみました)。
ubuntu@ubuntu:~$ sudo fdisk -l Disk /dev/vda: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x000bxxxx Device Boot Start End Blocks Id System /dev/vda1 * 1 12681 101860101 83 Linux /dev/vda2 12682 13054 2996122+ 5 Extended /dev/vda5 12682 13054 2996091 82 Linux swap / Solaris ubuntu@ubuntu:~$ sudo fsck /dev/vda1 fsck from util-linux-ng 2.16 e2fsck 1.41.9 (22-Aug-2009) fsck.ext4: Device or resource busy while trying to open /dev/vda1 Filesystem mounted or opened exclusively by another program?
単純にはいかないようですね…。
to #10
> 言っているだけでは悪いので、先ほど実際に9.10で試しました。
わざわざ試していただきありがとうございます。fsck の経過表示が上記と違うのはスプラッシュを切っているせいですかね(こちらも 9.10 なのでバージョンは同じようですし)。
> ちなみに、/boot/grub/grub.cfgの該当場所、つまり、おそらく
> 10_linux
> と書かれたあたりの
> linux
> で始まる行には
> quiet
> が含まれていますか?
はい、↓こうなっています(quiet は含まれています)。
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro quiet splash
to #11
> # temporary, until we have progress indication
> # and output capture (next week :p)
> console output
これは一時的には console 出力しているが、近いうちには…って意味でしょうか?(英語は得意ではありません)ちなみに、ログのリダイレクトですが、興味本位でやってしまっていました…( >> /var/log/fsck_check_log)。案の定、起動できなくなりました。
Filesystem check failed. A maintenance shell will now be started. CONTROL-D will terminate this shell and re-try.
で、Ctrl + D を押しても、
mountall start/starting /bin/sh: 5: cannot create /var/log/fsck_check_log: Read-only file system init: mountall main process (377) terminated with status 2 Filesystem check failed. A maintenance shell will now be started. CONTROL-D will terminate this shell and re-try.
とても私のレベルでは復旧できなくなりました…(再インストール)。ということで、これをご覧の方々も絶対にやらないでください。
以上、長文すみませんでした。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
いえいえ、自己責任でやっていることなので気にされないでください。失敗してみることも大切だと思っていますし、今回ダメだった理由も分かったので(fsck 中はマウントされていないのにそこに書き込もうとした)参考になりました。とはいえ、トラブったときに自己解決できるレベルになるのが先ですかね。
> LiveCDなど他のUbuntuで起動して、問題のあるUbuntuパーティションをマウントして、
> (マウント先ディレクトリ)/etc/init/mountall.conf
> を編集して、追記した
> >> /var/log/fsck_check_log
> を消すだけで良かったのですけど。再インストールされたとは・・・。
あ、結構簡単だったんですね。気がつきませんでした(当方、この程度のレベルということです)。#11 で
> rootのパスを入力するかCTRL+Dで再実行するということでしたが、
> rootのパスは設定しておらず、CTRL+Dでは当然ダメで、無限ループに陥ったので
> SysRq+ALT+「R,S,E,I,U,B」で再起動させて他のUbuntuで修正するハメになりました。
と言うのを拝見して、やっぱりこれは自力では解決できない状態だったんだなぁ(自力ではこの方法にはたどり着けなかった)、と思っていました。
LiveCD からの fsck は、もう一度試してみたところうまくいったようです。前回ダメだったのは fsck する前にディスクの状態を見てみたような気がするので、それが原因だったのだと思います。
ubuntu@ubuntu:~$ sudo fdisk -l Disk /dev/vda: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x000bxxxx Device Boot Start End Blocks Id System /dev/vda1 * 1 12681 101860101 83 Linux /dev/vda2 12682 13054 2996122+ 5 Extended /dev/vda5 12682 13054 2996091 82 Linux swap / Solaris ubuntu@ubuntu:~$ sudo fsck /dev/vda1 fsck from util-linux-ng 2.16 e2fsck 1.41.9 (22-Aug-2009) /dev/vda1: clean, 131262/6373376 files, 1065376/25465025 blocks ubuntu@ubuntu:~$ sudo fsck -f /dev/vda1 fsck from util-linux-ng 2.16 e2fsck 1.41.9 (22-Aug-2009) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vda1: 131262/6373376 files (0.2% non-contiguous), 1065376/25465025 blocks ubuntu@ubuntu:~$
fsck に -f オプションをつけないとチェックされていないようだったので、ちょっと調べてみて -f オプションをつけてみました。
> しかし、vda1とは・・・普通はsda1とかhda1だと思うのですが、どんなメディアでしたっけ?
> あ、上に書いておられたでしょうか?
何らかの障害が起きて復旧できなくなることを恐れて、KVM のゲスト上で試してみた結果です。仮想マシン上では vda として認識されるんですかね。
GRUB2 メニューからの起動時のログ表示の操作方法も教えていただきありがとうございます。試してみたいと思います。
> 「表示と出力のキャプチャー(取得)を改善できるまで(次週かなぁ。べぇ)は、一時的に
> console output
> でコンソール(端末?)に出力させることにしておきます。」
> という意味でしょう。
なるほど、ちょっと期待していてもいい感じがしますね。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
kiyoshi さん による投稿:
$ man fsck
$ man e2fsck
とか便利ですよね。
残念ながら当方の環境では英語で表示されるので、お手軽に Web を検索して日本語情報を探してしまいます。英語でもゆっくり読めばさほど難しくないのかもしれませんが。
ただ、Web 検索で見つかる利用方法や説明はディストリビューションが違っていたり、記載時期が古かったりするせいか、微妙にオプションが違っていたりもします。そういうことを考えると、英語でも man の方が近道だったりするかもしれませんね。
kiyoshi さん による投稿:
貴重な情報をくださり、有難うございました。勉強になりました。
KVMとかの仮想はメモリを喰うので、かなり前にちょっとためしてから一切使っていませんでした。(小生、メモリが少ないパソコンしか常用していません。)
Ubuntu 9.04 でも KVM を試していたのですが、リポジトリに登録されているパッケージのバージョンが低くて使い辛く & 機能が少なく、公式からソースだったかバイナリだったかをダウンロードして試していたりもしましたが苦戦しました。それが 9.10 になってリポジトリのパッケージ(は最新ではありませんが)だけでも十分使えるので遊んでみています。ちなみに、前回のリダイレクトのお試しの時も KVM だったらお手軽に元に戻せた(試す前の状態に戻せた)のですよね。
あと、KVM 以外の VirtualBox や VMware も試してみています。Linux 上の仮想化環境もお手軽になってきたので試してみている人も多いでしょうね(ここでは仮想化ネタはどのフォーラムなのかな? 「デスクトップ向けソフトウェア」? 「サーバ環境」? 「Ubuntuに関する質問」?)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
できれば「manページの日本語化」なりで新しいトピックを起こしていただけると、後から見た人にとって「幸せになりやすい」ログが残りますので、ここで続けずに(いっそのこと転記して)別のトピックを作って頂ければと思います。
オフライン
kiyoshi さん による投稿:
man-pages-jaをインストールすると、manの出力(マニュアル)の一部が日本語になるかもしれません。
うる(うろ?)覚えですので、間違っているかもしれません。
あ、日本語化できるのですね。知りませんでした、ありがとうございます。やってみたところ、パッケージ名は「manpages-ja」でした。
sudo apt-get install manpages-ja
ただ残念ながら、先日 Web 検索で見つけた 「-f オプション」 は man では説明されていませんでした。
hito さん による投稿:
できれば「manページの日本語化」なりで新しいトピックを起こしていただけると、後から見た人にとって「幸せになりやすい」ログが残りますので、ここで続けずに(いっそのこと転記して)別のトピックを作って頂ければと思います。
もう回答頂けている(かつ、解決している)情報ですが、新しいトピックはどのように書き始めれば良いですか? 新たに man の日本語化について質問した方が良いのでしょうか? それとも kiyoshi さんとのやりとりの一部分をそのまま転記することができるのでしょうか?(すみません、そのような機能を見つけることができませんでした)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
kiyoshi さん による投稿:
$ man fsck
に書かれていると思うのですが、fsckはfsck.ext2やe2fsckを呼び出している(?)のに過ぎませんので、
$ man e2fsck
で$ man e2fsck による投稿:
-f ファイルシステムが clean な場合でも、強制的にチェックする。
とはっきりと書かれています。
man fsck で -f を検索して見つからなかったので諦めてしまいました。昨日、
kiyoshi さん による投稿:
$ man fsck
$ man e2fsck
とか便利ですよね。
とふたつ教えていただいていたのに、ちょっと早とちりだったようですね。すみません。man fsck に
fsck は、実際には Linux で利用できるさまざまなファイルシステムチェッカー (fsck.fstype)
への単なるフロントエンドにすぎない。 ファイルシステム固有のチェッカーは、 /sbin, /sbin/fs.d, /sbin/fs,
/etc/fs, /etc, 環境変数 PATH 内のディレクトリの順にサーチされる。
詳細はファイルシステム固有のチェッカーのマニュアルを参照すること。
とありますね。上記の説明に当てはめると、当方で使用しているのは ext3 なので、「fsck.ext3 への単なるフロントエンド」ということになって、
man fsck.ext3
を見てみると、英語ですが e2fsck の説明が表示されます。ここから更に、
man e2fsck
を実行すると kiyoshi さんに教えていただいた
-f ファイルシステムが clean な場合でも、強制的にチェックする。
を見つけることができました。すっきりたどり着けました。どうもありがとうございました。
ちなみに、man fsck.ext3 の英語の説明にも
-f Force checking even if the file system seems clean.
という記述がありました。
オフライン
fsckのログの取得方法がわかりましたのご参考にどうぞ@10.04-32bit
-----------
$ sudo gedit /etc/defalut/bootlogd
# Run bootlogd at startup ?
BOOTLOGD_ENABLE=yes
$ sudo touch /forcefsck
$ sudo reboot
$ cat /var/log/boot.log
fsck from util-linux-ng 2.17.2
init: procps main process (301) terminated with status 255
fsck from util-linux-ng 2.17.2
/home: 7922/3178496 files (0.8% non-contiguous), 1840102/12689341 blocks
/: 242687/1658016 files (0.3% non-contiguous), 3606024/6602459 blocks
----------
/var/log/fsck/checkroot
/var/log/fsck/checkfs
のファイルには
(Nothing has been logged yet.)
のままでログされていませんでした
オフライン