「Fsck」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「Tips and tricks」を「ヒントとテクニック」に置換) |
(他言語へのリンクを追加) |
||
(3人の利用者による、間の8版が非表示) | |||
1行目: | 1行目: | ||
{{Lowercase title}} |
{{Lowercase title}} |
||
[[Category:ファイルシステム]] |
[[Category:ファイルシステム]] |
||
+ | [[Category:コマンド]] |
||
[[en:Fsck]] |
[[en:Fsck]] |
||
[[fr:Fsck]] |
[[fr:Fsck]] |
||
+ | [[pt:Fsck]] |
||
[[ru:Fsck]] |
[[ru:Fsck]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
9行目: | 11行目: | ||
{{Related|fstab}} |
{{Related|fstab}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [[Wikipedia:ja:Fsck|fsck]] は ''"file system check"'' の略であり、Linux のファイルシステムをチェックしたり修復するのに使われます。通常、全てのファイルシステムをチェックするのに必要な時間をけずるため、fsck プログラムは異なる物理ディスクドライブのファイルシステムを同時に処理します (参照: {{ |
+ | [[Wikipedia:ja:Fsck|fsck]] は ''"file system check"'' の略であり、Linux のファイルシステムをチェックしたり修復するのに使われます。通常、全てのファイルシステムをチェックするのに必要な時間をけずるため、fsck プログラムは異なる物理ディスクドライブのファイルシステムを同時に処理します (参照: {{man|8|fsck}})。 |
[[Arch ブートプロセス|Arch Linux のブートプロセス]]では起動するたびに簡便に fsck を実行してドライブ上の全てのパーティションを自動的にチェックします。そのため、特に必要がないかぎりは基本的にコマンドラインを使用する必要はありません。 |
[[Arch ブートプロセス|Arch Linux のブートプロセス]]では起動するたびに簡便に fsck を実行してドライブ上の全てのパーティションを自動的にチェックします。そのため、特に必要がないかぎりは基本的にコマンドラインを使用する必要はありません。 |
||
20行目: | 22行目: | ||
# mkinitcpio には fsck フックによって、マウントする前に root ファイルシステムを fsck するオプションがあります。これを使う場合、root を {{ic|rw}} カーネルパラメータで読み書き可能でマウントする必要があります [https://projects.archlinux.org/mkinitcpio.git/commit/?id=449b3e543c]。 |
# mkinitcpio には fsck フックによって、マウントする前に root ファイルシステムを fsck するオプションがあります。これを使う場合、root を {{ic|rw}} カーネルパラメータで読み書き可能でマウントする必要があります [https://projects.archlinux.org/mkinitcpio.git/commit/?id=449b3e543c]。 |
||
− | # systemd は ( |
+ | # systemd は ''fsck'' パス番号が 0 より大きい ([[#fstab options]] または [[Systemd#systemd.mount - mounting|ユーザが提供するユニットファイル]]による) すべてのファイルシステムを ''fsck'' します。ルートファイルシステムは、最初はカーネルパラメータ {{ic|ro}} で読み込み専用にマウントされ、その後 ''fstab'' から読み書き可能に再マウントされなければなりません ({{ic|default}}のマウントオプションは {{ic|rw}} を意味することに注意してください)。 |
デフォルトで1番目の方法が推奨されています。[[インストールガイド]]に従った場合はこちらを使うことになります。2番目の方法を使いたい場合は、{{ic|mkinitcpio.conf}} から fsck フックを削除してカーネルコマンドラインで {{ic|ro}} を使ってください。どちらの方法を使っていたとしても、カーネルパラメータ {{ic|1=fsck.mode=skip}} を使うことで fsck を完全に無効化することが可能です。 |
デフォルトで1番目の方法が推奨されています。[[インストールガイド]]に従った場合はこちらを使うことになります。2番目の方法を使いたい場合は、{{ic|mkinitcpio.conf}} から fsck フックを削除してカーネルコマンドラインで {{ic|ro}} を使ってください。どちらの方法を使っていたとしても、カーネルパラメータ {{ic|1=fsck.mode=skip}} を使うことで fsck を完全に無効化することが可能です。 |
||
26行目: | 28行目: | ||
=== 強制的にチェック === |
=== 強制的にチェック === |
||
− | [[カーネルパラメータ]]で起動時に {{ic|1=fsck.mode=force}} を設定することで強制的に fsck をすること |
+ | {{ic|base}} [[mkinitcpio]] フックを使っている場合、[[カーネルパラメータ]]で起動時に {{ic|1=fsck.mode=force}} を設定することで強制的に fsck をすることができます。マシンに存在する全てのファイルシステムをチェックします。 |
+ | |||
+ | また、systemd が提供している {{man|8|systemd-fsck@.service}} は initramfs でチェックされないファイルシステムも全てチェックされます。ただし、ルートファイルシステムをチェックするとファイルシステムを再マウントしなくてはならないため起動プロセスが遅くなるので注意してください。 |
||
{{Note|他の GNU/Linux ディストリビューションを使っていた場合、{{ic|forcefsck}} という名前のファイルをファイルシステムのルートに書き出す方法や、{{ic|shutdown}} コマンドと {{ic|-F}} フラグを使用する方法は、昔の [[SysVinit]] や [[Wikipedia:ja:Upstart|Upstart]] の初期バージョンでしか動作せず、[[systemd]] では使えないので注意してください。Arch Linux で使うことができるのは上述の方法だけです。}} |
{{Note|他の GNU/Linux ディストリビューションを使っていた場合、{{ic|forcefsck}} という名前のファイルをファイルシステムのルートに書き出す方法や、{{ic|shutdown}} コマンドと {{ic|-F}} フラグを使用する方法は、昔の [[SysVinit]] や [[Wikipedia:ja:Upstart|Upstart]] の初期バージョンでしか動作せず、[[systemd]] では使えないので注意してください。Arch Linux で使うことができるのは上述の方法だけです。}} |
||
+ | |||
+ | === すべての修理に関する質問に自動的に yes と答える === |
||
+ | |||
+ | ブート時の ''fsck'' チェックで、{{ic|"UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY."}} と表示される場合。 |
||
+ | |||
+ | これは、ファイルシステムを修正するために、完全に安全とは見なされない変更を適用する必要があり、したがって ''fsck'' を手動で実行する必要がある場合に発生します。 |
||
+ | |||
+ | {{ic|fsck}} カーネルコマンドラインオプション {{ic|fsck.repair}} を {{ic|yes}} に設定することで、提案された変更をすべて自動的に適用、(つまり、すべての質問に yes と答える) ように {{ic|fsck}} を設定できます (他の可能な値は {{ic|no}} と{{ic|preen}} です) これらのオプションの意味についてはドキュメント {{man|8|systemd-fsck@.service}} を確認してください。 |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
34行目: | 46行目: | ||
=== 破損ブロックを修復 === |
=== 破損ブロックを修復 === |
||
− | 破損 |
+ | ext2/ext3/ext4 または FAT [[ファイルシステム]] の破損した部分を自動的に修復するには、次のコマンドを実行します。 |
{{Warning|このコマンドは修復するべきかどうか尋ねません。コマンドを実行した時点で答えは '''Yes''' と受け取ります。}} |
{{Warning|このコマンドは修復するべきかどうか尋ねません。コマンドを実行した時点で答えは '''Yes''' と受け取ります。}} |
||
41行目: | 53行目: | ||
=== 破損ブロックをインタラクティブに修復 === |
=== 破損ブロックをインタラクティブに修復 === |
||
+ | |||
− | {{Tip|これはブートパーティション上のファイルが変更されており、ジャーナルを更新するのに失敗した場合に使えます。この場合はブートパーティションをアンマウントしてから次のコマンドを実行してください:}} |
||
+ | これは、ブートパーティション上のファイルが変更され、ジャーナルが適切に更新されなかった場合に役立ちます。この場合、ブートパーティションをアンマウントし、次のコードを実行して破損した部分を修復します。 |
||
− | 破損箇所を修復するには、次を実行: |
||
+ | |||
− | {{bc|<nowiki> |
||
− | # fsck -r |
+ | # fsck -r ''drive'' |
− | }} |
||
=== チェックの頻度を変更 === |
=== チェックの頻度を変更 === |
||
+ | {{Note|次のコマンド ''tune2fs'' および ''dumpe2fs'' は、ext2/ext3/ext4 ファイルシステムでのみ機能します。}} |
||
− | デフォルトでは、fsck は30回起動するたびにファイルシステムをチェックします (パーティションごとに別々にカウントされます)。チェックの頻度を変更するには、次を実行: |
||
+ | |||
+ | デフォルトでは、''fsck'' は30回起動するたびにファイルシステムをチェックします (パーティションごとに別々にカウントされます) チェックの頻度を変更するには、次を実行: |
||
# tune2fs -c 20 /dev/sda1 |
# tune2fs -c 20 /dev/sda1 |
||
− | + | この例では、{{ic|20}} は、2つのチェック間のブート数です。 |
|
+ | |||
+ | {{ic|1}} は起動のたびにスキャンするのに対し、{{ic|0}} はスキャンを完全に停止することに注意してください。 |
||
+ | 特定のパーティションの頻度番号と現在のマウント数を確認したい場合は、次を使用します。 |
||
− | {{ic|1}} を設定すると起動時に毎回スキャンを行い、{{ic|0}} を設定すると一切スキャンしなくなります。 |
||
+ | # dumpe2fs -h /dev/sda1 {{!}} grep -i 'mount count' |
||
− | {{Tip|指定パーティションの fsck 実行頻度と現在のマウント回数を見るには次のコマンドを使います: |
||
− | # dumpe2fs -h /dev/sda1 <nowiki>|</nowiki> grep -i 'mount count' |
||
− | }} |
||
=== fstab のオプション === |
=== fstab のオプション === |
2023年11月20日 (月) 19:30時点における最新版
fsck は "file system check" の略であり、Linux のファイルシステムをチェックしたり修復するのに使われます。通常、全てのファイルシステムをチェックするのに必要な時間をけずるため、fsck プログラムは異なる物理ディスクドライブのファイルシステムを同時に処理します (参照: fsck(8))。
Arch Linux のブートプロセスでは起動するたびに簡便に fsck を実行してドライブ上の全てのパーティションを自動的にチェックします。そのため、特に必要がないかぎりは基本的にコマンドラインを使用する必要はありません。
目次
ブート時のチェック
仕組み
2つの方法があります:
- mkinitcpio には fsck フックによって、マウントする前に root ファイルシステムを fsck するオプションがあります。これを使う場合、root を
rw
カーネルパラメータで読み書き可能でマウントする必要があります [1]。 - systemd は fsck パス番号が 0 より大きい (#fstab options または ユーザが提供するユニットファイルによる) すべてのファイルシステムを fsck します。ルートファイルシステムは、最初はカーネルパラメータ
ro
で読み込み専用にマウントされ、その後 fstab から読み書き可能に再マウントされなければなりません (default
のマウントオプションはrw
を意味することに注意してください)。
デフォルトで1番目の方法が推奨されています。インストールガイドに従った場合はこちらを使うことになります。2番目の方法を使いたい場合は、mkinitcpio.conf
から fsck フックを削除してカーネルコマンドラインで ro
を使ってください。どちらの方法を使っていたとしても、カーネルパラメータ fsck.mode=skip
を使うことで fsck を完全に無効化することが可能です。
強制的にチェック
base
mkinitcpio フックを使っている場合、カーネルパラメータで起動時に fsck.mode=force
を設定することで強制的に fsck をすることができます。マシンに存在する全てのファイルシステムをチェックします。
また、systemd が提供している systemd-fsck@.service(8) は initramfs でチェックされないファイルシステムも全てチェックされます。ただし、ルートファイルシステムをチェックするとファイルシステムを再マウントしなくてはならないため起動プロセスが遅くなるので注意してください。
すべての修理に関する質問に自動的に yes と答える
ブート時の fsck チェックで、"UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY."
と表示される場合。
これは、ファイルシステムを修正するために、完全に安全とは見なされない変更を適用する必要があり、したがって fsck を手動で実行する必要がある場合に発生します。
fsck
カーネルコマンドラインオプション fsck.repair
を yes
に設定することで、提案された変更をすべて自動的に適用、(つまり、すべての質問に yes と答える) ように fsck
を設定できます (他の可能な値は no
とpreen
です) これらのオプションの意味についてはドキュメント systemd-fsck@.service(8) を確認してください。
ヒントとテクニック
破損ブロックを修復
ext2/ext3/ext4 または FAT ファイルシステム の破損した部分を自動的に修復するには、次のコマンドを実行します。
# fsck -a
破損ブロックをインタラクティブに修復
これは、ブートパーティション上のファイルが変更され、ジャーナルが適切に更新されなかった場合に役立ちます。この場合、ブートパーティションをアンマウントし、次のコードを実行して破損した部分を修復します。
# fsck -r drive
チェックの頻度を変更
デフォルトでは、fsck は30回起動するたびにファイルシステムをチェックします (パーティションごとに別々にカウントされます) チェックの頻度を変更するには、次を実行:
# tune2fs -c 20 /dev/sda1
この例では、20
は、2つのチェック間のブート数です。
1
は起動のたびにスキャンするのに対し、0
はスキャンを完全に停止することに注意してください。
特定のパーティションの頻度番号と現在のマウント数を確認したい場合は、次を使用します。
# dumpe2fs -h /dev/sda1 | grep -i 'mount count'
fstab のオプション
fstab はシステムの設定ファイルであり、マウントするパーティション (ファイルシステム) とファイルシステムツリーを Linux カーネルに指示するのに使われます。
基本的な /etc/fstab
エントリは以下のようになります:
/dev/sda1 / ext4 defaults 0 1 /dev/sda2 /other ext4 defaults 0 2 /dev/sda3 /win ntfs-3g defaults 0 0
6番目のカラム (太字) が fsck のオプションです。
- 0 = チェックしない。
- 1 = 最初にチェックするファイルシステム (パーティション)。
/
(root パーティション) は 1 に設定してください。 - 2 = 他のチェックするファイルシステム。
トラブルシューティング
分割した /usr パーティションで fsck が動作しない
/etc/mkinitcpio.conf
に必要なフックを記述していることを確認してください。また、このファイルを編集した後にはかならず initramfs イメージを再生成する必要があります。- fstab を確認してください。最後のフィールドはルートパーティションだけを "1" にする必要があります。それ以外はすべて "2" か "0" にします。他の誤字もないように注意深く確認してください。
ext2fs : no external journal
電源切断により、ext3/4 ファイルシステムが通常の方法で修復できないほど破損する場合があります。普通は fsck が外部ジャーナルを見つけられないというプロンプトを出します。その場合は次の一連のコマンドを実行してください:
ディレクトリを指定してそのパーティションをアンマウントします
# umount <directory>
新しいジャーナルをパーティションに書き込みます
# tune2fs -j /dev/<partition>
fsck を起動してパーティションを修復します
# fsck -p /dev/<partition>