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

lsblk 명령어는 서버에 연결된 디스크와 파티션, 마운트 위치를 트리 구조로 출력하며, 디스크 크기와 파일 시스템 종류, UUID까지 한 번에 확인할 수 있습니다. AlmaLinux 9 서버에서 lsblk를 실행한 결과 snap 패키지가 만든 loop 장치가 디스크보다 먼저 출력되어 -e 7로 걸러 냈습니다. 이어서 -f로 루트 파티션의 xfs 파일 시스템과 UUID를 확인했습니다.
아래 출력의 디스크 크기와 UUID는 예시 값입니다.
1️⃣ lsblk 명령어 기본 출력 읽기
snap으로 프로그램을 설치한 서버에서 lsblk를 옵션 없이 실행하면 패키지 버전마다 마운트된 loop 장치가 디스크보다 먼저 줄지어 나오므로, loop 장치의 장치 번호 7을 -e로 지정해 빼고 확인합니다.
lsblk -e 7NAME 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 열에서 확인합니다.
옵션에 따라 출력에 나오는 줄과 열이 어떻게 달라지는지는 아래 다이어그램에서 차례로 비교할 수 있습니다.
2️⃣ lsblk -f 파일 시스템과 UUID 확인
기본 출력에는 파일 시스템 종류가 나오지 않으므로, 파티션을 어떤 형식으로 포맷했는지는 -f로 확인합니다. -f는 NAME, FSTYPE, FSVER, LABEL, UUID, FSAVAIL, FSUSE%, MOUNTPOINTS 여덟 열을 출력합니다.
lsblk -f -e 7NAME 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 7NAME 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 7NAME 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 7NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 80G 0 disk 출력에는 디스크 nvme0n1 한 줄만 남았고, 그 아래 파티션 네 줄은 나오지 않았습니다.
-p를 붙이면 장치 이름 앞에 /dev/가 붙어 전체 경로로 나옵니다. 이 경로는 mount 같은 다른 명령에 그대로 넣을 수 있습니다.
lsblk -p -e 7NAME 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/nvme0n1p4NAME 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/nvme0n1p4xfs머리 줄 없이 루트 파티션의 파일 시스템 종류인 xfs 한 단어만 나오므로, 셸 변수에 그대로 담을 수 있습니다.
-P는 열마다 [이름=”값”] 꼴로 한 줄에 출력합니다. AlmaLinux 9의 util-linux 2.37에서는 -P만 붙여도 셸 변수로 읽기 쉽게 MAJ:MIN은 MAJ_MIN, FSUSE%는 FSUSE_PCT처럼 이름이 바뀝니다.
lsblk -P -o NAME,FSTYPE,MOUNTPOINT /dev/nvme0n1p4NAME="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, --bytes | SIZE 열을 바이트 단위 정수로 출력합니다. | |
| -d, --nodeps | 파티션 줄을 빼고 디스크 줄만 출력합니다. | |
| -p, --paths | 장치 이름을 /dev/로 시작하는 전체 경로로 출력합니다. | |
| -n, --noheadings | 머리 줄을 빼고 값만 출력합니다. | |
| -P, --pairs | 열 이름과 값을 한 쌍씩 묶어 한 줄에 출력합니다. | |
| -J, --json | JSON 형식으로 출력합니다. | |
| -a, --all | 크기가 0인 빈 장치까지 출력합니다. |
| 옵션 | 복사 | 설명 |
|---|---|---|
| -I, --include | 지정한 주 번호의 장치만 출력합니다. | |
| -l, --list | 트리 대신 목록 형식으로 출력합니다. | |
| -r, --raw | 열 간격을 맞추지 않은 raw 형식으로 출력합니다. | |
| -i, --ascii | 트리 선을 ASCII 문자로 출력합니다. | |
| -s, --inverse | 의존 관계를 거꾸로 하여 파티션 아래에 디스크를 출력합니다. | |
| -S, --scsi | SCSI 장치 정보만 출력합니다. | |
| -t, --topology | 섹터 크기와 I/O 스케줄러 같은 토폴로지 정보를 출력합니다. | |
| -m, --perms | 장치의 소유자와 그룹, 권한을 출력합니다. | |
| -x, --sort | 지정한 열을 기준으로 정렬하여 목록 형식으로 출력합니다. | |
| -O, --output-all | 사용할 수 있는 모든 열을 출력합니다. |
🔲 lsblk 명령어 시뮬레이터
아래 시뮬레이터에서 지금까지의 명령을 직접 입력해 옵션마다 출력이 어떻게 달라지는지 확인할 수 있습니다.
🔢 FAQ & 추천 콘텐츠
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.