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
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 (%)
--------------------------------------------------------------------
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
반응형