ext4에서 fsck -p (preen)의 기능은 무엇입니까?


16

파일 시스템 복구에 대한 블로그 게시물을 읽었으며 저자는 좋은 질문을 게시했습니다 ... fsck -p사람의 개입없이 작은 오류를 자동으로 수정해야합니다. 그러나 파일 시스템을 정리하라는 메시지가 표시되면 정확히 어떻게 수정됩니까? 어떤 오류가 수정되며, 어떤 오류가 발생하여 사용자가 대화식으로 fsck를 실행해야하는지 중지하고 알려줍니다. 어떤 종류의 목록이 있습니까?

나는 인터넷 검색을 해왔고 맨 페이지 만 있으면 실제로 무엇이 -p수정 될지 또는 실제 플래그를 트리거하는지 알 수없는 매뉴얼 페이지 만 있습니다. 특히 ext4 파일 시스템에 관심이 있습니다.

답변:


18

귀하의 질문에 대한 답변은 e2fsprogs 소스 코드 e2fsck/problems.c파일에 있습니다. 을 찾고 플래그를하는 당신은 시작한다.PR_PREEN_OK

발생할 수있는 다양한 오류 조건으로 인해 전체 오류 처리가 조금 더 복잡해 지므로 특정 사례가 염려되는 경우 코드를 자세히 살펴 보는 것이 좋습니다. 그러나 아래 목록은 주석에서 오류 조건에 대한 추출이며 사전 모드의 영향에 대한 대략적인 개요를 제공해야합니다.

-p플래그가 지정 되면 다음 오류 / 경고가 현재 자동으로 처리됩니다 .

  • 힌트 재배치
  • 저널 inode가 유효하지 않습니다
  • 저널 슈퍼 블록이 손상되었습니다
  • 수퍼 블록 has_journal 플래그가 명확하지만 저널이 있습니다
  • 수퍼 블록 needs_recovery 플래그가 설정되었지만 저널이 없습니다
  • 파일 시스템 개정은 0이지만 기능 플래그가 설정됩니다.
  • 외부 수퍼 블록에 대한 수퍼 블록 힌트
  • 기능 설명없이 그룹 디스크립터 N이 초기화되지 않은 것으로 표시되었습니다.
  • 그룹 N 블록 비트 맵이 초기화되지 않았지만 inode 비트 맵이 사용 중입니다.
  • 그룹 디스크립터 N에 유효하지 않은 사용 된 inode 수가 있습니다.
  • 마지막 그룹 블록 비트 맵이 초기화되지 않았습니다.
  • test_fs 플래그가 설정되었으며 ext4를 사용할 수 있습니다
  • 마지막 마운트 시간은 미래입니다 (퍼지)
  • 마지막 쓰기 시간은 미래입니다 (퍼지)
  • 블록 그룹 체크섬 (래치 질문)이 유효하지 않습니다.
  • 루트 디렉토리에 dtime이 설정되었습니다
  • 예약 된 inode에 잘못된 모드가 있습니다
  • 삭제 된 아이 노드는 dtime이 0이다
  • 사용중인 Inode이지만 dtime 설정
  • 길이가 0 인 디렉토리
  • 아이 노드의 i_size가 잘못되었습니다
  • Inode에 잘못된 i_block이 있습니다
  • 그룹의 불량 슈퍼 블록
  • 그룹의 불량 블록 그룹 설명자
  • 이유없이 주장 된 블록
  • 메타 데이터 재배치에 대한 블록 할당 오류
  • 재배치 과정에서 블록 버퍼 할당 오류
  • 메타 데이터 그룹 정보를 X에서 Y로 재배치
  • 메타 데이터 그룹 정보를 X로 재배치
  • 재배치 과정에서 블록 읽기 오류
  • 재배치 과정에서 블록 쓰기 오류
  • 장치 또는 소켓 inode에 설정된 불변 플래그
  • 장치, fifo 또는 소켓 inode의 0이 아닌 크기
  • 파일 시스템 개정은 0이지만 기능 플래그가 설정됩니다.
  • 저널 inode가 사용되지 않지만 데이터가 포함됨
  • 저널에 잘못된 모드가 있습니다
  • 비 HTREE 파일 시스템에 설정된 INDEX_FL 플래그
  • 비 디렉토리에 설정된 INDEX_FL 플래그
  • HTREE 디렉토리의 유효하지 않은 루트 노드
  • HTREE 디렉토리에서 지원되지 않는 해시 버전
  • HTREE 루트 노드에서 호환되지 않는 플래그
  • HTREE가 너무 깊다
  • 잘못된 inode-> i_extra_isize
  • 잘못된 ea entry-> e_name_len
  • 잘못된 ea entry-> e_value_offs
  • 잘못된 ea entry-> e_value_block
  • 유효하지 않은 항목-> e_value_size
  • 유효하지 않은 ea entry-> e_hash
  • inode에 EXTENTS_FL이 누락되었지만 범위 inode입니다.
  • 아이 노드는 EOFBLOCKS_FL을 설정하지 않아야한다
  • 디렉토리 항목이 삭제되었거나 사용하지 않은 inode
  • 디렉토리 파일 유형이 설정되지 않았습니다
  • 파일 시스템에 설정된 디렉토리 파일 유형
  • 잘못된 HTREE 루트 노드
  • 유효하지 않은 HTREE 한도
  • 유효하지 않은 HTREE 수
  • HTREE 내부 노드에 순서가 잘못된 해시가 있습니다.
  • _INODE_UNINIT가 설정된 그룹에서 Inode를 찾았습니다.
  • 사용되지 않은 inode 영역 그룹에서 발견 된 inode
  • i_blocks_hi는 0이어야합니다
  • / lost + found를 찾을 수 없습니다
  • 연결되지 않은 길이가 0 인 inode
  • 아이 노드 참조 카운트가 잘못되었습니다
  • inode 비트 맵 끝에 패딩이 설정되지 않았습니다.
  • 블록 비트 맵 끝의 패딩이 설정되지 않았습니다.
  • 비트 맵 차이 헤더 차단
  • 사용되지 않지만 비트 맵으로 표시된 블록
  • 비트 맵에서 사용되었지만 표시되지 않은 블록
  • 블록 비트 맵 차이 끝
  • 아이 노드 비트 맵 차이 헤더
  • Inode는 사용되지 않지만 비트 맵으로 표시
  • 비트 맵에서 사용되었지만 표시되지 않은 inode
  • 아이 노드 비트 맵 차이 끝
  • 무료 inode가 그룹에 잘못 계산
  • 그룹이 잘못 계산 된 디렉토리
  • 무료 inode가 잘못 계산됩니다
  • 사용 가능한 블록이 그룹에 잘못 계산
  • 사용 가능한 블록이 잘못 계산
  • 사용되지 않지만 비트 맵으로 표시된 블록 범위
  • 비트 맵에서 사용되었지만 표시되지 않은 블록 범위
  • 아이 노드 범위는 사용되지 않지만 비트 맵으로 표시
  • 비트 맵에서 사용되었지만 표시되지 않은 inode 범위
  • 그룹 N 블록이 사용 중이지만 그룹이 BLOCK_UNINIT로 표시됨
  • 그룹 N inode가 사용 중이지만 그룹이 INODE_UNINIT로 표시됨
  • E2F_FLAG_JOURNAL_INODE 플래그가 설정된 경우 저널을 다시 작성하십시오.

다음 오류 조건으로 인해 -p플래그가 설정되어 있어도 비 대화식 fsck 프로세스가 중단 됩니다.

  • 그룹에없는 블록 비트 맵
  • 그룹에없는 아이 노드 비트 맵
  • 그룹에없는 Inode 테이블
  • 파일 시스템 크기가 잘못되었습니다
  • 수퍼 블록의 아이 노드 개수가 잘못되었습니다
  • 허드는 파일 유형 기능을 지원하지 않습니다
  • 저널에 알 수없는 수퍼 블록 유형이 있습니다
  • 일기를 정리해야하는지 물어봐
  • 저널 수퍼 블록에 알 수없는 읽기 전용 기능 플래그 세트가 있습니다.
  • 저널 수퍼 블록에 알 수없는 호환되지 않는 기능 플래그 세트가 있습니다.
  • 저널에 지원되지 않는 버전 번호가 있습니다
  • 어쨌든 일기를 써야하는지 물어봐
  • resize_inode없이 예약 된 블록
  • Resize_inode를 사용할 수 없지만 inode 크기 조정이 0이 아닙니다.
  • 아이 노드 크기 조정이 잘못되었습니다
  • 마지막 마운트 시간은 미래입니다
  • 마지막 쓰기 시간은 미래입니다
  • 그룹 디스크립터 N 체크섬이 유효하지 않습니다.
  • 루트 디렉토리는 아이 노드가 아닙니다
  • 비트 맵이 다른 fs 블록과 충돌
  • Inode 비트 맵이 다른 fs 블록과 충돌
  • Inode 테이블이 다른 fs 블록과 충돌
  • 블록 비트 맵이 불량 블록에 있습니다
  • Inode 비트 맵이 불량 블록에 있습니다
  • inode에서 잘못된 블록 번호
  • fs 메타 데이터와 겹치는 블록 번호
  • Inode에 잘못된 블록이 있습니다 (latch question)
  • inode에 불량 블록이 너무 많습니다
  • 잘못된 블록 inode의 잘못된 블록 번호
  • 잘못된 블록 inode에 잘못된 블록이 있습니다 (latch question)
  • 불량 블록 간접 블록으로 사용 된 불량 블록
  • 불일치는 수정 될 수 없습니다
  • 잘못된 기본 블록 프롬프트
  • 메시지 표시 안 함
  • 파일 시스템이 지원하지 않는 경우 inode에 Imagic 플래그 설정
  • 파일 시스템이이를 지원하지 않는 경우 inode에 설정된 압축 플래그
  • 고아 연결 목록의 일부인 inode 다루기
  • 손상된 고아 연결 목록 (일부 질문)의 일부인 inode 처리
  • 확장 된 속성 블록을 읽는 중 오류
  • 유효하지 않은 확장 속성 블록
  • 확장 된 속성 참조 수가 잘못되었습니다
  • 지원되지 않는 여러 EA 블록
  • EA 할당 충돌 오류
  • 확장 된 속성 이름이 잘못되었습니다.
  • 확장 된 속성 값이 잘못되었습니다
  • 아이 노드가 너무 큼 (래치 질문)
  • 디렉토리가 너무 큼
  • 일반 파일이 너무 큼
  • Symlink가 너무 큼
  • 불량 블록에는 파일 시스템 블록과 충돌하는 간접 블록이 있습니다.
  • 아이 노드 크기 조정 실패
  • inode는 디렉토리 인 것으로 보인다
  • 익스텐트 트리를 읽는 중 오류
  • 익스텐트 반복 실패
  • 범위의 잘못된 시작 블록
  • 파일 시스템을 넘어서는 범위
  • 비 확장 파일 시스템에 설정된 EXTENTS_FL 플래그
  • inode에 범위가 있으며 수퍼 블록에 INCOMPAT_EXTENTS 기능이 없음
  • 빠른 심볼릭 링크에 EXTENTS_FL 설정
  • 범위가 잘못되었습니다
  • Inode에 유효하지 않은 범위 노드가 있습니다
  • 복제 / 불량 블록 복제?
  • '.'에 대한 잘못된 inode 번호
  • 디렉토리 항목에 잘못된 inode 번호가 있습니다
  • 직접 입력은 '.'링크입니다.
  • 잘못된 블록에있는 디렉토리 진입 점이 이제 inode에 있음
  • 디렉토리 항목은 디렉토리에 대한 링크를 포함합니다
  • 디렉토리 항목은 루트 디렉토리에 대한 링크를 포함합니다
  • 디렉토리 항목 이름에 잘못된 문자가 있습니다
  • 잃어버린 '.' 디렉토리 inode에서
  • 디렉토리 inode에서 '..'누락
  • 디렉토리 inode의 첫 번째 항목에 '.'이 포함되어 있지 않습니다.
  • 디렉토리 inode의 두 번째 항목에 '..'이 포함되어 있지 않습니다.
  • i_faddr은 0이어야합니다
  • i_file_acl은 0이어야합니다
  • i_dir_acl은 0이어야합니다
  • i_frag는 0이어야합니다
  • i_fsize는 0이어야합니다
  • inode에 잘못된 모드가 있습니다
  • 디렉토리가 손상되었습니다
  • 파일 이름이 너무 깁니다
  • 디렉토리 inode에 누락 된 블록 (구멍)이 있습니다
  • '.' NULL로 끝나지 않습니다
  • '..'는 NULL로 종료되지 않습니다
  • 잘못된 문자 장치 inode
  • 불법 블록 장치 inode
  • '.'이 (가) 중복되었습니다. 기입
  • '..'항목이 중복되었습니다.
  • 최종 rec_len이 잘못되었습니다
  • 디렉토리 블록 읽기 오류
  • 디렉토리 블록 쓰기 오류
  • '.'에 대한 디렉토리 항목 크다. 스플릿?
  • 불법 FIFO 아이 노드
  • 잘못된 소켓 inode
  • 디렉토리 파일 형식이 잘못되었습니다
  • 디렉토리 파일 이름이 null
  • 잘못된 심볼릭 링크
  • i_file_acl (확장 속성 블록)이 잘못되었습니다
  • 파일 시스템에는 큰 파일이 포함되어 있지만 SB에는 이러한 플래그가 없습니다
  • 유효하지 않은 HTREE 디렉토리 지우기
  • htree 내부 노드의 불량 블록
  • 중복 된 디렉토리 항목이 있습니다.
  • 고유하지 않은 파일 이름이 발견되었습니다.
  • i_blocks_hi는 0이어야합니다
  • 예기치 않은 HTREE 블록
  • 루트 아이 노드가 할당되지 않았습니다
  • 분실물 보관소 없음
  • 연결되지 않은 디렉토리 inode
  • .. 항목이 잘못되었습니다
  • 디렉토리를 찾을 수 없음
  • 미부착 아이 노드
  • 수퍼 블록 손상
  • 지원되지 않는 조각
  • 파일 시스템의 물리적 장치 크기를 결정하는 동안 오류가 발생했습니다
  • 외부 저널에 여러 개의 파일 시스템이 있습니다 (지원되지 않음).
  • 외부 저널을 찾을 수 없습니다
  • 외부 저널에 불량 슈퍼 블록이 있습니다
  • 수퍼 블록에 잘못된 저널 UUID가 있습니다
  • 아이 노드 비트 맵 할당 오류
  • 블록 비트 맵 할당 오류
  • icount 링크 정보 할당 오류
  • 디렉토리 블록 배열 할당 오류
  • inode를 스캔하는 중 오류
  • 블록을 반복하는 중 오류
  • 아이 노드 개수 정보를 저장하는 동안 오류가 발생했습니다
  • 디렉토리 블록 정보를 저장하는 중 오류
  • inode를 읽는 동안 오류가 발생했습니다 (삭제).
  • 참조 카운트 구조 할당 오류
  • 참조 카운트를 수정하는 동안 확장 된 속성 블록을 읽는 중 오류가 발생했습니다
  • 참조 카운트를 수정하는 동안 확장 된 속성 블록을 쓰는 중 오류가 발생했습니다
  • EA 지역 할당 구조 할당 오류
  • inode를 스캔하는 중 오류
  • 아이 노드 비트 맵 할당 오류
  • 내부 오류 : dir_info를 찾을 수 없습니다
  • icount 구조 할당 오류
  • 디렉토리 블록에 대한 반복 오류
  • 아이 노드 할당 해제 오류
  • EA 참조 횟수 조정 오류
  • 아이 노드 비트 맵 할당 오류
  • 루트 디렉토리 생성 오류
  • 루트 아이 노드는 디렉토리가 아니다. 중단
  • 루트 inode없이 진행할 수 없습니다.
  • 내부 오류 : dir_info를 찾을 수 없습니다
  • 프로그래밍 오류 : 비트 맵 끝 점이 일치하지 않습니다
  • 내부 오류 : 비트 맵 끝 제거
  • 대체 inode 비트 맵에서 복사 오류
  • 대체 블록 비트 맵에서 복사 오류

노아 당신이 이것을 알고 있다면,이 모든 오류를 만들거나 주입 할 수 있습니까? 이러한 오류의 원인과 이러한 오류의 가능한 해결책을 조사하려고합니다.
AnkurTank
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.