"-l" 옵션이 있는 fdisk - 장치에 대한 정보를 어떻게 얻나요?

"-l" 옵션이 있는 fdisk - 장치에 대한 정보를 어떻게 얻나요?

저는 소프트웨어 정의 장치를 실험하고 있으며 블록 크기 = 512바이트로 작동하도록 강제하려고 시도하고 있지만 Linux는 이를 원하지 않는 것 같습니다.

장치가 최소 명령 청크 수를 보고하도록 강제했습니다 SCSI INQUIRY.

hekto@ubuntu3:~$ sudo sg_inq -p 0xb0 /dev/sde
VPD INQUIRY: Block limits page (SBC)
  Maximum compare and write length: 255 blocks
  Optimal transfer length granularity: 1 blocks
  Maximum transfer length: 1 blocks
  Optimal transfer length: 1 blocks
  Maximum prefetch transfer length: 0 blocks
  Maximum unmap LBA count: 0
  Maximum unmap block descriptor count: 0
  Optimal unmap granularity: 0
  Unmap granularity alignment valid: 0
  Unmap granularity alignment: 0
  Maximum write same length: 0x0 blocks
  Maximum atomic transfer length: 0
  Atomic alignment: 0
  Atomic transfer length granularity: 0

그러나 fdisk -l여전히 물리적 블록 크기 = 4096을 보고합니다.

hekto@ubuntu3:~$ sudo fdisk -l /dev/sde

Disk /dev/sde: 5 MB, 5120000 bytes
1 heads, 10 sectors/track, 1000 cylinders, total 10000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes  <== see here
I/O size (minimum/optimal): 4096 bytes / 524288 bytes.  <== and here  

이 숫자(위 참조)는 어디에서 왔습니까?

운영 체제: Ubuntu 14.04.5 LTS, 커널 3.19.0-78-일반

(MacBook의 VMware Fusion 8.5.8에서 가상 머신으로 작동)

답변1

나는 사용하는 것이 좋습니다트랙(1)이해하다시스템 호출(2)명령을 통해 완료합니다 fdisk. 즉, 루트로 실행합니다.

  strace fdisk -l /dev/sde

ioctl당신은 이미 다음 과 같은 것을 사용한다는 것을 발견했습니다 BLKIOMIN.BLKPBSZGET

커널이 이러한 매개변수를 어떻게 계산하는지 모르겠습니다.표준편차(4).

관련 정보