Skip to Content
자격증리눅스마스터 2급 1차17. 장치 설정과 주변장치

이번 문서의 목표: 이 파일을 다 읽으면 리눅스가 하드웨어를 파일로 다루는 방식과 장치명(sda, sdb1 등) 규칙을 설명할 수 있고, 프린터·사운드·스캐너 관련 표준을 구분할 수 있으며, USB 저장장치가 인식되어 마운트되기까지의 과정을 순서대로 설명할 수 있다.

리눅스는 왜 하드웨어를 파일로 다루는가

윈도우에서는 프린터를 “장치 및 프린터” 창에서, 사운드 카드를 “설정” 앱에서 각각 다른 방식으로 관리한다. 반면 리눅스는 “모든 것은 파일이다(everything is a file)“라는 유닉스 철학을 그대로 이어받아서, 하드디스크든 프린터든 마우스든 키보드든 모두 /dev 디렉터리 아래에 파일 형태로 존재하게 만들어 둔다. 이렇게 하면 하드웨어마다 전혀 다른 도구를 배우지 않아도, 파일을 다루던 익숙한 명령(cat, cp 등)의 논리를 확장해서 장치에 접근할 수 있다는 이점이 있다.

쉽게 말하면: 리눅스는 하드디스크·프린터·마우스 같은 실제 하드웨어 하나하나에 /dev 아래의 파일 이름을 하나씩 붙여서, 파일을 다루듯 장치를 다룰 수 있게 한다.

09편에서 다룬 파일시스템 구조를 다시 떠올려 보면, /dev는 FHS(Filesystem Hierarchy Standard, 파일시스템 계층 표준)가 정한 특수한 디렉터리로, 그 안의 파일들은 실제로 디스크에 저장된 데이터가 아니라 커널이 관리하는 하드웨어 장치를 가리키는 장치 파일(device file)이다. /dev/sda라는 파일을 읽는다는 것은 곧 그 이름이 가리키는 실제 저장장치에서 데이터를 읽어 오라고 커널에 요청하는 것과 같다.

장치 파일의 두 종류 — 블록 장치와 문자 장치

장치 파일은 데이터를 주고받는 방식에 따라 크게 두 종류로 나뉜다.

쉽게 말하면: 블록 장치는 데이터를 덩어리(블록) 단위로 아무 위치나 골라 읽고 쓸 수 있는 장치, 문자 장치는 데이터를 한 글자(문자)씩 순서대로만 주고받는 장치다.

  • 블록 장치(block device) — 하드디스크, SSD, USB 메모리처럼 데이터를 일정한 크기의 덩어리(블록) 단위로 저장하고, 필요한 위치로 곧바로 건너뛰어(임의 접근, random access) 읽고 쓸 수 있는 장치다. ls -l /dev/sda를 실행해서 나오는 정보의 맨 앞 글자가 b이면 블록 장치라는 뜻이다.
  • 문자 장치(character device) — 키보드, 마우스, 프린터, 시리얼 포트처럼 데이터가 한 글자(바이트)씩 순서대로만 흘러가는 장치다. 중간 위치로 건너뛸 수 없고 처음부터 끝까지 순서대로 주고받는다. ls -l 결과의 맨 앞 글자가 c이면 문자 장치다.

이 구분을 알아 두면 11편에서 배운 ls -l 출력의 첫 글자(파일 종류를 나타내는 자리)에 d(디렉터리), -(일반 파일), l(심볼릭 링크) 외에 bc가 왜 등장하는지 이해할 수 있다.

저장장치 이름 규칙 — sda, sdb, sda1의 의미

시험에서 가장 자주 나오는 것이 바로 이 저장장치 이름을 해석하는 문제다. 예를 들어 /dev/sdb1이라는 이름 하나에는 세 가지 정보가 압축되어 있다.

쉽게 말하면: sd는 장치의 종류, 뒤의 알파벳(a, b, c…)은 몇 번째로 인식된 장치인지, 그 뒤의 숫자는 그 장치 안의 몇 번째 파티션인지를 나타낸다.

  1. sd 접두어 — SCSI(Small Computer System Interface) 방식으로 다뤄지는 디스크라는 뜻이다. 오늘날 리눅스 커널은 SATA(내장 하드디스크·SSD가 흔히 쓰는 연결 방식)와 USB로 연결된 저장장치까지도 대부분 이 SCSI 방식의 규약으로 통합해서 인식하기 때문에, 실제 물리적으로는 SATA 하드디스크여도 장치명은 sd로 시작한다.
  2. 알파벳 한 글자(a, b, c, …) — 시스템이 그 장치를 몇 번째로 인식했는지를 나타낸다. 커널이 부팅 과정에서 저장장치를 찾은 순서대로 a, b, c, …를 붙인다. 즉 sda는 가장 먼저 인식된 디스크 전체를, sdb는 두 번째로 인식된(별도의 물리적인) 디스크 전체를 가리킨다. sdasdb는 서로 다른 하드디스크나 SSD 한 개씩을 의미하며, 같은 디스크의 다른 부분이 아니다.
  3. 끝의 숫자(1, 2, 3, …) — 그 디스크 안에 나뉜 파티션 번호를 나타낸다. sda1sda라는 디스크의 첫 번째 파티션, sda2는 같은 디스크의 두 번째 파티션이다. 숫자가 없는 sda, sdb 자체는 파티션으로 나뉘기 전의 디스크 전체를 가리킨다.

작은 예시로 확인해 보자. 컴퓨터에 하드디스크 한 개와 USB 메모리 한 개가 연결되어 있고, 하드디스크가 먼저 인식되었다고 하자. 하드디스크에 파티션이 두 개(루트용, 스왑용) 있다면 다음과 같은 이름이 생긴다.

장치 파일의미
/dev/sda첫 번째로 인식된 디스크 전체(하드디스크)
/dev/sda1sda 디스크의 첫 번째 파티션(예: 루트 파일시스템)
/dev/sda2sda 디스크의 두 번째 파티션(예: 스왑 영역)
/dev/sdb두 번째로 인식된 디스크 전체(USB 메모리)
/dev/sdb1sdb 디스크의 첫 번째 파티션

자주 틀리는 점: sdasdb를 “같은 디스크 안의 서로 다른 파티션”으로 잘못 이해하는 경우가 많다. 알파벳이 다르면 물리적으로 서로 다른 디스크이고, 숫자가 다르면 같은 디스크 안의 서로 다른 파티션이라는 두 층위를 헷갈리지 않아야 한다. 또한 09·10편에서 다룬 lsblk 명령의 출력에서 sda 아래에 sda1, sda2가 트리 형태로 들여쓰기 되어 나오는 것도 바로 이 “디스크 하나에 파티션 여러 개”라는 포함 관계를 화면으로 보여 주는 것이다.

과거 IDE(Integrated Drive Electronics) 방식으로 연결된 디스크는 hda, hdb처럼 hd 접두어를 썼지만, 최신 커널에서는 이 방식의 디스크도 대부분 sd 계열로 통합되어 인식된다. NVMe(엔비엠이, PCI Express 방식으로 직접 연결하는 초고속 SSD) 장치는 이름 규칙이 달라 /dev/nvme0n1처럼 표기하고, 파티션은 /dev/nvme0n1p1처럼 p 뒤에 파티션 번호를 붙인다는 점도 함께 알아 두면 실제 서버 환경에서 헷갈리지 않는다.

저장장치 인식과 확인 명령

USB 메모리 같은 저장장치를 컴퓨터에 꽂으면 커널이 이를 감지하고 /dev 아래에 새 장치 파일을 만든다. 이 과정과 결과를 확인하는 대표 명령은 다음과 같다.

명령기능
lsblk블록 장치를 디스크-파티션 트리 구조로 나열(NAME, SIZE, TYPE, MOUNTPOINT 등 표시)
blkid각 장치의 UUID(장치를 구분하는 고유 식별자)·LABEL·파일시스템 TYPE을 조회
fdisk -l파티션 테이블 정보를 상세히 표시
dmesg | tail커널이 방금 인식한 장치 관련 로그(메시지)를 확인

USB를 꽂았는데 장치가 잡혔는지 확실하지 않을 때는 dmesg | tail로 방금 커널이 남긴 로그를 확인하거나, lsblk를 실행해 새로운 장치 이름(예: 기존에 sda만 있던 시스템에 sdb가 새로 나타났는지)이 추가되었는지 보는 것이 가장 빠른 확인 방법이다.

USB 저장장치를 마운트하는 과정

10편에서 배운 mount 명령의 개념을 저장장치 인식 흐름 전체에 놓고 다시 정리하면 다음과 같은 순서가 된다.

USB 메모리를 꽂는다

커널이 하드웨어 신호를 감지하고 새 블록 장치를 인식한다.

장치 파일이 자동으로 생성된다

인식된 순서에 따라 /dev/sdb처럼 새 이름이 붙고, 그 안에 파티션이 있다면 /dev/sdb1도 함께 생긴다.

장치 이름과 파일시스템을 확인한다

lsblkblkid로 방금 추가된 장치의 이름과 파일시스템 종류(예: FAT32, exFAT, ext4)를 확인한다.

마운트 지점(디렉터리)을 정하거나 만든다

예를 들어 mkdir /mnt/usb처럼 파일시스템을 연결할 빈 디렉터리를 준비한다.

mount 명령으로 연결한다

mount -t vfat /dev/sdb1 /mnt/usb처럼 파일시스템 종류(-t)와 장치, 마운트 지점을 순서대로 지정해 실행한다.

사용이 끝나면 umount로 분리한다

umount /mnt/usb를 실행해 안전하게 연결을 해제한 뒤에 물리적으로 뽑아야 데이터 손상을 막을 수 있다.

자주 틀리는 점: 그래픽 데스크톱 환경에서는 USB를 꽂으면 자동으로 마운트되어 바탕화면이나 파일 관리자에 아이콘이 뜨는 경우가 많아, “리눅스는 USB를 꽂으면 항상 자동으로 인식되고 별도 마운트 절차가 필요 없다”고 오해하기 쉽다. 하지만 서버처럼 그래픽 환경이 없는 콘솔 시스템에서는 자동 마운트 기능이 없으므로 위 절차를 수동으로 직접 수행해야 한다는 점이 시험에서 개념 문제로 나올 수 있다.

프린터 설정의 개념

리눅스의 인쇄 시스템은 역사적으로 BSD 계열과 System V 계열이 서로 다른 명령 체계를 썼고, 오늘날에는 이 둘을 통합해 관리하는 CUPS(Common Unix Printing System, 커먼 유닉스 프린팅 시스템)가 사실상 표준으로 쓰인다. CUPS는 웹 브라우저로 접속해 설정할 수 있는 관리 화면도 제공하며, 내부적으로는 아래 두 계열의 명령을 모두 흉내 내어 지원한다.

계열인쇄 요청대기열 확인작업 취소상태 조회
BSD 계열lprlpqlprm-
System V 계열lp-cancellpstat

자주 틀리는 점: lp(System V 계열의 인쇄 요청 명령)를 BSD 계열 명령으로 잘못 분류하는 문제가 나온다. BSD 계열은 lpr·lpq·lprm처럼 이름이 lp로 시작하고 뒤에 알파벳이 더 붙는 형태이고, **System V 계열은 lp·lpstat·cancel**로 짝을 이룬다는 점으로 구분하면 헷갈리지 않는다. 다만 lp라는 단어 자체가 두 계열 모두에서 “프린터(line printer)“를 뜻하는 접두어로 쓰이기 때문에 이름만으로 계열을 단정하지 말고 표로 짝을 지어 외워야 한다.

사운드와 스캐너 설정의 개념

프린터에 CUPS가 있다면, 사운드와 스캐너에도 각각 하드웨어 차이를 감추고 공통된 방식으로 접근하게 해 주는 표준이 있다.

장치표준·시스템설명
사운드 카드ALSA(Advanced Linux Sound Architecture)리눅스 커널 안에 포함되어 사운드 카드 드라이버와 오디오 재생·녹음 기능을 제공하는 컴포넌트. 예전에는 OSS(Open Sound System)라는 표준을 썼으나 ALSA로 대체되었다.
스캐너SANE(Scanner Access Now Easy)스캐너 제조사마다 다른 통신 방식을 감추고, 공통된 프로그래밍 인터페이스(API)로 스캔 기능에 접근하게 해 주는 표준.
프린터CUPS위에서 다룬 인쇄 시스템 표준.

이 세 가지는 “장치 종류 하나당 표준 하나”로 짝지어 외우는 것이 가장 효율적이다. 인쇄는 CUPS(또는 구형 LPRng), 사운드는 ALSA, 스캐너는 SANE이라는 이름 자체가 시험에서 그대로 선택지로 등장한다.

자주 틀리는 점: 참고 자료의 기출에서도 “사운드카드 사용과 관련된 프로그램”을 묻는 문제에 CUPS(인쇄), SANE(스캐너), LPRng(인쇄 스풀링)를 오답으로 배치하고 ALSA를 정답으로 요구한 사례가 있다. 네 이름이 전부 알파벳 약어로 비슷하게 생겼기 때문에, 이름의 뜻(Sound, Scanner, Printing)을 풀어서 기억해 두면 혼동을 줄일 수 있다.

직접 해보기(선택)

이 편은 읽는 것만으로 시험 대비가 됩니다. 아래는 실제로 해 보면 이해가 깊어지는 선택 과정이고, 컨테이너로는 안 되므로 00편의 가상 머신이 필요합니다.

장치 파일이 왜 “그냥 파일”이 아니라 하드웨어를 가리키는 특수한 파일인지, sda·sdb1 같은 이름이 실제로 어떻게 붙는지 확인해 봅니다.

ls -l /dev/sd* lsblk

무엇을 보아야 하나: ls -l 출력 맨 앞 글자가 b(블록 장치)로 시작하는지 확인합니다. 일반 파일이라면 -, 디렉터리라면 d가 나올 자리입니다. lsblk에서는 sda 아래 sda1, sda2가 들여쓰기로 나오는지 봅니다.

왜 이걸 해보나: ls -l의 첫 글자를 디렉터리(d)·일반 파일(-)만 외우고 b(블록 장치)를 놓치는 경우가 많습니다. 직접 보면 장치 파일도 파일 종류 표시 체계 안에 있다는 것이 자연스럽게 확인됩니다.

가능하다면 USB 메모리를 가상 머신에 연결해 커널이 인식하는 순간을 지켜봅니다.

dmesg | tail lsblk

무엇을 보아야 하나: dmesg에 방금 꽂은 장치를 인식했다는 로그 줄이 새로 추가되었는지, lsblk에 없던 장치 이름(예: sdc)이 새로 나타났는지 확인합니다.

왜 이걸 해보나: “리눅스는 USB를 꽂으면 항상 자동으로 인식되어 별도 절차가 필요 없다”는 오해와 달리, 콘솔 환경에서는 인식 여부를 dmesg·lsblk로 직접 확인해야 한다는 것을 체감하는 실습입니다.

핵심 정리

  • 리눅스는 하드웨어를 /dev 아래의 장치 파일로 다루며, 데이터 접근 방식에 따라 블록 장치(임의 접근)와 문자 장치(순차 접근)로 나뉜다.
  • 저장장치 이름은 sd + 알파벳(몇 번째 디스크인지) + 숫자(그 디스크의 몇 번째 파티션인지)로 구성된다. sdasdb는 서로 다른 물리 디스크, sda1sda2는 같은 디스크의 다른 파티션이다.
  • USB 등 저장장치는 인식(장치 파일 생성) → 확인(lsblk, blkid) → 마운트 지점 준비 → mount → 사용 후 umount 순서로 다룬다.
  • 프린터는 BSD 계열(lpr/lpq/lprm)과 System V 계열(lp/lpstat/cancel)로 나뉘며 오늘날은 CUPS가 이를 통합 관리한다. 사운드는 ALSA, 스캐너는 SANE이 표준이다.

마무리 복습

문제 14지선다
장치 파일 슬래시dev슬래시sdb1에서 알파벳 b와 숫자 1이 각각 의미하는 것으로 알맞은 것은?
문제 24지선다
슬래시dev슬래시sda와 슬래시dev슬래시sdb의 관계를 가장 정확하게 설명한 것은?
문제 34지선다
USB 저장장치를 서버(콘솔 환경)에 연결한 뒤 사용하기까지의 순서로 가장 알맞은 것은?
문제 44지선다
다음 중 BSD 계열의 인쇄 관련 명령으로 알맞지 않은 것은?
문제 54지선다
다음 중 사운드카드 사용과 관련된 프로그램(표준)으로 알맞은 것은?
문제 64지선다
현재 시스템에 새로 연결된 블록 장치를 디스크-파티션 트리 구조로 확인하는 명령으로 가장 알맞은 것은?
문제 74지선다
장치 파일의 종류 중 데이터를 한 글자씩 순서대로만 주고받으며 중간 위치로 건너뛸 수 없는 장치로 알맞은 것은?
문제 84지선다
ext4 파일 시스템이 들어 있는 파티션 슬래시dev슬래시sdb1의 UUID와 파일시스템 종류를 확인하려고 한다. 가장 적절한 명령은?

참고 자료

Last updated on