728x90
반응형

리눅스에서는 파일시스템의 디스크 사용량을 df -h 명령으로  확인 할수 있습니다. 

이번 글에서는 마운트된 디스크가 여러개일때 쉘스크립트를 사용해서

평균 사용량을 계산하는 스크립트작성하는 방법에 대해 알아보겠습니다. 

 

 

df  명령 

df -h명령을 수행 하면 아래 그림처럼 시스템의 디스크 사용량을 확인 할수 있습니다. 

 

 

각 항목의 설명은 다음과 같습니다. 

  • Filesystem: 파일 시스템의 경로 또는 장치 이름
  • Size: 파일 시스템의 총 크기
  • Used: 파일 시스템에서 사용 중인 공간
  • Avail: 파일 시스템에서 사용 가능한 공간
  • Use%: 사용 중인 공간의 백분율
  • Mounted on: 파일 시스템이 마운트된 디렉토리 경로

이때 현재 Disk 사용율은 Use% 항목으로 표시됩니다. 

디스크 사용량 공식은  Usage Percentage=(Size -​  Avail ) / size ×100 입니다. 

 

df 사용 쉘 스크립트 

쉘스크립트를 사용해 디스크가 여러개일때 평균 사용량을 체크하는 스크립트를 작성 합니다. 

  • df -k 명령을 통해 Size , Used , Avail  정보를 byte 단위로 계산 합니다. 
  • 각 디스크별로 합산 한다음 BYTE 를 GB 단위로 변환 합니다. 
  • disk_chekc.sh 
#사용량 체크 Mount Disk 정보
declare -a system_mounted_disks=(
/
/data1
/data100G
/data65G
/data300G
)


system_disk_chk(){

total_size=0
total_used_size=0
total_avail_size=0
df -h ${system_mounted_disks[1]} | awk 'NR==1'

for disk in "${system_mounted_disks[@]}"
do

df -h $disk | awk 'NR==2'
disk_size=$(df -k $disk --output=size | awk 'NR>1 {gsub(/[A-Za-z]/, "", $1); printf "%.0f\n", $1}')
disk_used_size=$(df -k $disk --output=used | awk 'NR>1 {gsub(/[A-Za-z]/, "", $1); printf "%.0f\n", $1}')
disk_avail_size=$(df -k $disk --output=avail | awk 'NR>1 {gsub(/[A-Za-z]/, "", $1); printf "%.0f\n", $1}')

total_size=$((total_size + disk_size))
total_used_size=$((total_used_size + disk_used_size))
total_avail_size=$((total_avail_size + disk_avail_size))

done

echo "--------------------------------------------------------------------"
echo "DISK Total Size        : $(expr $total_size / 1024 / 1024) GB"
echo "DISK Total Size(Used)  : $(expr $total_used_size / 1024 / 1024) GB"
echo "DISK Total Size(Avail) : $(expr $total_avail_size / 1024 / 1024) GB"
echo "DISK Use(%)            : $(echo "scale=2; ($total_size - $total_avail_size) / $total_size * 100" | bc) (%) "
echo "--------------------------------------------------------------------"


}
system_disk_chk

 

df 사용 쉘 스크립트 수행 

다음과 같이 5개 마운트된 디스크의 사용량 체크해보겠습니다. 

  • df -h 로 마운트 된 디스크 사용량 조회 
[root@centos7:/root/disk]$ df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  7.8G     0  7.8G   0% /dev
tmpfs                   tmpfs     7.8G     0  7.8G   0% /dev/shm
tmpfs                   tmpfs     7.8G  414M  7.4G   6% /run
tmpfs                   tmpfs     7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G   28G   23G  55% /
/dev/sdc                ext2      917G  814G   57G  94% /data1
/dev/sdb2               ext2       99G   32G   62G  35% /data100G
/dev/sdb3               ext2       65G   52M   62G   1% /data65G
/dev/sdb1               ext2      296G   38G  243G  14% /data300G
/dev/sda2               xfs      1014M  221M  794M  22% /boot
/dev/sda1               vfat      200M   12M  189M   6% /boot/efi
/dev/mapper/centos-home xfs       873G  237G  636G  28% /home
tmpfs                   tmpfs     1.6G  8.0K  1.6G   1% /run/user/42
tmpfs                   tmpfs     1.6G     0  1.6G   0% /run/user/0

 

  • sh disk.sh 수행 
[root@centos7:/root/disk]$ sh disk.sh 
Filesystem      Size  Used Avail Use% Mounted on
/dev/mapper/centos-home  873G  237G  636G  28% /home
/dev/sdc        917G  814G   57G  94% /data1
/dev/sdb2        99G   32G   62G  35% /data100G
/dev/sdb3        65G   52M   62G   1% /data65G
/dev/sdb1       296G   38G  243G  14% /data300G
--------------------------------------------------------------------
DISK Total Size        : 2247 GB
DISK Total Size(Used)  : 1120 GB
DISK Total Size(Avail) : 1057 GB
DISK Use(%)            : 52.00 (%) 
--------------------------------------------------------------------

 

 

728x90
반응형

+ Recent posts