UNIX (AIX, LINUX, HP-UX, SOLARIS, ...)/etc

[Linux] lsblk(device)와 df (filesystem)의 용량이 다른 이유

아무일도없었다 2024. 2. 24. 16:59

 

lsblk


 

lsblk는 현재 linux block device의 정보를 확인할 수 있는 명령어이다.

 

아래와 같이 Device의 계층 구조와 lvm과의 연계를 Tree 구조로 보여주어 굉장히 유용하다.

 

[root@hackerpark]# lsblk -b
NAME        MAJ:MIN RM        SIZE RO TYPE MOUNTPOINT
sr0          11:0    1  2319450112  0 rom  /run/media/hackerpark/Rocky-8-7-x86_64-dvd
xvda        202:0    0 53687091200  0 disk 
├─xvda1     202:1    0  1073741824  0 part /boot
└─xvda2     202:2    0 52612300800  0 part 
  ├─rl-root 253:0    0 48381296640  0 lvm  /
  └─rl-swap 253:1    0  4227858432  0 lvm  [SWAP]

 

 

 

df


 

 

df는 현재 linux의 filesystem 정보를 확인할 수 있는 명령어이다.

 

아래와 같이 Linux의 Filesystem 정보와 Mount 정보, 현재 사용량을 확인 할 수 있어서 개인적으로도 굉장히 자주 사용되는 명령어다.

 

[root@hackerpark]# df 
Filesystem              1K-blocks      Used Available Use% Mounted on
devtmpfs                  1880020         0   1880020   0% /dev
tmpfs                     1899768         0   1899768   0% /dev/shm
tmpfs                     1899768    173364   1726404  10% /run
tmpfs                     1899768         0   1899768   0% /sys/fs/cgroup
/dev/mapper/rl-root      47224292  43316632   3907660  92% /
/dev/xvda1                1038336    196048    842288  19% /boot
overlay                  47224292  43316632   3907660  92% /var/lib/docker/overlay2/0fa5a53c9c35d24734662342344b5b32ffd4e8b80cb3e7f110282e1a9a71db90/merged
/dev/sr0                  2264744   2264744         0 100% /run/media/hackerpark/Rocky-8-7-x86_64-dvd
overlay                  47224292  43316632   3907660  92% /var/lib/docker/overlay2/2eab62cd11b8cdecfda6f4810f972ab463c8f44b82724b07107d527b81489d52/merged
tmpfs                      379952         0    379952   0% /run/user/0
tmpfs                      379952        12    379940   1% /run/user/42

 

 

 

 

차이점(lsblk vs df)


 

위에서 공통적으로 확인 가능한 xvda1을 기준으로 데이터를 비교해 보았다.

 

[root@hackerpark]# df | grep xvda1
Filesystem              1K-blocks      Used Available Use% Mounted on
/dev/xvda1                1038336    196048    842288  19% /boot

[root@hackerpark]# lsblk -b | grep xvda1
NAME        MAJ:MIN RM        SIZE RO TYPE MOUNTPOINT
├─xvda1     202:1    0  1073741824  0 part /boot

(편의상 df와 lsblk의 Data Type을 기록했다.)

 

위의 데이터를 토대로 df 데이터를 먼저 확인해보면 xvda1 Filesystem의 Size는 1038336(KB)가 나온것을 알 수 있다.

 

이를 GB로 환산해보면 다음과 같다.

 

1038336(KB) / 1024 / 1024 = 0.990234375(GB)

 

 

1GB에 살짝 못미치는 크기인것을 확인할 수 있다.

 

 

다음은 lsblk 데이터를 확인하면 1073741824(Byte)가 나온것을 알 수 있다.

 

이를 GB로 환산해보면 다음과 같다.

 

1073741824(Byte) / 1024 / 1024 / 1024 = 1(GB)

 

정확하게 1GB로 떨어지는것을 확인할 수 있다.

 

결과를 비교하자면 df(filesystem)로 확인한 size가 lsblk(device)로 확인한 size보다 작다는 결론이 나온다.

 

 

분석


 

Device와는 다르게 Filesystem은 메타데이터를 저장하고 관리할 공간이 필요한데, Filesystem은 이를 위해서 Disk 파티션의 일부분을 별도로 사용한다.

 

메타데이터에는 Directory 구조, 접근 권한, 수정 날짜 등의 정보가 포함되어있다.

 

 

또한 ext4와 같은 Filesystem은 일반 사용자가 사용할 수 없는 일부 Disk 공간을 예약하여 (약 5%정도) Disk Full과 같은 상황에서도 동작할 수 있는 메커니즘이 존재한다.

 

이 외에도 Filesystem 손상 또는 Disk에 문제가 있는 경우도 두 명령어의 결과값의 차이를 가지고 올 수 있다고 한다.

 

 

 

 

결론


 

시스템의 정보를 어떤 관점에서 보느냐에 따라서 데이터에 차이가 있는것을 확인했다.

 

따라서 현재 시스템 또는 상황에 맞춰서 적절한 데이터를 확인하는것이 좋다.

 

반응형