「Fsck」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「{{Lowercase title}} Category:ファイルシステム en:Fsck fr:Fsck ru:Fsck {{Related articles start}} {{Related|Ext4}} {{Related|Btrfs}} {{Related|fsta...」)
 
(トラブルシューティングの部分を翻訳)
41行目: 41行目:
   
 
=== 破損ブロックをインタラクティブに修復 ===
 
=== 破損ブロックをインタラクティブに修復 ===
  +
{{Tip|これはブートパーティション上のファイルが変更されており、ジャーナルを更新するのに失敗した場合に使えます。この場合はブートパーティションをアンマウントしてから次のコマンドを実行してください:}}
{{Tip|This is useful for when file on the boot partition have changed, and the journal failed to properly update. In this case, unmount the boot partition, and run the following code:}}
 
 
破損箇所を修復するには、次を実行:
 
破損箇所を修復するには、次を実行:
 
{{bc|<nowiki>
 
{{bc|<nowiki>
57行目: 57行目:
 
{{ic|1}} を設定すると起動時に毎回スキャンを行い、{{ic|0}} を設定すると一切スキャンしなくなります。
 
{{ic|1}} を設定すると起動時に毎回スキャンを行い、{{ic|0}} を設定すると一切スキャンしなくなります。
   
  +
{{Tip|指定パーティションの fsck 実行頻度と現在のマウント回数を見るには次のコマンドを使います:
{{Tip|If you wish to see the frequency number and the current mount count for a specific partition, use:
 
 
# dumpe2fs -h /dev/sda1 <nowiki>|</nowiki> grep -i 'mount count'
 
# dumpe2fs -h /dev/sda1 <nowiki>|</nowiki> grep -i 'mount count'
 
}}
 
}}
82行目: 82行目:
   
 
# {{ic|/etc/mkinitcpio.conf}} に必要な[[Mkinitcpio#/usr パーティションを分割する|フック]]を記述していることを確認してください。また、このファイルを編集した後にはかならず initramfs イメージを再生成する必要があります。
 
# {{ic|/etc/mkinitcpio.conf}} に必要な[[Mkinitcpio#/usr パーティションを分割する|フック]]を記述していることを確認してください。また、このファイルを編集した後にはかならず initramfs イメージを再生成する必要があります。
  +
# [[fstab]] を確認してください。最後のフィールドはルートパーティションだけを "1" にする必要があります。それ以外はすべて "2" か "0" にします。他の誤字もないように注意深く確認してください。
# Check your [[fstab]]! Only the root partition needs "1" at the end, everything else should have either "2" or "0". Carefully inspect it for other typos, as well.
 
   
 
=== ext2fs : no external journal ===
 
=== ext2fs : no external journal ===
   
  +
電源切断により、ext3/4 ファイルシステムが通常の方法で修復できないほど破損する場合があります。普通は fsck が外部ジャーナルを見つけられないというプロンプトを出します。その場合は次の一連のコマンドを実行してください:
There are times (due to power failure) in which an ext(3/4) file system can corrupt beyond normal repair. Normally, there will be a prompt from fsck indicating that it cannot find an external journal. In this case, run the following commands:
 
   
  +
ディレクトリを指定してそのパーティションをアンマウントします
Unmount the partition based on its directory
 
 
# umount <directory>
 
# umount <directory>
  +
新しいジャーナルをパーティションに書き込みます
Write a new journal to the partition
 
 
# tune2fs -j /dev/<partition>
 
# tune2fs -j /dev/<partition>
  +
fsck を起動してパーティションを修復します
Run an fsck to repair the partition
 
 
# fsck -p /dev/<partition>
 
# fsck -p /dev/<partition>

2015年12月25日 (金) 01:03時点における版

関連記事

fsck"file system check" の略であり、Linux のファイルシステムをチェックしたり修復するのに使われます。通常、全てのファイルシステムをチェックするのに必要な時間をけずるため、fsck プログラムは異なる物理ディスクドライブのファイルシステムを同時に処理します (参照: man fsck)。

Arch Linux のブートプロセスでは起動するたびに簡便に fsck を実行してドライブ上の全てのパーティションを自動的にチェックします。そのため、特に必要がないかぎりは基本的にコマンドラインを使用する必要はありません。

ブート時のチェック

仕組み

2つの方法があります:

  1. mkinitcpio には fsck フックによって、マウントする前に root ファイルシステムを fsck するオプションがあります。これを使う場合、root を rw カーネルパラメータで読み書き可能でマウントする必要があります [1]
  2. systemd は (/etc/fstab またはユーザーによるユニットファイルで指定された) fsck パス番号が 0 より大きいファイルシステムの fsck を実行します。root ファイルシステムの場合、最初にカーネルパラメータ ro で読み取り専用でマウントして、それから fstab から読み書き可能で再度マウントする必要があります (defaults マウントオプションには rw が含まれています)。

デフォルトで1番目の方法が推奨されています。インストールガイドに従った場合はこちらを使うことになります。2番目の方法を使いたい場合は、mkinitcpio.conf から fsck フックを削除してカーネルコマンドラインで ro を使ってください。どちらの方法を使っていたとしても、カーネルパラメータ fsck.mode=skip を使うことで fsck を完全に無効化することが可能です。

強制的にチェック

カーネルパラメータで起動時に fsck.mode=force を設定することで強制的に fsck をすることもできます。マシンに存在する全てのファイルシステムをチェックします。

ノート: 他の GNU/Linux ディストリビューションを使っていた場合、forcefsck という名前のファイルをファイルシステムのルートに書き出す方法や、shutdown コマンドと -F フラグを使用する方法は、昔の SysVinitUpstart の初期バージョンでしか動作せず、systemd では使えないので注意してください。Arch Linux で使うことができるのは上述の方法だけです。

Tips and tricks

破損ブロックを修復

破損箇所を自動的に修復するには、次を実行:

警告: このコマンドは修復するべきかどうか尋ねません。コマンドを実行した時点で答えは Yes と受け取ります。
# fsck -a

破損ブロックをインタラクティブに修復

ヒント: これはブートパーティション上のファイルが変更されており、ジャーナルを更新するのに失敗した場合に使えます。この場合はブートパーティションをアンマウントしてから次のコマンドを実行してください:

破損箇所を修復するには、次を実行:

# fsck -r <drive>

チェックの頻度を変更

デフォルトでは、fsck は30回起動するたびにファイルシステムをチェックします (パーティションごとに別々にカウントされます)。チェックの頻度を変更するには、次を実行:

# tune2fs -c 20 /dev/sda1

上の例では、20 が次のチェックを行うまでの起動回数です。

1 を設定すると起動時に毎回スキャンを行い、0 を設定すると一切スキャンしなくなります。

ヒント: 指定パーティションの fsck 実行頻度と現在のマウント回数を見るには次のコマンドを使います:
# 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 が動作しない

  1. /etc/mkinitcpio.conf に必要なフックを記述していることを確認してください。また、このファイルを編集した後にはかならず initramfs イメージを再生成する必要があります。
  2. fstab を確認してください。最後のフィールドはルートパーティションだけを "1" にする必要があります。それ以外はすべて "2" か "0" にします。他の誤字もないように注意深く確認してください。

ext2fs : no external journal

電源切断により、ext3/4 ファイルシステムが通常の方法で修復できないほど破損する場合があります。普通は fsck が外部ジャーナルを見つけられないというプロンプトを出します。その場合は次の一連のコマンドを実行してください:

ディレクトリを指定してそのパーティションをアンマウントします

# umount <directory>

新しいジャーナルをパーティションに書き込みます

# tune2fs -j /dev/<partition>

fsck を起動してパーティションを修復します

# fsck -p /dev/<partition>