Fsckコマンドは、LinuxおよびUnixライクなオペレーティングシステムでファイルシステムの整合性をチェックするために使用されます。 システムでは、fsckは自動または手動で実行されます。 fsckの実行中は、ファイルシステムをマウントしないでください。 ルートファイルシステムと非ルートファイルシステムの両方で、再起動時にfsckを強制的に実行できます。
このチュートリアルでは、 再起動時にfsckを強制する ファイルシステムエラーをチェックします。
systemdのシステムブートでfsckを強制する
現在、多くの最新のLinuxディストリビューションが採用されています。 システム システム。 tune2fsを使用する従来の方法は、sysvinitまたはupstartシステムでのみ機能します。
systemdベースのLinuxディストリビューションの場合、次を追加します fsck.mode=force
カーネルパラメータとしてgrub設定ファイルに追加します。 systemd-fsckはファイルシステムについて何も知らないため、各ファイルシステムタイプ(/sbin/fsck.*)に固有のファイルシステムチェッカーを実行するだけであることに注意することが重要です。 ext4ファイルシステムをお持ちの場合、 example、systemd-fsckは/sbin/fsck.ext4を実行します。
追加する必要があります fsck.mode=force
最後の引用符( “)の最後にあるGRUB_CMDLINE_LINUX_DEFAULTへ。
にとって example:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force"
nanoコマンドを使用してgrub構成を編集できます。
$ sudo nano /etc/default/grub
出力:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD …)
# GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
# GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
# GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
# GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
# GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
# GRUB_INIT_TUNE="480 440 1"
簡単に修正できる問題を自動的に修復したい場合は、オプションを追加できます fsck.repair=yes
grub構成ファイルに。 はい fsck.repair
システムがすべてのfsck質問への回答として「はい」を受け入れることを示します。 システムが「いいえ」を回答として受け入れるようにする場合は、「いいえ」を使用します。
以前と同じようにgrub構成ファイルを編集して、追加する必要があります fsck.repair=yes
また fsck.repair=no
GRUB_CMDLINE_LINUX_DEFAULTに。
fsck.repair = yesの場合
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force fsck.repair=yes"
fsck.repair = noの場合
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force fsck.repair=no"
追加の変更を行わず、行った変更が正しいことを確認してください。そうしないと、システムが起動できなくなります。 変更を加えたら、nanoファイルを保存して終了できます。
編集とファイルの保存が完了したら、次のコマンドを実行してLinuxディストリビューションのGrub2構成を更新します。
$ sudo update-grub
ここでシステムを再起動する必要があります。fsckは起動時にファイルシステムの整合性チェックを実行します。
fsckで起動ごとにファイルシステムの整合性チェックを実行したくない場合は、grub構成ファイルに追加した追加の手順をすべて削除する必要があります。
systemdが起動中に単一の強制fsckを実行するには、次のようにします。
- Grubメニューを起動します
- エントリが強調表示されている間に、「e」を押してコマンドを編集します
- 「終了」ボタンを押してカーソルを最後に移動します
- スペースを追加してから、カーネルパラメータを追加します
fsck.mode=force
- Ctrl + xを押して close システムを起動します
sysvinitまたはUpstartシステムのシステムブートでfsckを強制します
古いLinuxディストリビューションでforcefsckを実行するには、次の2つの方法があります。 tune2fs と forcefsck。
ファイルシステムが破損していると定義されている場合、または特定の数の起動または時間が経過した後、fsckは起動時に実行されます。 再起動のたびに強制的にfsckを実行できるのは、EXT4、EXT3、およびEXT2ファイルシステムのみです。
tune2fsを使用すると、Linuxでさまざまな調整可能なファイルシステムパラメーターを調整できます。 このコマンドを目的に使用します。
次のコマンドtune2fsコマンドは、システムを再起動するたびにfsckを実行するようにファイルシステム(/ dev / sda1)を設定します。
$ sudo tune2fs -c 1 /dev/sda1
また、/ etc / fstabファイルで、最後の6番目の列([PASS]
)がゼロより大きい。
0
-チェックしないでください。1
-最初にチェックするファイルシステム。 通常、ルートパーティションはこの値を設定します2
-最後に、場合によっては並行してチェックされるファイルシステム。
10回の起動後にfsckにファイルシステムチェックを強制的に実行させる場合は、-cの値を10に設定します。
$ sudo tune2fs -c 10 /dev/sda1
起動ごとに実行するfsckを停止するには、-cの値を-1に置き換えて、コマンドを実行します。
$ sudo tune2fs -c -1 /dev/sda1
tune2fsツールを使用して、現在のマウントカウント、最大マウントカウント、最後にチェックされた時刻、および間隔をチェックできます。
$ sudo tune2fs -l /dev/sda1 | grep -i 'last checked|mount count|check interval'
出力:
$ sudo tune2fs -l /dev/sda1 | grep -i 'last checked|mount count|check interval'
Mount count: 31
Maximum mount count: -1
Last checked: Fri May 8 08:08:15 2020
Check interval: 0 ()
「最大マウント数」は、ファイルシステムがレビューされる前の最大マウント数です。 最大値が0または-1の場合、fsckは実行されません。 「チェック間隔」とは、2つのファイルシステムチェックの間に経過する時間を指します。
特定の数のマウントの後にfsckを実行することは可能です。 example、10回のマウントごとにfsckを実行する場合は、次のコマンドを使用できます。
$ sudo tune2fs -c 10 /dev/sda1
出力:
$ sudo tune2fs -c 10 /dev/sda1
tune2fs 1.45.6 (20-Mar-2020)
Setting maximal mount count to 10
$ sudo tune2fs -l /dev/sda1 | grep -i 'last checked|mount count|check interval'
Mount count: 31
Maximum mount count: 10
Last checked: Fri May 8 08:08:15 2020
Check interval: 0 ()
forcefsckを使用する
古いLinuxディストリビューションでは、ルートディレクトリ(/)パーティションの下にforcefsckという名前のファイルを作成するだけで、ルートパーティションに対してforcefsckが実行されます。
$ sudo touch /forcefsck
ファイルが作成されているかどうかを確認してください。
$ sudo ls /forcefsck
出力:
$ sudo touch /forcefsck
$ sudo ls /forcefsck
/forcefsck
$
これで、再起動を実行できます。または次の再起動時に、システムはルートファイルシステムでfsckを実行します。
通常、/ forcefsckファイルはfsckの後に自動的に削除されます。削除されない場合は、手動でそのファイルを削除できます。
結論
このチュートリアルでは、Linuxのルートファイルシステムと非ルートファイルシステムにfsckを強制する方法を学びました。 読んでくれてありがとう、コメントセクションであなたの提案をしてください。