/sys/block/에서만 디스크 바이트 크기를 계산합니다.

/sys/block/에서만 디스크 바이트 크기를 계산합니다.

바이너리를 호출하지 않고 항상 작동하는 방식으로 블록 장치 또는 해당 파티션 중 하나의 바이트 크기를 얻으려면 다음이 정확합니다.

/sys/block/sda/sda1/size
or /sys/block/sda/size

다음을 곱합니다:

/sys/block/sda/queue/physical_block_size

또는논리적 블록 크기또는하드웨어 섹터 크기?

더 좋은 방법이 있나요?

답변1

더 많은 연구 끝에 마침내 답을 찾았습니다.

Linux는 장치의 실제 블록 크기에 관계없이 항상 섹터를 512바이트 길이로 처리합니다.

출처에 따르면: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/types.h?id=v4.4-rc6#n121

나는 다음과 같은 의견에 이끌렸습니다. 블록 장치 크기 결정

어리석은 것처럼 보이지만 [size]에 512를 곱하면 됩니다.

나는 내 프로그램이 망가지는 것을 원하지 않기 때문에 이것이 지금으로부터 15년 후에도 여전히 올바른 가정이기를 바랍니다.물리적 블록 크기인터넷 검색을 통해 알아낸 것처럼 때로는 4096일 수 있으므로 잘못된 것 같지만 여전히 읽을 가치가 있을 수 있습니다.논리적 블록 크기또는하드웨어 섹터 크기항상 512인데도요? 이에 대한 의견이 있으십니까?

관련 정보