내 설정은 다음과 같습니다.
- 리눅스 커널 2.6.28
- e2fsprogs 1.42.7
- 64GB 클래스 10 SD 카드
전체 카드를 ext4 파일 시스템으로 포맷하는 데 걸리는 시간을 단축하려고 합니다. 내 연구에서는 mkfs.ext4에 대한lazy_itable_init=1 옵션이 지적되었습니다. 내가 올바르게 이해했다면 이러한 옵션은 SD 카드 파티션 포맷 속도를 크게 향상시키지만 이는 파일 시스템이 처음 마운트될 때까지 inode 초기화를 연기함으로써 달성됩니다. 그런 다음 커널은 백그라운드에서 이 초기화를 수행합니다(v2.6.27+에만 해당).
매뉴얼 페이지에는 이 옵션에 대한 다음 문장이 있습니다.
이 [플래그]는 파일 시스템 초기화 속도를 크게 향상시키지만 파일 시스템이 처음 마운트될 때 커널이 백그라운드에서 파일 시스템 초기화를 완료해야 합니다.
내 질문은 커널이 백그라운드에서 파일 시스템 초기화를 완료하지 않으면 어떻게 됩니까?
나는lazy_itable_init=1 옵션으로 포맷하고 파일 시스템을 마운트한 후 곧 SD 카드를 제거하여 이를 테스트했습니다. 카드를 다시 연결하면 파티션을 마운트하고 0이 포함된 여러 개의 100MB 파일을 문제 없이 쓸 수 있습니다. 이 내용을 다시 읽어보면 정확합니다.
이건 그냥 우연인가요? 일련의 이벤트 후에 이 동작이 보장됩니까?
답변1
inode 테이블이 0으로 초기화되는 이유는 이전에 발생한 쓰레기가 유효한 inode로 잘못 해석되지 않도록 하기 위한 것입니다 e2fsck
. 일반적으로 아무런 차이가 없지만 e2fsck
오류가 감지되면 비트맵이 사용 중임을 나타내는지 여부에 관계없이 경험적으로 inode를 식별하여 복구를 시도할 수 있으므로 삭제해야 하는 잘못된 inode를 복구하려고 시도할 수 있습니다. 이 inode는/분실+발견되었습니다.