lsblk 디스크 크기 값을 df -h의 디스크 크기 값과 비교하는 방법

lsblk 디스크 크기 값을 df -h의 디스크 크기 값과 비교하는 방법

df-h부터 lsblk 크기 사이의 디스크 크기를 비교하고 싶습니다 resize2fs. 그 후에는 크기를 기준으로 크기를 확인 resize2fs하고 싶습니다 .df -hlablk

그래서 우리는 다음을 가지고 있습니다lsblk

lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb                  8:16   0    4G  0 disk /data1
sdc                  8:32   0    4G  0 disk /data2
sdd                  8:48   0    4G  0 disk /data3

df -h에서

df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/sdb                    3.9G   22M  3.8G   1% /data1
/dev/sdc                    3.9G   18M  3.8G   1% /data2
/dev/sdd                    3.9G   18M  3.8G   1% /data3

그래서 나는 bash 스크립트에서 다음을 수행했습니다.

[[ ` lsblk | grep "^sdb" | awk '{print $4}'  ` == ` df -h | awk -v disk_var="sdb" '$1 ~ disk_var' | awk '{print $2}'  ` ]] && echo "val are equal " || echo "val are not equal "

그래서 위에서 얻은 값은 값이 동일해야 함에도 불구하고 동일하지 않습니다.

df -h" "를 사용하여 의 값과 비교할 수 있는 읽기 가능한 크기 값을 얻는 방법에 대한 제안이 있으십니까 lsblk?

우리는 rhel 7.6 서버를 개발 중입니다.

답변1

변수를 만들어 시작할 수 있습니다.

df=$(df -h | awk '/sdb/{printf "%.0f\n", $2}' | tr -d 'M|G|T')
blk=$(lsblk | awk '/sdb/ {printf "%.0f\n", $4}' | tr -d 'M|G|T')

그런 다음 그들과 함께 테스트를 실행하십시오.

[[ $blk -eq $df ]] && echo "val are equal " || echo "val are not equal "

답변2

해당 매뉴얼에서:

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

lsblk는 사용 가능하거나 지정된 모든 블록 장치에 대한 정보를 나열합니다.

IOW는 원시 블록 장치 및 해당 크기 df와 함께 각 파티션이 보유할 수 있는 실제 데이터의 양을 보여줍니다 .lsblk

동시에 해당 필드를 사용하여 lsblk동일한 정보를 표시 할 수 있습니다.df

lsblk -b -o NAME,FSSIZE,FSUSED,FSAVAIL,FSUSE%,MOUNTPOINT그리고 df -B1정확히 일치합니다.

df여유 공간과 여유 백분율 값이 혼동스럽습니다 . 그들은 너무 무관해 보였습니다. 예를 들어 루트 파티션의 경우 원시 바이트 측면에서 반올림하면 출력 과 동일 하고 일치하는 31.9%결과를 얻지 만 표현 은 크게 다릅니다.32%lsblkdf34%

관련 정보