web-dev-qa-db-ja.com

私のUbuntuはすべてのブートアップでfsckを実行しています

すべての起動時に同じです:

/dev/sda1: clean, 908443/38690816 files, 44176803/154733312 blocks

ファイルシステムの一貫性を確保するためにUbuntuが使用する何らかの種類のオプションですか、それとも私のHDDに何か問題がありますか? fsckは起動中に最大30秒かかるため、そうでない場合は約3倍の時間がかかります。

完全な出力(一部はドイツ語):

Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... done.
Begin: Running /scripts/local-bottom ... done.
done.
Begin: Running /scripts/init-bottom ... done.
fsck von util-linux 2.20.1
/dev/sda1: sauber, 908443/38690816 Dateien, 44176803/154733312 Blöcke
udevd[623]: unknown key 'SYSFS{idVendor}' in /lib/udev/rules.d/45-libticables.rules:6

udevd[623]: invalid rule '/lib/udev/rules.d/45-libticables.rules:6'

 * Starting mDNS/DNS-SD daemon                                                 [ OK ]
 * Starting Reload cups, upon starting avahi-daemon to make sure remote queues are populated                                                                   [ OK ]
 * Starting configure network device security                                  [ OK ]
 * Starting bluetooth daemon                                                   [ OK ]
 ####* Starting all other stuff
19
s3lph

/ dev/sda1:clean、908443/38690816ファイル、44176803/154733312ブロック

そのメッセージを生成する行は this :です。

/* Print the summary message when we're skipping a full check */
log_out(ctx, _("%s: clean, %u/%u files, %llu/%llu blocks"),

「完全なチェック」をスキップしますが、ジャーナルに対する高速テストがクリーンであり、孤立したiノードがないことを確認しただけです。

cat /var/log/boot.log 
fsck from util-linux 2.20.1
fsck from util-linux 2.20.1
/dev/sda1: clean, 260598/771552 files, 1684682/3080192 blocks
/dev/sdb10: recovering journal
/dev/sdb10: Clearing orphaned inode 142568 (uid=1000, gid=1000, mode=0100664, size=32768)
/dev/sdb10: Clearing orphaned inode 138527 (uid=1000, gid=1000, mode=0100600, size=9580)
/dev/sdb10: clean, 54957/991232 files, 3498365/3958006 blocks

これは正常で予想されることです。それが本当に徹底的なチェックだった場合、もっと時間がかかりますが、通常は1秒以下かかります。 Systemd systemd-fsck(8)マニュアルページには、完全チェックがトリガーされる条件があります。

systemd-fsck-root.serviceは、ルートファイルシステムがinitramfsでチェックされなかった場合にのみ、ルートファイルシステムのファイルシステムチェックを行います。 systemd-fsck @ .serviceは、他のすべてのファイルシステムと、initramfsのルートファイルシステムに使用されます。

これらのサービスは、ファイルシステムの/ etc/fstabのpassnoがゼロより大きい値に設定されている場合、ブート時に開始されます。ルートのファイルシステムチェックは、他のファイルシステムの前に実行されます。同じ回転ディスク上にある場合を除き、他のファイルシステムを並行してチェックできます。

systemd-fsckは特定のファイルシステムに関する詳細を認識せず、各ファイルシステムタイプ(/sbin/fsck.*)に固有のファイルシステムチェッカーを実行するだけです。 このヘルパーは、最後のチェックからの時間、マウント数、アンマウントのアンクリーンなどに基づいて、ファイルシステムを実際にチェックするかどうかを決定します

(systemdを使用している場合)テストの実行がほとんどないことを簡単に確認できます。

Sudo systemd-analyze blame | grep fsck
          1.608s systemd-fsck@dev-disk-by\x2duuid-408535fe\x2d28e6\x2d4d82\x2dbb59\x2d9810ead089a3.service
            87ms systemd-fsck@dev-mapper-vlhome\x2dlvhome.service
25
Braiam

Udevdに関連する次のコンソールメッセージが30秒かかるだけでなく、30秒かかっているのはfsckですか?言い換えれば、コンソールメッセージを表示する前に、udevdがlibticablesの処理をタイムアウトするのに30秒かかっているのでしょうか?

削除(または一時的に他の場所に移動)してみてください

/lib/udev/rules.d/45-libticables.rules

それが役立つかどうかを確認します。

1

クロックが正しくないため、ブートごとにこのfsckが発生しました。 systemd-fsck @はsystemd-timesyncdの前に実行され、バッテリでバックアップされたRTCがないと、fsckの実行時にシステム時間が間違っているようです。

Systemd-timesyndを無効にし、journalctlで見つかった同期前の値にクロックを設定し、fsckを実行することで、これが実際に(fsckをすばやく終了するのではなく)完全チェックをトリガーすることを確認しました。 e2fsckは、最後のスーパーブロック書き込み時間が将来であることを検出すると、フルチェックを実行します。

fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Superblock last write time (Mon Jun 19 00:48:11 2017,
    now = Tue Jan 31 20:09:28 2017) is in the future.
Fix<y>? yes
Pass 1: Checking inodes, blocks, and sizes
...

この完全なチェックのトリガーは、他の回答で言及されているdumpe2fs -hにある最後のチェック以降の最大マウント数と時間間隔の他のトリガーとは無関係であることに注意してください。

クロックを設定しない(つまり、timesyncdに同期させる)と、fsckは完全なチェックを行わず、「filesystem clean」メッセージですぐに終了することに注意してください。

回避策として、「pass」フィールドを0に設定して/ etc/fstabのfsckを無効にしました。最終的に、このデバイス用にバックアップされたRTCバッテリーを購入します。

0
alexei