lsblk 명령어: 디스크·파티션 구조와 UUID 확인

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8root 계정
디스크 · 마운트 명령어lsblk위치/usr/bin/lsblk

lsblk 명령어는 서버에 연결된 디스크와 파티션, 마운트 위치를 트리 구조로 출력하며, 디스크 크기와 파일 시스템 종류, UUID까지 한 번에 확인할 수 있습니다. AlmaLinux 9 서버에서 lsblk를 실행한 결과 snap 패키지가 만든 loop 장치가 디스크보다 먼저 출력되어 -e 7로 걸러 냈습니다. 이어서 -f로 루트 파티션의 xfs 파일 시스템과 UUID를 확인했습니다.

아래 출력의 디스크 크기와 UUID는 예시 값입니다.

1️⃣ lsblk 명령어 기본 출력 읽기

snap으로 프로그램을 설치한 서버에서 lsblk를 옵션 없이 실행하면 패키지 버전마다 마운트된 loop 장치가 디스크보다 먼저 줄지어 나오므로, loop 장치의 장치 번호 7을 -e로 지정해 빼고 확인합니다.

lsblk -e 7
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0   80G  0 disk 
├─nvme0n1p1 259:1    0    1M  0 part 
├─nvme0n1p2 259:2    0  200M  0 part /boot/efi
├─nvme0n1p3 259:3    0    1G  0 part /boot
└─nvme0n1p4 259:4    0 78.8G  0 part /

NAME 열의 nvme0n1이 디스크입니다. 그 아래 [├─]와 [└─]로 이어진 nvme0n1p1부터 nvme0n1p4까지가 이 디스크를 나눈 파티션입니다. 건물 입구의 층별 안내판에 건물 이름 아래로 층마다 들어선 곳이 적혀 있는 것과 같습니다.

TYPE 열에는 디스크가 [disk], 파티션이 [part]로 나오고, MOUNTPOINTS 열은 그 파티션이 마운트된 폴더를 나타냅니다. 확인한 서버에서는 루트 파티션 nvme0n1p4가 /에, nvme0n1p3이 /boot에 마운트되어 있었습니다. 1M 크기의 nvme0n1p1은 GPT 디스크에서 부팅에 쓰는 BIOS 부트 파티션이라 마운트 위치가 없습니다.

MAJ:MIN은 커널이 장치에 붙인 주 번호와 부 번호로, loop 장치는 7이고 확인한 NVMe 디스크는 259였습니다. RM은 이동식 장치인지, RO는 읽기 전용인지를 1과 0으로 나타냅니다.

SIZE를 남은 용량으로 읽기 쉬우나, SIZE는 디스크나 파티션 전체의 크기입니다. 파일 시스템의 남은 용량은 -f를 붙였을 때 나오는 FSAVAIL 열에서 확인합니다.

옵션에 따라 출력에 나오는 줄과 열이 어떻게 달라지는지는 아래 다이어그램에서 차례로 비교할 수 있습니다.

🧭 lsblk 옵션별 출력: 디스크와 파티션
설명 다이어그램
⚙️ 옵션
$ lsblk -f -d -p -e 7
장치 이름
크기
파일 시스템
마운트 위치
/dev/nvme0n1
80G
├─/dev/nvme0n1p1
1M
├─/dev/nvme0n1p2
200M
vfat, 5A1E-…
/boot/efi
├─/dev/nvme0n1p3
1G
xfs, 6d2f…
/boot
└─/dev/nvme0n1p4
78.8G
xfs, 2b9e…
/
🖥️ 화면에 출력되는 것
디스크 1줄과 파티션 4줄, 기본 7열(NAME부터 MOUNTPOINTS까지)
디스크 1줄과 파티션 4줄, 파일 시스템 8열(FSTYPE, UUID, FSAVAIL 등)
디스크 1줄만, 기본 7열
디스크 1줄과 파티션 4줄, 이름이 /dev/로 시작
옵션이 없으면 디스크 아래에 파티션이 가지로 이어집니다. 크기와 마운트 위치까지 함께 나옵니다.
-f는 크기 대신 파일 시스템 종류와 UUID, 남은 용량을 출력합니다. 디스크 nvme0n1과 파일 시스템이 없는 nvme0n1p1은 빈칸으로 남습니다.
-d는 파티션 줄을 빼고 디스크 한 줄만 출력합니다.
-p를 붙이면 장치 이름 앞에 /dev/가 붙어, 출력된 경로를 그대로 다른 명령에 넣을 수 있습니다.

2️⃣ lsblk -f 파일 시스템과 UUID 확인

기본 출력에는 파일 시스템 종류가 나오지 않으므로, 파티션을 어떤 형식으로 포맷했는지는 -f로 확인합니다. -f는 NAME, FSTYPE, FSVER, LABEL, UUID, FSAVAIL, FSUSE%, MOUNTPOINTS 여덟 열을 출력합니다.

lsblk -f -e 7
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1                                                                            
├─nvme0n1p1                                                                        
├─nvme0n1p2 vfat   FAT16       5A1E-3B7C                             192.1M     4% /boot/efi
├─nvme0n1p3 xfs                6d2f0c4e-8b1a-4f3d-a7e2-9c5b1d0e4f28  691.4M    28% /boot
└─nvme0n1p4 xfs                2b9e7f41-c3d6-4a85-b0f1-7e4a2c9d6b13   68.5G    13% /

실행해 보니 루트와 /boot 파티션은 xfs, /boot/efi는 FAT16 버전의 vfat이었습니다. 디스크 nvme0n1과 nvme0n1p1에는 파일 시스템이 없어 빈칸으로 남았습니다. UUID는 파일 시스템마다 붙는 고유 번호로, /etc/fstab에서 장치 이름 대신 UUID로 마운트할 파티션을 지정할 때 사용합니다.

파일 시스템 정보를 가장 정확하게 확인할 때는 blkid 명령어를 사용합니다.

FSAVAIL과 FSUSE%는 마운트된 파일 시스템의 남은 용량과 사용률입니다. 마운트되지 않은 파티션에는 값이 나오지 않습니다. df 명령어는 마운트된 파일 시스템의 크기와 사용량만 출력합니다. lsblk는 마운트 여부와 관계없이 디스크와 파티션 구조까지 함께 출력합니다.

3️⃣ lsblk -o 열 선택과 -b 바이트 단위

-o 뒤에 열 이름을 쉼표로 이어 적으면 그 열만 차례대로 나옵니다. 쓸 수 있는 열 이름은 [lsblk --help] 끝의 목록에서 확인할 수 있습니다.

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT -e 7
NAME         SIZE FSTYPE MOUNTPOINT
nvme0n1       80G        
├─nvme0n1p1    1M        
├─nvme0n1p2  200M vfat   /boot/efi
├─nvme0n1p3    1G xfs    /boot
└─nvme0n1p4 78.8G xfs    /

MOUNTPOINT는 마운트 위치를 하나만, MOUNTPOINTS는 같은 파일 시스템이 여러 곳에 마운트되었을 때 모두를 출력합니다. 기본 열 뒤에 하나만 더하려면 [-o +UUID]처럼 열 이름 앞에 +를 붙입니다.

-b는 크기를 바이트 단위 정수로 출력합니다. 눈으로 비교할 때는 기본 단위가 읽기 쉬우므로, -b는 크기를 계산하거나 비교하는 스크립트에 맞습니다.

lsblk -b -o NAME,SIZE -e 7
NAME               SIZE
nvme0n1     85899345920
├─nvme0n1p1     1048576
├─nvme0n1p2   209715200
├─nvme0n1p3  1073741824
└─nvme0n1p4 84613774848

기본 출력의 G와 M은 1,024 단위라, 80G 디스크는 85,899,345,920바이트로 나옵니다.

4️⃣ lsblk -d 디스크 목록과 -p 전체 경로

디스크가 여러 개인 서버에서는 파티션 줄이 섞여 디스크 목록을 확인하기 어려우므로, -d로 파티션을 빼고 디스크 줄만 출력합니다.

lsblk -d -e 7
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0    0  80G  0 disk 

출력에는 디스크 nvme0n1 한 줄만 남았고, 그 아래 파티션 네 줄은 나오지 않았습니다.

-p를 붙이면 장치 이름 앞에 /dev/가 붙어 전체 경로로 나옵니다. 이 경로는 mount 같은 다른 명령에 그대로 넣을 수 있습니다.

lsblk -p -e 7
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
/dev/nvme0n1     259:0    0   80G  0 disk 
├─/dev/nvme0n1p1 259:1    0    1M  0 part 
├─/dev/nvme0n1p2 259:2    0  200M  0 part /boot/efi
├─/dev/nvme0n1p3 259:3    0    1G  0 part /boot
└─/dev/nvme0n1p4 259:4    0 78.8G  0 part /

NAME 열만 /dev/nvme0n1부터 /dev/nvme0n1p4까지 전체 경로로 바뀌고, 나머지 열은 기본 출력과 같습니다.

장치 경로를 인자로 넣으면 그 장치와 그 아래 파티션만 출력하고, 파티션 경로를 넣으면 그 파티션 한 줄만 나옵니다.

lsblk /dev/nvme0n1p4
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1p4 259:4    0 78.8G  0 part /

출력에는 nvme0n1p4 한 줄만 나오고, 디스크 줄과 가지 표시는 붙지 않습니다. 없는 장치 경로를 넣어 보니 [not a block device] 오류가 나왔고, 종료 코드는 32였습니다.

5️⃣ lsblk 명령어 스크립트용 출력과 옵션

기본 출력을 스크립트에서 잘라 쓰기 쉬우나, 기본 출력과 -f의 열 구성은 앞으로 바뀔 수 있으므로 스크립트에서는 -o로 열을 직접 지정합니다.

-n은 머리 줄을 빼고 값만 출력하므로, 파티션 하나의 파일 시스템 종류처럼 값 하나만 필요할 때 맞습니다.

lsblk -no FSTYPE /dev/nvme0n1p4
xfs

머리 줄 없이 루트 파티션의 파일 시스템 종류인 xfs 한 단어만 나오므로, 셸 변수에 그대로 담을 수 있습니다.

-P는 열마다 [이름=”값”] 꼴로 한 줄에 출력합니다. AlmaLinux 9의 util-linux 2.37에서는 -P만 붙여도 셸 변수로 읽기 쉽게 MAJ:MIN은 MAJ_MIN, FSUSE%는 FSUSE_PCT처럼 이름이 바뀝니다.

lsblk -P -o NAME,FSTYPE,MOUNTPOINT /dev/nvme0n1p4
NAME="nvme0n1p4" FSTYPE="xfs" MOUNTPOINT="/"

지정한 세 열이 NAME, FSTYPE, MOUNTPOINT 순서로 한 줄에 나옵니다. 값은 모두 큰따옴표 안에 들어 있습니다.

-J는 JSON으로 출력합니다. -d 없이 출력하면 파티션은 디스크 아래 children 배열에 들어갑니다. -b와 함께 사용하면 size만 숫자로 바뀌고, FSAVAIL 같은 다른 크기 열은 문자열로 남습니다.

lsblk -J -d -o NAME,SIZE,TYPE -e 7
{
   "blockdevices": [
      {
         "name": "nvme0n1",
         "size": "80G",
         "type": "disk"
      }
   ]
}

-d를 붙이면 blockdevices 배열에는 디스크 하나만 들어가고, children 배열은 나오지 않습니다.

🔲 lsblk 명령어 옵션

옵션복사설명
-e, --exclude지정한 주 번호의 장치를 제외합니다. 7을 지정하면 loop 장치가 빠집니다.
-f, --fs파일 시스템 종류와 UUID, 남은 용량, 사용률을 출력합니다.
-o, --output쉼표로 지정한 열만 차례대로 출력합니다.
-b, --bytesSIZE 열을 바이트 단위 정수로 출력합니다.
-d, --nodeps파티션 줄을 빼고 디스크 줄만 출력합니다.
-p, --paths장치 이름을 /dev/로 시작하는 전체 경로로 출력합니다.
-n, --noheadings머리 줄을 빼고 값만 출력합니다.
-P, --pairs열 이름과 값을 한 쌍씩 묶어 한 줄에 출력합니다.
-J, --jsonJSON 형식으로 출력합니다.
-a, --all크기가 0인 빈 장치까지 출력합니다.
옵션복사설명
-I, --include지정한 주 번호의 장치만 출력합니다.
-l, --list트리 대신 목록 형식으로 출력합니다.
-r, --raw열 간격을 맞추지 않은 raw 형식으로 출력합니다.
-i, --ascii트리 선을 ASCII 문자로 출력합니다.
-s, --inverse의존 관계를 거꾸로 하여 파티션 아래에 디스크를 출력합니다.
-S, --scsiSCSI 장치 정보만 출력합니다.
-t, --topology섹터 크기와 I/O 스케줄러 같은 토폴로지 정보를 출력합니다.
-m, --perms장치의 소유자와 그룹, 권한을 출력합니다.
-x, --sort지정한 열을 기준으로 정렬하여 목록 형식으로 출력합니다.
-O, --output-all사용할 수 있는 모든 열을 출력합니다.

🔲 lsblk 명령어 시뮬레이터

아래 시뮬레이터에서 지금까지의 명령을 직접 입력해 옵션마다 출력이 어떻게 달라지는지 확인할 수 있습니다.

lsblk 명령어 시뮬레이터util-linux 2.37.4
[root@server work]#
키보드 ↑↓ 로 앞에서 쓴 명령을 다시 불러옵니다.

🔢 FAQ & 추천 콘텐츠

일반 계정으로 -f를 실행해도 UUID와 FSAVAIL이 root 계정과 같게 출력되었습니다. lsblk는 sysfs와 udev 정보를 읽습니다. udev 정보를 쓸 수 없을 때는 장치를 직접 읽어야 하므로 root 권한이 필요합니다.

장치를 추가하거나 바꾼 직후에는 udev가 정보를 다 모으지 못했을 수 있으므로, udevadm settle을 실행한 뒤 lsblk를 다시 실행합니다.

-a는 크기가 0인 빈 장치까지 출력하므로, 기본 출력에서 빠진 장치가 있는지 확인할 때 사용합니다. 같은 서버에서 -a를 붙이자 아무것도 연결되지 않은 0B 크기의 loop 장치가 한 줄 더 출력되었습니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 10   +   9   =