web-dev-qa-db-ja.com

コマンドラインからmountを呼び出すときにfsckを自動的に実行する

USBドライブをマウントおよびアンマウントするバックアップスクリプトがあります。
警告が表示されていることに気づきました。

EXT3-fs warning: maximal mount count reached, running e2fsck is recommended

私の質問:mountコマンドの実行時にe2fsckを自動的に実行するにはどうすればよいですか?
これは/etc/fsckでどのように見えるかです

UUID=c870ccb3-e472-4a3e-8e82-65f4fdb73b38   /media/backup_disk_1  auto  defaults,rw,noauto  0 3

つまり、<pass>3なので、必要なときにfsckが実行されることを期待していました。

[〜#〜]編集[〜#〜]

これは私が与えられた答えに基づいてそれをやった方法です:

(Bashスクリプトで)

function fsck_disk {
  UUID=$1
  echo "Checking if we need to fsck $UUID"
  MCOUNT=`tune2fs -l "UUID=$UUID" 2> /dev/null | sed -n '/Mount count:\s\+/s///p'`
  if [ "$MCOUNT" -eq "$MCOUNT" ] 2> /dev/null
  then
    echo "Mount count = $MCOUNT"
    if (( $MCOUNT > 30 ))
    then
      echo "Time to fsck"
      fsck -a UUID=$UUID \
           1>> output.log \
           2>> error.log
    else
      echo "Not yet time to fsck"
    fi
  fi
}

fsck_disk a60b1234-c123-123e-b4d1-a4a111ab2222
3
user92979

man fstabによると:

6番目のフィールド(fs_passno)。このフィールドは、再起動時にファイルシステムチェックが実行される順序を決定するためにfsck(8)プログラムによって使用されます。ルートファイルシステムはfs_passnoを1で指定し、他のファイルシステムはfs_passnoを2で指定する必要があります。ドライブ内のファイルシステムは順次チェックされますが、ハードウェアで利用可能な並列処理を利用するために、異なるドライブ上のファイルシステムも同時にチェックされます。 。 6番目のフィールドが存在しないかゼロの場合、ゼロの値が返され、fsckはファイルシステムをチェックする必要がないと見なします。

したがって、3は無効です。さらに、fstabは、デバイスがマウントされるたびにではなく、起動時間のチェックにのみ影響します。したがって、起動中に確認するには、6番目のフィールドを2に変更します。すべてのマウントをチェックしたい場合は、簡単なスクリプトで実行するか、エイリアスを作成することもできます(たとえば

alias bk_mount='fsck -a UUID=c870ccb3-e472-4a3e-8e82-65f4fdb73b38 && \
                mount /media/backup_disk_1'
1
Costas

この警告はかなり無意味なので、単に無視するか、tune2fs -c 0 /dev/sdbを使用して取り除くことができます。特にext3/4では、Xマウント後にファイルシステムをfsckする理由は実際にはありません。これは、ext2が90年代に新しくなったときからの引き継ぎであり、「万が一に備えて」「良いアイデア」であると考えられていました。

1
psusi