MTD 플래시 장치에서 busybox 및 UBI 파일 시스템을 사용하면 du 및 df 명령이 잘못된 값을 제공합니다.

MTD 플래시 장치에서 busybox 및 UBI 파일 시스템을 사용하면 du 및 df 명령이 잘못된 값을 제공합니다.

MTD 파티션에 UBIFS가 설치되어 있으며 크기는 191.9MB입니다.

mtdinfo -a를 실행하면 파티션에 다음이 표시됩니다.

mtd6
Name:  data2fs
Type:  nor
Eraseblock size:  65536 (64KB)
Amount of Erase Blocks: 3071 (201261056 bytes, 191.9MB)
etc...

그러나 df -h를 실행하면 다음과 같은 결과가 나타납니다.

               size     used    free
ubi2:data2fs   680.2G   20.0K   664.2G

왜 그럴까요? - 내 모든 마운트는 다음과 같습니다(이 질문에 대해 제가 선택한 마운트입니다).

특정 파일 "test.log"의 경우:

  • data2fs에서 du -ah를 실행하면 다음과 같은 결과가 나타납니다.4.0K test.log
  • ls -l을 수행하면 다음과 같은 결과가 나옵니다. ( test.log 40 bytes이것이 실제 값입니다.)

왜 ls가 작동하는지 이해가 안 되지만 du /df는 다른 결과를 제공합니다...

고쳐 쓰다

테스트 결과 stat -f /mnt/data2fs정답이 나온 것 같습니다.

Block Size: 4096
Total: 43738 (4096 x 43738 = 170.85MB)
Free: 43732
Avail: 42522

이것은 대략적인 예상 수치입니다(UBIFS의 오버헤드가 5~10%이므로 191MB가 아닙니다).

관련 정보