![/proc/partition을 설명하세요](https://linux55.com/image/147241/%2Fproc%2Fpartition%EC%9D%84%20%EC%84%A4%EB%AA%85%ED%95%98%EC%84%B8%EC%9A%94.png)
임베디드 Linux 장치의 플래시 메모리 파티션 크기에 대해 혼란스러워합니다.
/ # cat /proc/partitions
major minor #blocks name
240 0 93184 ndda
240 1 85168 ndda1
240 2 7000 ndda2
240 3 1000 ndda3
ndda2와 ndda3에 해당하는 파티션의 크기는 각각 7000kB와 1000kB인 것으로 알고 있습니다.
ndda가 ndda1 + ndda2 + ndda3의 크기보다 16kB 더 크다는 것을 알 수 있습니다.
그건,93184 - (85168 + 7000 + 1000) = 16.
이 16kB는 무엇으로 구성됩니까? 이에 대해 더 자세히 알아볼 수 있는 곳은 어디인가요?
이제 /nand1이라는 디렉토리에 ndda1을 설치하면 다음과 같은 결과가 나타납니다.
/ # df
Filesystem 1k-blocks Used Available Use% Mounted on
tmpfs 27044 0 27044 0% /dev/shm
/dev/ndda1 84928 64288 20640 76% /nand1
크기(84928kB?)는 /proc/partitions가 보고하는 것보다 240kB 작습니다.
다시 말하지만, 어떤 구조가 책임이 있습니까?
파티션은 다음과 같이 마운트됩니다.지방 조직.
답변1
파티션은 일반적으로 2MB 경계에서 시작하여 파일 시스템 블록을 물리적 블록(장치에 따라 16kB, 64kB 또는 그 이상일 수 있음)과 정렬합니다. 정렬되지 않은 블록은 파일 시스템 블록을 업데이트할 때 두 개의 장치 블록을 가져와야 하고, 첫 번째 블록의 마지막 부분이 업데이트되고, 두 번째 블록의 첫 번째 부분이 업데이트되고, 두 블록이 모두 다시 기록되어야 함을 의미합니다. 이는 적절하게 정렬된 파일 시스템보다 블록 읽기가 2번 더 많고 블록 쓰기가 1번 더 많습니다.
장치 시작 부분에서 파티션 테이블 자체를 찾을 수 있습니다. 이것이 첫 번째 파티션이 블록 0에서 시작할 수 없는 이유입니다.
두 번째 질문(파일 시스템이 장치보다 작은 이유): 파일 시스템에는 관리 데이터(예: 여유 블록 목록)가 필요합니다. 이는 예약된 공간이므로 직접 데이터 저장에 사용할 수 없습니다.