내 디스크는 sda입니다. 크기 파일이 있습니다 /sys/dev/block/8:0/size
. 단위는 섹터이다. 실행하면 strace lsblk
파일을 읽는 것을 볼 수 있습니다.
그러나 lsblk는 나중에 총 디스크 크기를 바이트 단위로 표시하기 위해 섹터 크기를 어떻게 얻습니까? 왜냐면 난할 수 없다lsblk에서 파일 읽기 hw_sector_size
또는 를 참조하세요 physical_block_size
.
답변1
그렇지 않은 이유는 필요하지 않기 때문입니다. /sys/block/<device>/size
사용되는 섹터 크기는 장치의 실제 물리적 섹터 크기에 관계없이 항상 512입니다. 이에 대한 문서를 찾을 수 없으므로 참조하겠습니다.이 답변그들 중 일부가 있습니다커널 코드 링크댓글로 지적해
Linux는 장치의 실제 블록 크기에 관계없이 항상 섹터를 512바이트 길이로 처리합니다.
루핑 장치에 대한 빠른 테스트에서도 이것이 사실임을 보여줍니다.
$ cat /sys/block/loop0/size
204800
$ cat /sys/block/loop0/queue/physical_block_size
512
$ cat /sys/block/loop1/size
204800
$ cat /sys/block/loop1/queue/physical_block_size
4096
100MiB 장치입니다.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 100M 0 loop
loop1 7:1 0 100M 0 loop
lsblk
( 물리적 섹터 크기도 사용된 결과에 포함하도록 요청하면 실제로 물리적 크기가 필요할 때 파일을 읽는 -o+PHY-SEC
것을 볼 수 있습니다 .)queue/physical_block_size