ext4시작 시 파일 시스템 확인

ext4시작 시 파일 시스템 확인

어제 우리 컴퓨터 중 하나가 껍질을 잃어버렸습니다. grub솔직히 말해서 우리가 컴퓨터를 열었을 때 그것이 어떤 껍질인지 확신할 수 없었습니다.

이는 불일치로 인해 루트 파일 시스템 등을 마운트할 수 없음을 나타냅니다.

나는 달렸고 믿었습니다.

fsck -fy /dev/sda2

다시 시작하면 문제가 사라집니다.

질문 부분은 다음과 같습니다.

나는 이미 그녀의 루트 crontab에 있습니다.

@reboot /home/ruzena/Development/bash/fs-check.sh

그리고 스크립트에는 다음이 포함됩니다.

#!/bin/bash
touch /forcefsck

그러고 보니 이렇게 짧은 명령어에 대한 스크립트 파일을 왜 만들었는지는 모르겠지만 어쨌든...

또한 파일에서:

/etc/default/rcS

나는 다음을 정의했습니다:

FSCKFIX=yes

그래서 이해가 안 돼요. 어떻게 이런 일이 일어날 수 있습니까?


부팅 시 루트 파일 시스템 검사(및 선택적 복구)를 강제하려면 어떻게 해야 합니까?

아니면 이 두 가지가 내가 할 수 있는 가장 큰 일인가?

운영 체제:리눅스 민트 18.x 시나몬 64비트.

fstab:

cat /etc/fstab | grep ext4

보여주다:

UUID=a121371e-eb12-43a0-a5ae-11af58ad09f4    /    ext4    errors=remount-ro    0    1

grub:

fsck.mode=force

grub구성 에 추가되었습니다 .

답변1

ext4시작 시 파일 시스템 확인

테스트 운영 체제: 가상 머신의 Linux Mint 18.x

기본 정보

/etc/fstab순서 fsck는 마지막(6번째) 열입니다. 예를 들면 다음과 같습니다.

<file system>    <mount point>    <type>    <options>    <dump>    <fsck>
UUID=2fbcf5e7-1234-abcd-88e8-a72d15580c99 / ext4 errors=remount-ro 0 1

FSCKFIX=yes변수/etc/default/rcS

이렇게 하면 fsck가 자동으로 복구되도록 변경되지만,아니요fsck 검사를 강제합니다.

에서 man rcS:

FSCKFIX
    When  the  root  and all other file systems are checked, fsck is
    invoked with the -a option which means "autorepair".   If  there
    are  major  inconsistencies then the fsck process will bail out.
    The system will print a  message  asking  the  administrator  to
    repair  the  file  system manually and will present a root shell
    prompt (actually a sulogin prompt) on the console.  Setting this
    option  to  yes  causes  the fsck commands to be run with the -y
    option instead of the -a option.  This will tell fsck always  to
    repair the file systems without asking for permission.

~에서man tune2fs

If you are using journaling on your filesystem, your filesystem
will never be marked dirty, so it will not normally be checked.

에서 시작하다

다음을 설정하세요

FSCKFIX=yes

파일에

/etc/default/rcS

fs가 마지막으로 확인된 시간을 확인하고 기록해 두십시오.

sudo tune2fs -l /dev/sda1 | grep "Last checked"

이 두 가지 옵션은 작동하지 않습니다

  1. -F(강제 fsck재시작) 인수를 다음으로 전달합니다 shutdown.

    shutdown -rF now
    

    아니요. 다음을 참조하세요 man shutdown.

  2. /forcefsck빈 파일 추가 :

    touch /forcefsck
    

    스크립트는 다음을 사용하는 것 같습니다.

    /etc/init.d/checkfs.sh
    /etc/init.d/checkroot.sh
    

    했다아니요재부팅 후 작동하지만 파일이 삭제되었습니다.

    확인됨:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    sudo less /var/log/fsck/checkfs
    sudo less /var/log/fsck/checkroot
    

    이는 스크립트의 로그인 것으로 보입니다 init.

반복합니다. 두 옵션 모두 작동하지 않습니다!


두 가지 방법 모두 작동합니다.

  1. systemd-fsck커널 부팅 스위치

    기본 grub구성 파일을 편집합니다.

    sudoedit /etc/default/grub
    
    GRUB_CMDLINE_LINUX="fsck.mode=force"
    
    sudo update-grub
    sudo reboot
    

    이것은 파일 시스템 검사를 수행했으며 다음을 통해 확인되었습니다.

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    

    참고: 이했다확인하십시오. 그러나 강제로 수리하려면 fsck.repair="preen", 또는 를 지정해야 합니다 fsck.repair="yes".

  2. tune2fs실행 전 파일 시스템 마운트 수를 설정 하는 데 사용됩니다 fsck.man tune2fs

    tune2fs' info is kept in the file system superblock
    

    -c스위치는 fs를 확인하기 전에 fs를 마운트할 횟수를 설정합니다.

    sudo tune2fs -c 1 /dev/sda1
    

    확인하다:

    sudo tune2fs -l /dev/sda1
    

    이것했다입증된 작업:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    

일반화하다

fsckLinux Mint 18.x에서 부팅할 때마다 강제로 실행 하려면 tune2fs, 또는 fsck.mode=force및 선택적 fsck.repair=preen/ fsck.repair=yes커널 명령줄 스위치를 사용하세요.

답변2

기존 답변에 대한 추가 조사 및 업데이트

위의 내용이 여전히 작동하는지 지금 확인하고 싶습니다.Ubuntu 20.04/22.04-LTS 기반 시스템(Linux Mint 20/21 Cinnamon amd64 데스크탑 및 Ubuntu MATE 20.04/22.04 amd64 데스크탑 에서 직접 테스트 ), 몇 가지 사실을 발견했습니다. 파일 시스템 확인 간격 ~#부터 시작하겠습니다. 명령 앞):


파일 시스템 확인 간격

~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Check interval'

Check interval:           0 (<none>)

글쎄, 이건 예상치 못한 일이었어. 이 문제가 해결된 줄 알았는데 해결이 너무 쉽네요. 인수로 사용되는 숫자의 기본값은 일이므로 1이 아닌 1s(1초)를 사용해야 합니다. 이는 1일(86400초)을 의미합니다.

~# LC_ALL=C tune2fs -i 1s /dev/nvme0n1p2

tune2fs 1.45.5 (07-Jan-2020)
Setting interval between checks to 1 seconds

이제 위의 확인을 반복하면 다음과 같은 결과를 얻습니다.

Check interval:           1 (0:00:01)

물론 이것이 매초마다 파일 시스템을 검사한다는 의미는 아닙니다. 대신 실제로 모든 파일 시스템 마운트에서 파일 시스템 검사를 강제합니다. (어떤 시스템이든 1초에 두 번 부팅할 수 있는 방법은 없기 때문에

관련 정보