LFCS — 리눅스 재단 시스템 관리자 · 스토리지를 손으로 — LVM·fstab·swap·NFS·autofs · 실습
LVM 부터 autofs 까지 — 스토리지를 손으로 만든다
목표
루프 장치 두 개 위에 LVM 을 세우고, ext4 를 UUID 로 fstab 에 등록하고, 온라인으로 늘리고, 스왑 파일을 켜고, 같은 VM 안에서 NFS 서버와 autofs 클라이언트를 구성한 뒤 iostat·vmstat 로 지표를 남깁니다. 전부 진짜로 붙습니다.
왜 중요한가
LFCS 의 Storage 도메인(20%)은 파드에서는 한 줄도 할 수 없었습니다 — pvcreate 도 mount 도 capability 가 없어 막힙니다. 이 실습은 우분투 24.04 VM 에서 root 로 돕니다. 대신 빈 디스크는 없습니다. 스크래치 디스크는 플랫폼이 이미 ext4 로 포맷해 붙였으므로, 파일을 블록 장치처럼 보이게 하는 루프 장치(losetup)로 시작합니다. 실무에서 디스크 없이 LVM 이나 RAID 를 시험할 때 쓰는 바로 그 방법입니다.
세 가지가 이 실습의 뼈대입니다. 첫째, LVM 은 PV → VG → LV 세 층이고 늘리는 일은 두 층에서 따로 일어납니다(lvextend 뒤에 resize2fs). 둘째, fstab 에는 장치 이름이 아니라 UUID 를 적습니다 — 장치 순서는 부팅마다 바뀔 수 있습니다. 셋째, 설정 파일을 고치는 것과 데몬이 그것을 아는 것은 다릅니다(exportfs -ra, systemctl restart autofs).
세션은 60분에 시작해 최대 180분까지 연장할 수 있고, VM 은 세션이 끝나면 사라집니다.
단계
1. /var/lib/lfcs/disk1.img 와 /var/lib/lfcs/disk2.img 를 각각 1GiB 크기로 만들고(희소 파일이면 됩니다) 둘 다 루프 장치로 붙이세요. 붙인 뒤 losetup -a 출력을 /root/lfcs/storage/loop.txt 로 저장하세요.
2. 두 루프 장치를 LVM 물리 볼륨(PV)으로 초기화하고, 둘을 합쳐 볼륨 그룹 vg_lfcs 를 만드세요.
3. vg_lfcs 에서 600MiB 크기의 논리 볼륨 lv_data 를 만들고 ext4 로 포맷하세요.
4. lv_data 를 /srv/data 에 마운트하고, 재부팅 뒤에도 붙도록 /etc/fstab 에 UUID= 로 시작하는 줄(타입 ext4, 옵션 defaults, dump 0, pass 2)을 추가하세요. findmnt --verify 로 fstab 에 오류가 없어야 합니다.
5. lv_data 를 300MiB 더 늘리고(총 900MiB 이상), 마운트를 풀지 않은 채 ext4 파일시스템도 같이 커지게 하세요. df 로 본 /srv/data 의 크기가 커져야 합니다.
6. /var/swap/lfcs.swap 을 256MiB 스왑 파일로 만들어 켜세요. 권한은 600 이어야 하고, /etc/fstab 에 재부팅 뒤에도 켜지도록 줄(타입 swap)을 추가하세요.
7. /srv/share 를 NFS 로 내보내되 127.0.0.1 에만 허용하세요(옵션 rw,sync,no_subtree_check). /srv/share/hello.txt 에 아무 내용이나 적고, 그 공유를 /mnt/share 에 NFS 로 마운트해 같은 파일이 보이게 하세요.
8. 같은 공유를 autofs 가 접근하는 순간 붙이게 하세요. 마스터 맵 /etc/auto.master.d/lfcs.autofs 에 /nfs 를 맵 /etc/auto.lfcs 로 연결하고, 그 맵에 키 share 가 127.0.0.1:/srv/share 를 nfs4 로 가리키게 적으세요. autofs 를 재시작한 뒤 ls /nfs/share 가 hello.txt 를 보여야 합니다. (서버가 자기 자신이면 autofs 는 NFS 대신 bind 로 붙입니다 — findmnt /nfs/share 의 SOURCE 가 [/srv/share] 로 보여도 정상입니다.)
9. iostat -dxk 1 3 출력을 /root/lfcs/storage/iostat.txt 에, vmstat 1 3 출력을 /root/lfcs/storage/vmstat.txt 에 저장하세요. 그리고 /root/lfcs/storage/summary.txt 를 네 줄로 만드세요: VG=vg_lfcs, PVS=<vg_lfcs 의 PV 개수>, LV_MB=<lv_data 의 크기(MiB, 정수)>, SWAP=<켜져 있는 스왑 파일 경로>.
참고
- 루프 장치:
truncate -s 1G 파일→losetup -f --show 파일. 어느 장치에 붙었는지는losetup -j 파일. - LVM:
pvcreate,vgcreate vg_lfcs 장치1 장치2,lvcreate -L 600M -n lv_data vg_lfcs,lvextend -L +300M -r. - UUID:
blkid -o value -s UUID /dev/vg_lfcs/lv_data. fstab 을 고친 뒤에는systemctl daemon-reload와mount -a. - NFS:
/etc/exports→exportfs -ra→exportfs -v. autofs: 맵 파일 →systemctl restart autofs. - 흔한 실수 1:
lvextend만 하고resize2fs를 빼서df가 그대로인 경우. - 흔한 실수 2:
/etc/exports에서 클라이언트와 여는 괄호 사이에 공백을 넣어 전 세계에 열리는 경우. - 흔한 실수 3: fstab 에
/dev/loopN을 적는 경우 — 번호는 부팅마다 달라질 수 있습니다.
단계 9개
- 루프 장치 두 개 만들기
- PV 두 개로 VG 만들기
- LV 를 자르고 ext4 로 포맷
- 마운트하고 fstab 에 UUID 로 적기
- 온라인으로 LV 와 파일시스템 늘리기
- 스왑 파일 만들고 켜기
- 로컬 NFS 서버로 내보내고 마운트
- autofs 로 접근할 때 붙이기
- iostat·vmstat 로 성능 지표 남기기