stat -c %B와 stat -c %o의 차이점은 무엇입니까? [복사]

stat -c %B와 stat -c %o의 차이점은 무엇입니까? [복사]

학문적 목적으로 파일의 내부 조각화를 보여주려고 합니다. 내가 이해하는 바로는 내부 조각화는 파일 크기와 파일을 포함하는 모든 블록 크기 간의 차이로 나타날 수 있습니다. 블록 수를 찾는 것은 쉽습니다. 내 문제는 청크의 크기를 찾는 것입니다. stat -c %o가 반환한 숫자입니까? (4096) 또는 stat -c %B (512).

둘 사이의 차이점은 무엇입니까? 온라인에서 답변을 찾으려고 노력했지만 점점 더 혼란스러워지고 있습니다. blockdev --getbsz /dev/sda2와 같은 다른 명령은 내 파일 시스템 블록 크기를 4096으로 표시합니다. 그러나 계산을 해본 결과 512가 내가 찾고 있는 답변에 더 적합한 것 같습니다(내가 테스트하고 있는 파일 크기는 44933이고 블록 수는 88입니다. 여기에 4096을 곱하면 360448이 됩니다. 파일 크기의 8배가 넘습니다).

답변1

설명서에서 stat(1)찾을 수 있습니다(Centos7 버전에서 가져온 것이며 stat(1)다른 소스는 다를 수 있음).

   %b     number of blocks allocated (see %B)
   %B     the size in bytes of each block reported by %b

   %o     optimal I/O transfer size hint

이는 첫 번째는 파일 시스템에 할당된 블록에 관한 것이고, 두 번째는 해당 파일의 I/O와 관련된 값임을 나타냅니다. 명사(할당된 청크) 대 동사(해당 청크의 전달)는 다소 다릅니다.

관련 정보