`systemd`のクラッシュ後にfsckディスクを自動的に強制する方法? -何も意味しません。
設定fsck_y_enable="YES"
およびbackground_fsck="NO"
/etc/rc.conf
何もしません。
私のルートファイルシステムはクリーンではなく、多くのエラーがあります(停電のため-ハードドライブまたはハードウェアが悪いためではなく、予期しないシャットダウン)。
fsck
はエラーを示しています:
root@Host2:/usr/home/alex # fsck
** /dev/mirror/gm0p2 (NO WRITE)
** Last Mounted on /
** Root file system
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
UNREF FILE I=8268305 OWNER=root MODE=140777
SIZE=0 MTIME=Jun 6 21:58 2014
CLEAR? no
[100行以上スキップ]
サーバーへの物理的またはKVMアクセス権がありません。これはgmirror
edドライブです。
FreeBSD Host2.domain.tld 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r255898: Thu Sep 26 22:50:31 UTC 2013 [email protected]:/usr/obj/usr/src/sys/GENERIC AMD64
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0p2 / ufs rw 1 1
/dev/mirror/gm0p3 none swap sw 0 0
FreeBSDは強制アンマウントを適切に機能しているので、起動時にこれを行う必要はありません。 (リモートで)ログインして、rootfsを読み取り専用として再マウントします(mount -fur /
)、手動でfsckを実行します(fsck -y /
)次に、マシンを再起動します。
ブートプロセスの早い段階で(まだシングルユーザーモードで)コマンドを実行する必要がある場合は、それらをシェルスクリプト/etc/rc.early
に追加します。
そのファイルにfsck -fy /
のようなものを追加すると、スキャンが強制され、すべてのプロンプトに「はい」と答えます。
完了したら、rc.early
から削除することを忘れないでください。削除しないと、起動するたびに実行されます。
FreeBSD 10.3以降、これは/etc/rc.d/root
を一時的に変更して/sbin/fsck -fy /
を実行することで実現できます。
これが現在のスクリプトで、コメントアウトされたコマンドを含むように変更されています。 fsckを実行するにはコメントを外します。
#!/bin/sh
#
# $FreeBSD: stable/10/etc/rc.d/root 177062 2008-03-11 17:21:14Z delphij $
#
# PROVIDE: root
# REQUIRE: fsck
# KEYWORD: nojail
. /etc/rc.subr
name="root"
start_cmd="root_start"
stop_cmd=":"
root_start()
{
# root normally must be read/write, but if this is a BOOTP NFS
# diskless boot it does not have to be.
#
case ${root_rw_mount} in
[Nn][Oo] | '')
;;
*)
# Uncomment the below line to run fsck on root during boot:
#/sbin/fsck -fy /
if ! mount -uw /; then
echo 'Mounting root filesystem rw failed, startup aborted'
stop_boot true
fi
;;
esac
umount -a >/dev/null 2>&1
# If we booted a special kernel remove the record
# so we will boot the default kernel next time.
if [ -x /sbin/nextboot ]; then
/sbin/nextboot -D > /dev/null 2>&1
fi
}
load_rc_config $name
run_rc_command "$1"