fsck는 fsck를 수행하지 않습니다(수퍼블록 플래그를 설정할 수 없음).

fsck는 fsck를 수행하지 않습니다(수퍼블록 플래그를 설정할 수 없음).

fsckSD 카드 기반 장치가 비정상적으로 종료된 후 루트 파일 시스템 에서 SD 카드를 제거했습니다 . 이로 인해 다음이 변경되었습니다.

e2fsck 1.43.1 (08-Jun-2016)
/dev/sdc2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? no
Clear journal<y>? no
e2fsck: unable to set superblock flags on /dev/sdc2

여기서 나는 두 번 모두 "아니오"라고 대답했지만 즉시 동일한 결과로 이어지는 예/아니오 시퀀스는 없습니다.

파일 시스템이 마운트되고 일반 검사에서는 문제가 없는 것으로 나타났습니다. 루트 파일 시스템인 장치에서도 제대로 작동합니다(실제로는 좋지 않습니다. 주석을 참조하세요. 복구할 수 없을 정도로 손상된 일부 디렉터리가 있습니다).

dd파티션(8GB)을 파일에 쓰고 fsck를 시도했습니다 . 재미있게:

e2fsck 1.43.1 (08-Jun-2016)
plush.rootfs: recovering journal
Clearing orphaned inode 18290 (uid=0, gid=0, mode=0100644, size=34096)
Clearing orphaned inode 18270 (uid=0, gid=0, mode=0100644, size=38916)
Clearing orphaned inode 18250 (uid=0, gid=0, mode=0100644, size=1128076)
Clearing orphaned inode 11411 (uid=0, gid=0, mode=0100644, size=293108)
Setting free inodes count to 406127 (was 408580)
Setting free blocks count to 1305622 (was 1347486)
plush.rootfs: clean, 60209/466336 files, 604906/1910528 blocks (check after next mount)

이후 fsck청소를 통해 이미지를 마운트한 다음 fsck -f통과시킬 수도 있습니다.

그러나 원시 블록 복사 이미지가 생성된 카드의 파일 시스템에는 여전히 동일한 문제가 있습니다. 단, systemd-fsck부팅 중에 파일 시스템이 "깨끗함"으로 기록되는 경우는 제외됩니다. 그러나 제대로 닫은 후 카드를 제거하고 fsck다른 상자에서 다시 시도하면 동일한 오류가 발생합니다.

원본 파일이 다른 시스템에 설치될 때마다 시스템 로그에는 다음이 기록됩니다.

kernel: EXT4-fs (sdc2): 4 orphan inodes deleted
kernel: EXT4-fs (sdc2): recovery complete

모든 것이 백업되어 있으므로 여기서는 무엇이든 시도해 볼 의향이 있습니다. 간단히 잊어버리고 수정된 것처럼 보이는 이미지에서 파티션을 다시 구울 수 있지만 fsck가 이상하게도 사소해 보이는 문제를 해결할 수 없다고 가정하는 것은 그다지 만족스러운 해결책이 아닌 것 같습니다.

나는 이것이 다음과 같은 것과 관련된 "공식 문서 요청" 문제가 될 것이라고 생각합니다.플래그를 복원해야 함(또는 단순한 "이것은 무엇을 의미합니까?"라는 질문) 따라서 이러한 내용에 대한 제안을 주시면 감사하겠습니다.

답변1

방금 같은 문제가 발생했습니다. 유지보수 담당자와 함께 문제를 디버깅한 결과 e2fsckSD 카드가 손상된 것을 발견했습니다. 오류 없이 쓰기를 허용하지만 실제로 카드에 데이터를 쓰지는 않습니다. SD 카드는 실제로 읽기 전용입니다.

카드가 일종의 안전 모드로 전환된 것으로 보이며 여전히 데이터를 읽을 수는 있지만 아무것도 쓸 수는 없습니다.

e2fsck메시지는 unable to set superblock flags로그를 처리된 것으로 표시하기 위해 슈퍼블록을 쓰려고 시도하며 이는 오류가 없음을 의미하지만, 슈퍼블록을 다시 읽을 때 여전히 로그를 재생해야 함을 나타냅니다. 즉, 슈퍼블록에 기록된 변경 사항은 저장 매체에 저장되지 않습니다.

제가 사용하고 있는 이 문제가 있는 카드는 Samsung Evo 16GB microSD입니다. 이 카드의 일반적인 문제인 경우를 대비해 언급하겠습니다.

dd블록 0의 카드에 4096바이트를 쓴 다음 카드에서 다시 읽어서 이를 테스트 할 수 있었고 /dev/zero, 원하는 대로 모두 0을 얻는 대신 여전히 원래의 변경되지 않은 ext4 슈퍼블록을 얻습니다.

이제 데이터를 새 카드로 전송한 다음 SD 카드에 대해 10년 보증을 제공하는 것으로 보이는 삼성에서 교체 카드를 받을 수 있는지 알아보고 있습니다.

업데이트: 삼성은 동일한 Evo 시리즈에서 16GB 카드를 32GB 카드로 교체했기 때문에 크게 불평할 수는 없을 것 같습니다!

답변2

나는 이것이 오래된 스레드라는 것을 알고 있지만 몇 가지 통찰력을 제공해야 한다고 생각했습니다.

이것은 SD 카드가 자연사하는 방식인 것 같습니다. SD 카드가 견딜 수 있는 읽기/쓰기 주기 수는 "읽기/쓰기"로 간주되는 대부분의 다른 미디어보다 훨씬 낮습니다. 카드가 소진되면 카드는 읽기 전용 모드로 전환되지만 알림은 제공되지 않습니다. 많은 것들이 OS 캐싱 등으로 인해 카드에 쓰고 있다고 생각하지만 아무 것도 붙지 않습니다.

SD 카드를 종료하는 좋은 방법은 SD 카드를 스왑 파티션이나 읽기/쓰기 중심 파티션으로 마운트하는 것입니다. 이것이 얼마나 빨리 카드를 죽일 수 있는지 놀라실 것입니다. SD 카드나 USB 썸 드라이브에서 knoppix를 실행하는 데는 카드 품질과 knoppix 사용 강도에 따라 한두 달 정도밖에 지속되지 않는 것으로 나타났습니다. (나중에 USB SSD 드라이브에서 knoppix를 실행하는 것으로 전환했으며 몇 년 동안 그렇게 해왔습니다.)

답변3

저에게는 다른 microSD-USB 어댑터와 함께 카드를 사용한 후에 문제가 사라졌습니다. 그러면 첫 번째 어댑터에서도 잘 작동합니다. 내 경우에는 접촉 불량이 문제였던 것 같다.

답변4

비슷한 microSD 문제가 두 번이나 발생했는데 microSD가 아닌 SD 어댑터의 문제인 것으로 나타났습니다. 다른 SD 어댑터로 변경하면 첫 번째 어댑터가 microSD와 동일한 브랜드라도 슈퍼블록 플래그를 쓸 수 없고 I/O 오류가 발생하는 문제가 해결되었습니다.

관련 정보