실용적인 예제로 살펴보는 Linux lsblk 명령어

LinuxBeginner
지금 연습하기

소개

이번 실습에서는 시스템에 연결된 모든 사용 가능한 블록 장치에 대한 정보를 표시해 주는 Linux lsblk 명령어를 알아봅니다. 블록 장치에는 하드 드라이브, SSD, USB 드라이브 및 기타 저장 매체가 포함됩니다. lsblk 명령어는 이 정보를 명확한 트리 구조 형식으로 제공하여, 서로 다른 스토리지 장치와 그 파티션 간의 관계를 쉽게 파악할 수 있도록 해줍니다.

Linux 시스템을 다루는 사람이라면 스토리지 장치를 이해하는 것이 필수적입니다. 사용 가능한 스토리지를 식별하거나, 파티션 크기를 확인하거나, 마운트 지점을 검증해야 할 때 lsblk 명령어는 이러한 정보를 빠르고 효율적으로 수집할 수 있는 방법을 제공합니다.

이번 실습을 마치면 다양한 옵션과 함께 lsblk 명령어를 사용하여 Linux 시스템의 스토리지 장치에 대한 상세한 정보를 얻을 수 있게 됩니다.

Linux 명령어 치트 시트

lsblk 명령어 기본 사용법

이번 단계에서는 lsblk 명령어를 사용하여 Linux 시스템에서 사용 가능한 블록 장치에 대한 정보를 표시해 봅니다. 블록 장치는 하드 드라이브, SSD, USB 드라이브와 같은 스토리지 장치를 말합니다.

터미널이 열려 있지 않다면 엽니다. 그런 다음 기본 lsblk 명령어를 실행합니다.

lsblk

다음과 유사한 출력을 볼 수 있습니다.

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0  55.5M  1 loop /snap/core18/2128
loop1    7:1    0  55.4M  1 loop /snap/core18/2284
loop2    7:2    0  43.6M  1 loop /snap/snapd/15534
loop3    7:3    0  61.9M  1 loop /snap/gtk-common-themes/1535
loop4    7:4    0  31.1M  1 loop /snap/snapd/16292
sda      8:0    0   50G  0 disk
├─sda1   8:1    0   49G  0 part /
└─sda2   8:2    0  976M  0 part [SWAP]

이 출력은 시스템의 모든 블록 장치를 보여주며, 다음과 같은 열(column)들로 구성되어 있습니다.

  • NAME: 장치 이름
  • MAJ:MIN: 주(major) 및 부(minor) 장치 번호
  • RM: 제거 가능 여부 플래그 (1은 제거 가능, 0은 제거 불가능)
  • SIZE: 장치 크기
  • RO: 읽기 전용 플래그 (1은 읽기 전용, 0은 읽기/쓰기 가능)
  • TYPE: 장치 유형 (disk, partition, loop 등)
  • MOUNTPOINT: 장치가 마운트된 위치 (해당되는 경우)

위의 예시에서 다음을 확인할 수 있습니다.

  • Snap 패키지에서 사용하는 여러 개의 loop 장치
  • 메인 스토리지 장치인 sda (50GB 디스크)
  • sda의 두 파티션: sda1 (최상위 루트 /에 마운트됨)과 sda2 (스왑 공간으로 사용됨)

출력 결과의 트리 구조 덕분에 어떤 파티션이 어떤 디스크에 속해 있는지 쉽게 시각적으로 파악할 수 있습니다. 예를 들어, sda1sda2 모두 sda 디스크의 파티션임을 알 수 있습니다.

lsblk 명령어의 기본 출력을 이해했으니, 다음 단계에서는 몇 가지 유용한 옵션들을 살펴보겠습니다.

lsblk로 추가 정보 표시하기

이번 단계에서는 블록 장치에 대한 더 자세한 정보를 표시하기 위해 다양한 옵션과 함께 lsblk 명령어를 사용하는 방법을 배웁니다.

-f 옵션을 사용하여 파일 시스템 정보 표시하기

-f 옵션은 파일 시스템 유형, 레이블(label), UUID, 마운트 지점을 포함한 파일 시스템 정보를 보여줍니다. 이는 장치를 UUID로 식별하거나 현재 사용 중인 파일 시스템 유형을 확인할 때 특히 유용합니다.

터미널에서 다음 명령어를 실행합니다.

lsblk -f

다음과 유사한 출력을 볼 수 있습니다.

NAME   FSTYPE   LABEL UUID                                 MOUNTPOINT
loop0  squashfs                                            /snap/core18/2128
loop1  squashfs                                            /snap/core18/2284
loop2  squashfs                                            /snap/snapd/15534
loop3  squashfs                                            /snap/gtk-common-themes/1535
loop4  squashfs                                            /snap/snapd/16292
sda
├─sda1 ext4           5fbb8eed-12a3-4b5c-9d67-9594ff4e2d1c /
└─sda2 swap           b409ae25-7589-44eb-a909-b56f1d42c5ab [SWAP]

출력에 다음과 같은 추가 열들이 포함됩니다.

  • FSTYPE: 파일 시스템 유형 (ext4, swap, squashfs 등)
  • LABEL: 할당된 파일 시스템 레이블
  • UUID: 파일 시스템의 고유 식별자(Universal Unique Identifier)

-m 옵션을 사용하여 장치 소유자 및 권한 정보 표시하기

-m 옵션은 블록 장치의 권한 및 소유자 정보를 표시합니다. 권한과 관련된 문제를 트러블슈팅할 때 유용합니다.

다음 명령어를 실행합니다.

lsblk -m

다음과 같은 출력이 표시됩니다.

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT OWNER GROUP MODE
loop0    7:0    0  55.5M  1 loop /snap/core18/2128 root  disk  brw-rw----
loop1    7:1    0  55.4M  1 loop /snap/core18/2284 root  disk  brw-rw----
loop2    7:2    0  43.6M  1 loop /snap/snapd/15534 root  disk  brw-rw----
loop3    7:3    0  61.9M  1 loop /snap/gtk-common-themes/1535 root  disk  brw-rw----
loop4    7:4    0  31.1M  1 loop /snap/snapd/16292 root  disk  brw-rw----
sda      8:0    0   50G  0 disk            root  disk  brw-rw----
├─sda1   8:1    0   49G  0 part /          root  disk  brw-rw----
└─sda2   8:2    0  976M  0 part [SWAP]     root  disk  brw-rw----

새로 추가된 열들은 다음을 보여줍니다.

  • OWNER: 장치를 소유한 사용자 (일반적으로 root)
  • GROUP: 장치를 소유한 그룹 (일반적으로 disk)
  • MODE: 장치의 권한 모드

-o 옵션을 사용하여 특정 출력 열 선택하기

-o 옵션을 사용하면 표시할 열을 직접 지정할 수 있습니다. 특정 정보만 필요할 때 더 깔끔하고 집중된 출력을 얻고 싶을 때 유용합니다.

이름(name), 크기(size), 마운트 지점(mountpoint) 열만 표시해 보겠습니다.

lsblk -o NAME,SIZE,MOUNTPOINT

출력이 훨씬 단순해집니다.

NAME    SIZE MOUNTPOINT
loop0  55.5M /snap/core18/2128
loop1  55.4M /snap/core18/2284
loop2  43.6M /snap/snapd/15534
loop3  61.9M /snap/gtk-common-themes/1535
loop4  31.1M /snap/snapd/16292
sda     50G
├─sda1   49G /
└─sda2  976M [SWAP]

이렇게 맞춤형으로 출력하면 필요한 정보에만 집중하기가 더 쉽습니다. 여러 옵션을 결합하여 요구사항에 가장 잘 맞는 형식으로 원하는 정확한 정보를 얻을 수 있습니다.

lsblk로 블록 장치 필터링하기

이번 단계에서는 lsblk 명령어의 출력을 제한하고 다양한 형식으로 정보를 표시하는 방법을 배웁니다.

최상위 장치만 표시하기

-d로 축약되는 --nodeps 옵션은 파티션과 같은 종속 장치를 생략합니다. 최상위 블록 장치에 대한 간결한 개요를 보고 싶을 때 유용합니다.

다음 명령어를 실행합니다.

lsblk --nodeps

출력에는 파티션 트리가 제외된 최상위 장치들이 표시됩니다. 장치 이름과 크기는 시스템마다 다를 수 있습니다.

NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda  253:0    0   40G  0 disk
vdb  253:16   0  100G  0 disk /etc/hosts

주 장치 번호(Major Number)로 장치 제외하기

-e로 축약되는 --exclude 옵션은 생략할 주 장치 번호들을 쉼표로 구분하여 입력받습니다. 예를 들어, 루프(loop) 장치는 주 번호 7을 사용하므로 다음 명령어는 이를 제외합니다.

lsblk --exclude 7

이 필터는 최상위 장치에 적용됩니다. 하위의 종속 파티션은 여전히 트리에 나타날 수 있습니다.

장치 경로 표시하기

--paths 옵션은 장치 이름만 표시하는 대신 전체 장치 경로를 표시합니다. 스크립트나 명령어에서 장치를 참조해야 할 때 유용합니다.

다음 명령어를 실행합니다.

lsblk --paths

출력에 전체 장치 경로가 포함됩니다.

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
/dev/loop0    7:0    0  55.5M  1 loop /snap/core18/2128
/dev/loop1    7:1    0  55.4M  1 loop /snap/core18/2284
/dev/loop2    7:2    0  43.6M  1 loop /snap/snapd/15534
/dev/loop3    7:3    0  61.9M  1 loop /snap/gtk-common-themes/1535
/dev/loop4    7:4    0  31.1M  1 loop /snap/snapd/16292
/dev/sda      8:0    0   50G  0 disk
├─/dev/sda1   8:1    0   49G  0 part /
└─/dev/sda2   8:2    0  976M  0 part [SWAP]

JSON 형식으로 출력하기

--json 옵션은 정보를 JSON 형식으로 출력합니다. 프로그램적으로 처리하거나 다른 도구와 연동할 때 유용합니다.

다음 명령어를 실행합니다.

lsblk --json

출력이 JSON 형식으로 나타납니다.

{
  "blockdevices": [
    {
      "name": "loop0",
      "maj:min": "7:0",
      "rm": false,
      "size": "55.5M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/core18/2128"
    },
    {
      "name": "loop1",
      "maj:min": "7:1",
      "rm": false,
      "size": "55.4M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/core18/2284"
    },
    {
      "name": "loop2",
      "maj:min": "7:2",
      "rm": false,
      "size": "43.6M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/snapd/15534"
    },
    {
      "name": "loop3",
      "maj:min": "7:3",
      "rm": false,
      "size": "61.9M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/gtk-common-themes/1535"
    },
    {
      "name": "loop4",
      "maj:min": "7:4",
      "rm": false,
      "size": "31.1M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/snapd/16292"
    },
    {
      "name": "sda",
      "maj:min": "8:0",
      "rm": false,
      "size": "50G",
      "ro": false,
      "type": "disk",
      "children": [
        {
          "name": "sda1",
          "maj:min": "8:1",
          "rm": false,
          "size": "49G",
          "ro": false,
          "type": "part",
          "mountpoint": "/"
        },
        {
          "name": "sda2",
          "maj:min": "8:2",
          "rm": false,
          "size": "976M",
          "ro": false,
          "type": "part",
          "mountpoint": "[SWAP]"
        }
      ]
    }
  ]
}

옵션을 조합하여 정밀하게 제어하기

여러 옵션을 조합하여 정확히 원하는 정보를 얻을 수 있습니다. 예를 들어, JSON 형식으로 전체 경로를 표시하면서 종속 장치와 루프 장치를 제외하려면 다음과 같이 입력합니다.

lsblk --nodeps --exclude 7 --paths --json

출력 결과는 전체 경로가 포함된, 필터링된 최상위 장치들의 JSON 표현이 됩니다.

{
  "blockdevices": [
    {
      "name": "/dev/vda",
      "maj:min": "253:0",
      "rm": false,
      "size": "40G",
      "ro": false,
      "type": "disk"
    }
  ]
}

이러한 필터링 옵션 덕분에 lsblk 명령어는 매우 유연하며 시스템의 블록 장치에 대한 정확한 정보를 얻을 수 있도록 도와줍니다.

실무 시나리오를 위한 lsblk 고급 활용법

이번 단계에서는 시스템 관리 및 트러블슈팅 작업에서 lsblk 명령어가 유용하게 쓰이는 실무 시나리오를 살펴봅니다.

디스크 사용량 및 여유 공간 확인하기

디스크 사용량과 여유 공간을 확인하려면 lsblk-b 옵션(크기를 바이트 단위로 표시)을 결합하고 특정 열을 선택하면 됩니다.

lsblk -b -o NAME,SIZE,FSAVAIL,FSUSE%,MOUNTPOINT

출력 결과에 디스크 사용량 정보가 표시됩니다.

NAME     SIZE FSAVAIL FSUSE% MOUNTPOINT
loop0  58195968        0     - /snap/core18/2128
loop1  58130432        0     - /snap/core18/2284
loop2  45719552        0     - /snap/snapd/15534
loop3  64897024        0     - /snap/gtk-common-themes/1535
loop4  32604160        0     - /snap/snapd/16292
sda   53687091200       -     -
├─sda1 52613349376 39128932352  26% /
└─sda2 1023410176        0     - [SWAP]

각 열의 의미는 다음과 같습니다.

  • SIZE: 바이트 단위의 총 크기
  • FSAVAIL: 파일 시스템의 사용 가능한 여유 공간
  • FSUSE%: 파일 시스템 사용률(백분율)
  • MOUNTPOINT: 장치가 마운트된 위치

USB 드라이브 식별하기

USB 드라이브를 연결했을 때 lsblk를 사용하면 제거 가능한 장치(removable device)를 찾아 빠르게 식별할 수 있습니다.

lsblk -o NAME,SIZE,TYPE,RM,MOUNTPOINT

출력에서 RM (제거 가능 여부) 값이 1인 장치를 찾습니다.

NAME   SIZE TYPE RM MOUNTPOINT
loop0  55.5M loop  0 /snap/core18/2128
loop1  55.4M loop  0 /snap/core18/2284
loop2  43.6M loop  0 /snap/snapd/15534
loop3  61.9M loop  0 /snap/gtk-common-themes/1535
loop4  31.1M loop  0 /snap/snapd/16292
sda     50G disk  0
├─sda1   49G part  0 /
└─sda2  976M part  0 [SWAP]

만약 USB 드라이브가 연결되어 있다면, 일반적으로 RM 값이 1인 추가 디스크(예: sdb)로 나타납니다.

장치 시리얼 번호 찾기

하드웨어 인벤토리 조사나 트러블슈팅을 위해 장치 시리얼 번호를 찾아야 할 때가 있습니다. lsblk 명령어로 이 정보를 표시할 수 있습니다.

lsblk -o NAME,SIZE,TYPE,SERIAL

출력에 해당 정보를 지원하는 장치의 시리얼 번호가 포함됩니다.

NAME   SIZE TYPE SERIAL
loop0  55.5M loop
loop1  55.4M loop
loop2  43.6M loop
loop3  61.9M loop
loop4  31.1M loop
sda     50G disk ABCD1234
├─sda1   49G part
└─sda2  976M part

모든 장치가 시리얼 번호를 보고하는 것은 아니며, 루프 장치와 같은 가상 장치는 일반적으로 시리얼 번호가 없습니다.

디스크 성능 속성 분석하기

디스크 성능 속성을 보려면 --topology 또는 -t 옵션을 사용하면 됩니다.

lsblk --topology

출력에는 정렬(alignment) 및 최적 I/O 크기 같은 토폴로지 정보가 포함됩니다.

NAME   ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED     RQ-SIZE  RA WSAME
loop0          0    512      0     512     512    1 mq-deadline     256 128    0B
loop1          0    512      0     512     512    1 mq-deadline     256 128    0B
loop2          0    512      0     512     512    1 mq-deadline     256 128    0B
loop3          0    512      0     512     512    1 mq-deadline     256 128    0B
loop4          0    512      0     512     512    1 mq-deadline     256 128    0B
sda            0    512      0     512     512    1 mq-deadline     256 128    0B
├─sda1         0    512      0     512     512    1 mq-deadline     256 128    0B
└─sda2         0    512      0     512     512    1 mq-deadline     256 128    0B

이 정보는 성능 튜닝 및 I/O 관련 문제 트러블슈팅에 유용할 수 있습니다.

이러한 실용적인 예제들은 일상적인 시스템 관리 작업에서 lsblk 명령어가 얼마나 다재다능한지 보여줍니다. 이러한 기법들을 숙지하면 Linux 시스템의 스토리지 장치에 대한 중요한 정보를 신속하게 수집할 수 있습니다.

요약

이번 실습에서는 시스템의 블록 장치에 대한 정보를 나열하고 표시하는 강력한 도구인 Linux lsblk 명령어를 살펴보았습니다. 이 명령어와 관련된 몇 가지 중요한 측면을 다루었습니다.

  • 모든 블록 장치를 트리 구조로 표시하기 위한 lsblk 기본 사용법
  • 파일 시스템 세부 정보, 소유자/권한, 사용자 지정 열 선택을 포함한 추가 정보 표시 방법
  • 특정 장치 유형이나 출력 형식에 집중할 수 있는 필터링 기법
  • 시스템 관리 작업을 위한 고급 활용 시나리오

lsblk 명령어는 스토리지 장치를 관리해야 하는 Linux 시스템 관리자와 사용자에게 필수적인 도구입니다. 유연한 옵션 덕분에 시스템의 디스크, 파티션 및 기타 블록 장치에 대해 필요한 정확한 정보를 빠르게 얻을 수 있습니다.

lsblk 명령어를 마스터하면 다음과 같은 작업을 더 효과적으로 수행할 수 있습니다.

  • 스토리지 장치 식별 및 관리
  • 디스크 사용량 및 여유 공간 모니터링
  • 스토리지 관련 문제 트러블슈팅
  • 시스템의 스토리지 구성 문서화

이러한 기술들은 스토리지 관리와 관련된 보다 고급 수준의 Linux 시스템 관리 작업을 수행하는 데 중요한 기반이 됩니다.

Linux 명령어 치트 시트