특정 파일에 액세스하고 읽기 전용 모드로 다시 설치하는 동안 파티션 오류가 발생했습니다.

특정 파일에 액세스하고 읽기 전용 모드로 다시 설치하는 동안 파티션 오류가 발생했습니다.

나는 Ubuntu 16.04를 실행하는 매우 기본적인 시스템(이 질문은 Ubuntu에 국한되지 않고 ext4파티션에 따라 다릅니다), HDD 1개, 몇 개의 파티션을 실행하고 있습니다.

sda1-EXT4-100G-/
sda2-EXT4-723.5G-/홈
sda3-NTFS-100G-(윈도우)
sda5-스위치-8G

/home파티션의 특정 디렉터리(문제를 일으키는 특정 폴더는 /home/path/to/broken/folder) 에 있는 3-4개 파일 중 하나 에 액세스하려고 할 때마다 /home파티션에 오류가 발생하고 읽기 전용으로 다시 마운트됩니다. dmesg다음 오류가 표시됩니다.

EXT4-fs 오류(장치 sda2): ext4_ext_check_inode:497:inode1415 화: comm rm: pblk 0 오류 헤더/범위: 잘못된 매직 - 매직 0, 항목 0, 최대 0(0), 깊이 0(0)
장치 sda2-8에 대한 로깅을 중단합니다.
EXT4-fs(sda2): 파일 시스템을 읽기 전용으로 다시 마운트합니다.
EXT4-fs 오류(장치 sda2): ext4_ext_check_inode:497: inode1417 화: comm rm: pblk 0 오류 헤더/범위: 잘못된 매직 - 매직 0, 항목 0, 최대 0(0), 깊이 0(0)
EXT4-fs 오류(장치 sda2): ext4_ext_check_inode:497: inode1416 화: comm rm: pblk 0 오류 헤더/범위: 잘못된 매직 - 매직 0, 항목 0, 최대 0(0), 깊이 0(0)

그래서 무슨 일이 일어나고 있는지 이해합니다. 일부 불량 블록이 오류를 일으키고 추가 손상을 방지하기 위해 읽기 전용 모드로 드라이브를 다시 마운트하고 있습니다. 오류를 실행 취소할 수 있기 때문에 이것이 특정 파일이라는 것을 알고 있습니다.

  1. 루트로 로그인
  2. 달리기sync
  3. 중지 lightdm(및 모든 하위 프로세스)
  4. /home열려 있는 나머지 파일을 모두 찾아 중지하세요.lsof | grep /home
  5. 제거/home
  6. 실행 fsck /home(오류 수정)
  7. 다시 설치/home

모든 것이 다시 괜찮습니다. 읽고 쓰고,동일한 파일에 다시 액세스하려고 할 때까지를 클릭한 다음 전체 프로세스를 반복하여 다시 수정하세요.

파일에 액세스하려는 방법은 실행을 통해 이루어지기 ls /home/path/to/broken/folder때문에 rm -r /home/path/to/broken/folder드라이브의 해당 부분에 대한 모든 종류의 HDD 작업이 오류가 발생하고 다시 읽기 전용 상태로 전환되는 것 같습니다.

솔직히 저는 이 파일들에 관심이 없고 그냥 사라졌으면 좋겠어요. 전체 폴더를 삭제할 의향이 있지만 /home/path/to/broken/folder이 작업을 시도할 때마다 실패하고 읽기 전용 상태로 멈춥니다.

하드 드라이브에서 실행 했는데 badblocks -v /dev/sda2결과는 불량 블록 없이 깨끗했습니다. 어떤 도움이라도 여전히 크게 감사하겠습니다.

아직도 해결책을 찾고 있습니다. 다음은 도움이 될 수 있는 몇 가지 정보입니다.

$ debugfs -R 'stat <1415>' /dev/sda2
debugfs 1.42.13(2015년 5월 17일)
Inode: 1415 유형: 일반 모드: 0644 플래그: 0x80000
세대: 0 버전: 0x00000000
사용자: 0 그룹: 0 크기: 0
파일 ACL: 0 디렉터리 ACL: 0
링크: 1 블록 수: 0
조각: 주소: 0 수량: 0 크기: 0
ctime: 0x5639ad86 -- 2015년 11월 4일 수요일 01:02:30
atime: 0x5639ad86 -- 2015년 11월 4일 수요일 01:02:30
시간: 0x5639ad86 -- 2015년 11월 4일 수요일 01:02:30
추가 inode 필드 크기: 0
범위:

이제 나는 이것을 직접 살펴보고 손상되지 않은 inode라고 의심되는 것과 비교했습니다.

$ debugfs -R 'stat <1410>' /dev/sda2
debugfs 1.42.13(2015년 5월 17일)
Inode: 1410 유형: 일반 모드: 0644 플래그: 0x80000
세대: 0 버전: 0x00000000
사용자: 0 그룹: 0 크기:996
파일 ACL: 0 디렉터리 ACL: 0
링크: 1 블록 수: 0
조각: 주소: 0 수량: 0 크기: 0
ctime: 0x5639ad31 -- 2015년 11월 4일 수요일 01:01:05
atime: 0x5639ad31 -- 2015년 11월 4일 수요일 01:01:05
시간: 0x5639ad31 -- 2015년 11월 4일 수요일 01:01:05
추가 inode 필드 크기: 0
범위:
(0):46679378

주요 차이점이라고 생각되는 부분을 굵게 표시했습니다. 손상되지 않은 다른 inode를 살펴본 결과 14100이 아닌 크기와 범위와 비슷한 내용이 표시되었습니다.

여기서 잘못된 헤더/범위가 의미가 있습니다. 범위가 없습니다. /home전체 파티션을 다시 포맷하지 않고 이 문제를 어떻게 해결할 수 있습니까?

정말 저보다 더 똑똑한 사람에게 이런 질문을 건네준 것 같은 느낌이 듭니다. 식사(답)가 무엇인지 모르겠어요!

답변1

마침내 다른 사이트에서 다른 사람의 답변을 찾았습니다. inode를 0으로 설정하고 시스템을 다시 확인하면 됩니다. 그게 전부입니다!

debugfs -w /dev/sda2
:clri<1415>
:clri<1416>
:clri<1417>
:큐
fsck -y /dev/sda2

이 문제가 발생하는 다른 사람을 위해 find잘못된 설치에서 잘못된 inode가 사용되는 것을 확인한 다음 dmesg잘못된 inode에서 오류를 확인했습니다.

관련 정보