여러 시스템에서 디스크 크기 가져오기

여러 시스템에서 디스크 크기 가져오기

편집하다:
여러 머신이 있고 메인 디스크의 전체 스토리지 크기를 가져와야 합니다. 내가 겪고 있는 문제는 일부 컴퓨터에서 내 디스크 이름이 /dev/sda또는 이라는 것입니다 /dev/md126p3. 이러한 모든 시스템에서 디스크 크기를 어떻게 안정적으로 얻을 수 있습니까?

기계 1:

root@maximus:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md126p3     20G  3,6G   15G  20% /
/dev/md126p2   1008M   89M  868M  10% /boot
/dev/md126p1     99M  238K   99M   1% /boot/efi

기계 2:

root@firefly:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        30G  2,8G   26G  10% /
/dev/sda2      1008M   61M  896M   7% /boot
/dev/sda1        20M  132K   20M   1% /boot/efi

기계 3:

root@backup:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        7,3T  297G  6,6T   5% /
/dev/md1        733M   57M  623M   9% /boot

기계 4:

root@vmfarm1:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md126p3     18G  8,0G  9,3G  47% /
/dev/md126p2    190M   87M   90M  50% /boot
/dev/md126p1    119M  121K  119M   1% /boot/efi

기계 5:

root@p12:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/dm-1       6.3T  4.8T  1.3T  80% /
/dev/sda2       237M   60M  166M  27% /boot

기계 6:

root@accountant:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
rootfs                 20G  415M   19G   3% /
/dev/mapper/acc-root   20G  415M   19G   3% /
/dev/md0             1012M   70M  891M   8% /boot
/dev/mapper/acc-home   20G  313M   19G   2% /home
/dev/mapper/acc-opt    20G  6.2G   13G  33% /opt
/dev/mapper/acc-usr    20G  1.2G   18G   7% /usr
/dev/mapper/acc-var    20G  802M   18G   5% /var
/dev/mapper/acc-tmp    20G  172M   19G   1% /tmp

기계 7:

root@pve:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/dm-0        95G   74G   16G  83% /
/dev/fuse        30M   16K   30M   1% /etc/pve

기계 8:

root@barclay:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1p1      2.6T   77G  2.4T   4% /
/dev/md0        186M   36M  141M  21% /boot

오래된 질문:

나는 fdisk -l전체 섹터 값을 얻으려고 노력하고 있습니다. 데비안 운영체제를 사용하세요. fdisk -l은 많은 정보를 표시합니다. 특정 단어/숫자를 제거하는 방법을 찾아야 합니다. 기본적으로 최대 "섹터" 수가 필요합니다. 내 현재 컴퓨터에 대해.

 Device      Start         End     Sectors   Size Type
/dev/sda1    3072        6143        3072   1.5M BIOS boot
/dev/sda2    6144      506879      500736 244.5M Linux filesystem
/dev/sda3  506880 14064672767 14064165888   6.6T Linux filesystem

(이것은 다른 컴퓨터에서도 다릅니다)

그 다음에

 fdisk -l | grep Linux | tail -1 

나에게 주세요. /dev/sda3 506880 14064672767 14064165888 6.6T Linux filesystem 그러나 그것은 내가 필요한 전부가 아닙니다. 내 컴퓨터 중 하나에서 이것을 잘라냈지만 "마지막에서 네 번째"를 잘라내거나 제거하는 방법을 찾을 수 없습니다.

내 테스트 머신에서는 이 작업을 수행할 수 있었습니다.

fdisk -l | grep Linux | cut -d " " -f3 | tail -1 | awk '{$1=$1/(1024^2); print $1;}' | awk '{print int($1+0.5)}' | awk '{ print $1"GB" }' 

답변1

디스크 크기를 얻으려면 다음 값을 사용할 수 있습니다.

cat /sys/block/sda/size

기본 파티션을 식별하려면 다음을 수행할 수 있습니다.

 df | grep -E "\/$" | cut -d' ' -f1 | sed 's/[0-9]*//g'

/제 경우에는 마운트된 디스크의 이름이 표시됩니다 /dev/sda.
그 후에 스크립트를 작성하는 방법은 귀하에게 달려 있습니다.

오래된 답변

이 경우 간단히 다음을 사용합니다 /sys.

cat /sys/block/sda/subsystem/sda3/size 

다음을 사용하여 섹터 수를 제공합니다.

cat /sys/block/sda/subsystem/sda3/start

시작 섹터 번호를 가져옵니다.

fdisk이는 항상 정확히 동일하지 않은 항목을 구문 분석하는 것보다 훨씬 쉽습니다. 이 값은 간단한 패턴을 사용하여 쉽게 얻을 수 있습니다.

cat /sys/block/sda/subsystem/sda*/size

답변2

노력하다

fdisk -l | awk '/Linux/ { s=$(NF-4) ;} END { print s}'

어디

  • /Linux/Linux 행이 선택됩니다.
  • { s=$(NF-4) ;}네 번째 필드를 마지막 필드로 설정합니다( $4이 경우에도 사용할 수 있습니다.
  • END마지막으로 (더 이상 입력이 없습니다)
  • { print s}인쇄하세요.

편집하다:

  • 귀하의 grep ..| cut .. | awk^n코드는 다음과 같이 단축될 수 있습니다.

    awk '/Linux/ { s=$4/(1024^2)  ;} END { printf "%d Gb\n",s}'
    
  • /2섹터는 일반적으로 512바이트이므로 Gb를 얻으려면 다른 섹터(2로 나눔)를 추가해야 할 수도 있습니다 .

답변3

사용:

가장 높은 점수를 얻기 위해부서별 가치:

fdisk -l | awk '$6=="Linux" && v < $4{v=$4}END{print v}' 

답변4

블록 장치를 df에 전달하는 것 외에도 마운트 지점을 전달할 수도 있습니다. 실제로 이것은 기본 동작입니다.

# df /
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        8191416 6002396   2088840  75% /

출처: df 맨페이지:

df는 각 파일 이름 인수를 포함하는 파일 시스템의 여유 디스크 공간 크기를 표시합니다.

관련 정보