블록 특수 파일의 크기를 얻는 방법은 무엇입니까? [복사]

블록 특수 파일의 크기를 얻는 방법은 무엇입니까? [복사]

특수 파일의 블록 크기를 결정할 수 있어야 합니다.

예를 들어, /dev/sda장치 크기를 제공하는 명령이 필요합니다. (크기는 저장 장치이므로 용량을 의미합니다.)


이유:

다음을 통해 장치에 정보를 저장할 수 있습니다.

echo "12345" >/dev/sda # 루트로 실행해야 합니다.

(그런데, 데이터에 관심이 없다면 해당 명령을 실행하지 마세요.)

그런데 기기에 얼마나 많은 데이터를 저장할 수 있는지 알아야 하는데 어떻게 해야 할지 모르겠습니다.

답변1

blockdev블록 장치 속성을 설정/가져오는 방법을 제공합니다. 크기를 바이트 단위로 얻으려면 다음을 수행하십시오.

blockdev --getsize64 /dev/sda

또는 512바이트 블록 단위로 측정된 sda 크기를 제공하는 /sys/block/<device>등 일부 정보가 디렉토리 아래에 제공됩니다 . sda1 파티션 크기를 cat /sys/block/sda/size참조하세요 /sys/block/sda/sda1/size.

KiB 단위의 sda 크기

echo $[  $(cat /sys/block/sda/size) / 2 ]

sda 크기(바이트)

echo $[  $(cat /sys/block/sda/size) * 512 ]

답변2

구문 분석을 통해 fdisk -l /dev/sda정확한 결과를 얻을 수 있습니다.

Disk /dev/sda: 68.7 GB, 68719476736 bytes
255 heads, 63 sectors/track, 8354 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bd83f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        8009    64325632   83  Linux
/dev/sda2            8009        8355     2780161    5  Extended
/dev/sda5            8009        8355     2780160   82  Linux swap / Solaris

답변3

보편적인 크로스 플랫폼 답변은 없다고 생각합니다. Linux에서 정보는 /proc/partitions이름에도 불구하고 PC 스타일 파티션뿐만 아니라 모든(대부분?) 블록 장치를 포함합니다.

awk '$4 == "sda" {print $3}' /proc/partitions

답변4

/proc/partitions당신이 찾고 있는 데이터가 있습니다. fdisk가 데이터를 가져오는 곳입니다.

예를 들어 내 시스템에서

major minor  #blocks  name
   8     0  976762584 sda
   8     1    8385898 sda1
   8     2  968374102 sda2
   8    16  976762584 sdb
   8    17    8385898 sdb1
   8    18  968374102 sdb2
   8    32  976762584 sdc
   8    33    8385898 sdc1
   8    34  968374102 sdc2
   8    48  976762584 sdd
   8    49    8385898 sdd1
   8    50  968374102 sdd2
   9     2 2905122048 md2

관련 정보