LFCS 자격 준비 (4) Storage 생성·수정 실전 문제 + 연습 터미널

LFCS 시리즈 네 번째 편으로 Storage (20%) 도메인의 생성·수정 작업을 다룬다. 1편이 lsblk·df·pvs 같은 조회 위주였다면, 이번 편은 포맷·마운트·LVM 변경 같은 실제 작업이 중심이다. 정리 후 인터랙티브 연습 터미널에서 명령을 직접 입력해 본다.

/dev/vdb 같은 여분 디스크가 있다고 가정한다. 하지만 일반 리눅스에는 이런 디스크가 없으므로, 이미지 파일을 블록 장치처럼 연결하는 loop device로 실습 환경을 만든다. fallocate로 빈 이미지를 만들고 losetup으로 /dev/loopN에 붙인다. 

bash
# 1GB짜리 이미지 파일 생성 fallocate -l 1G ~/disk.img # 블록 장치로 연결 → /dev/loop0 같은 이름이 출력됨 sudo losetup -fP --show ~/disk.img sudo mkfs -t ext4 /dev/loop0 sudo mkdir -p /mnt/backup-black sudo mount /dev/loop0 /mnt/backup-black sudo touch /mnt/backup-black/completed df -h /mnt/backup-black lsblk -f
  • fallocate -l 1G: 실제 1GB를 즉시 할당해 이미지 파일을 만든다.
  • losetup -f: 비어 있는 첫 loop 장치를 자동 선택한다. -P는 파티션 인식, --show는 할당된 장치명을 출력한다.

이렇게 만든 /dev/loop0는 아래 문제들의 /dev/vdb 자리에 그대로 대입하면 된다.

실습을 끝낸 뒤에는 마운트 해제 → loop 연결 해제 → 이미지 삭제 순으로 정리한다.

bash
# 마운트 해제 sudo umount /mnt/backup-black # loop 장치 연결 해제 sudo losetup -d /dev/loop0 # 이미지 파일 삭제 rm ~/disk.img

새 디스크는 mkfs로 파일시스템을 만든 뒤 mount로 붙인다. 디스크 목록은 fdisk -l·lsblk -f, 사용량은 df -h로 확인한다.

  • 포맷: mkfs -t ext4 /dev/vdb
  • 마운트: mount /dev/vdb /mnt/backup-black
  • 파일 생성: touch /mnt/backup-black/completed

언마운트 시 target is busy가 나오면 해당 경로를 잡고 있는 프로세스가 있다. lsof로 범인을 찾아 종료한 뒤 umount한다.

  • 사용 프로세스 확인: lsof | grep /mnt/app-4e9d7e1e
  • 언마운트: umount /mnt/app-4e9d7e1e

앞에서 만든 loop device(/mnt/backup-black)로 이 상황을 직접 만들 수 있다. 먼저 마운트 지점을 붙잡고 있는 프로세스를 하나 띄운다.

bash
# completed 파일을 계속 열어두는 프로세스를 백그라운드로 실행 → 경로가 busy 상태가 됨
tail -f /mnt/backup-black/completed &

이 상태에서 언마운트를 시도하면 target is busy로 실패한다.

bash
sudo umount /mnt/backup-black
# umount: /mnt/backup-black: target is busy.

경로를 잡은 프로세스를 찾아 종료한 뒤 다시 언마운트한다.

bash
# 마운트 지점을 사용 중인 프로세스 확인 (PID 출력)
sudo fuser -vm /mnt/backup-black

# 해당 프로세스를 종료하고 언마운트
sudo fuser -km /mnt/backup-black
sudo umount /mnt/backup-black

lsof +f -- /mnt/backup-black로도 범인을 찾을 수 있고, fuser -km은 마운트를 쓰는 프로세스를 한 번에 종료한다.

LVM은 PV(물리 볼륨) → VG(볼륨 그룹) → LV(논리 볼륨) 구조이다. VG에서 디스크를 빼려면 vgreduce, 새 VG는 vgcreate, LV는 lvcreate로 만든다. 크기 변경은 lvresize(또는 lvextend)를 쓴다.

  • VG에서 PV 제거: vgreduce vol1 /dev/vdh
  • VG 생성: vgcreate vol2 /dev/vdh
  • LV 생성: lvcreate --size 50M --name p1 vol2
  • LV 포맷: mkfs -t ext4 /dev/vol2/p1
bash
$ vgreduce vol1 /dev/vdh $ vgcreate vol2 /dev/vdh $ lvcreate --size 50M --name p1 vol2 $ mkfs -t ext4 /dev/vol2/p1

문제를 읽고 알맞은 명령을 입력하면, 정답일 때 정해진 출력과 함께 다음 문제로 넘어간다. help 사용법, hint 힌트, skip 건너뛰기, clear 화면 지우기를 쓸 수 있다.

lfcs@exam: ~ — Storage 작업
lfcs@exam:~$

Storage 작업은 포맷·마운트·언마운트와 LVM(PV·VG·LV) 관리가 핵심이다. 조회 명령(1편)과 작업 명령(이번 편)을 함께 익히면 시험에서 흔들리지 않는다. 다음 편은 Essential Commands 도메인을 다룬다.