LabHub
배우기 러닝패스 코스

LFCS — Linux Foundation System Administrator

From LVM to autofs — Build Storage by Hand

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

루프 장치 두 개 위에 LVM 을 세우고, ext4 를 UUID 로 fstab 에 등록하고, 온라인으로 늘리고, 스왑 파일을 켜고, 같은 VM 안에서 NFS 서버와 autofs 클라이언트를 구성한 뒤 iostat·vmstat 로 지표를 남깁니다. 전부 진짜로 붙습니다.

왜 중요한가

LFCS 의 Storage 도메인(20%)은 파드에서는 한 줄도 할 수 없었습니다 — pvcreatemount 도 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/fstabUUID= 로 시작하는 줄(타입 ext4, 옵션 defaults, dump 0, pass 2)을 추가하세요. findmnt --verify 로 fstab 에 오류가 없어야 합니다.
  5. lv_data300MiB 더 늘리고(총 900MiB 이상), 마운트를 풀지 않은 채 ext4 파일시스템도 같이 커지게 하세요. df 로 본 /srv/data 의 크기가 커져야 합니다.
  6. /var/swap/lfcs.swap256MiB 스왑 파일로 만들어 켜세요. 권한은 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 로 연결하고, 그 맵에 키 share127.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=<켜져 있는 스왑 파일 경로>.

참고

루프 장치 두 개 만들기

/var/lib/lfcs/disk1.img/var/lib/lfcs/disk2.img 를 각각 1GiB 크기로 만들고(희소 파일이면 됩니다) 둘 다 루프 장치로 붙이세요. 붙인 뒤 losetup -a 출력을 /root/lfcs/storage/loop.txt 로 저장하세요.

truncate -s 로 희소 파일을 만들 수 있습니다. 루프 번호는 snap 이 이미 몇 개 쓰고 있으니 박지 말고 비어 있는 것을 받으세요(losetup -f --show).

PV 두 개로 VG 만들기

두 루프 장치를 LVM 물리 볼륨(PV)으로 초기화하고, 둘을 합쳐 볼륨 그룹 vg_lfcs 를 만드세요.

pvcreate 는 장치마다, vgcreate 는 VG 이름 뒤에 장치들을 나열합니다. 어느 루프 장치인지는 losetup -j <파일> 로 되찾을 수 있습니다.

LV 를 자르고 ext4 로 포맷

vg_lfcs 에서 600MiB 크기의 논리 볼륨 lv_data 를 만들고 ext4 로 포맷하세요.

lvcreate -L 로 크기, -n 으로 이름을 줍니다. 장치 경로는 /dev// 또는 /dev/mapper/- 두 가지로 보입니다.

마운트하고 fstab 에 UUID 로 적기

lv_data/srv/data 에 마운트하고, 재부팅 뒤에도 붙도록 /etc/fstabUUID= 로 시작하는 줄(타입 ext4, 옵션 defaults, dump 0, pass 2)을 추가하세요. findmnt --verify 로 fstab 에 오류가 없어야 합니다.

UUID 는 blkid 로 봅니다. 장치 경로(/dev/loopN)는 부팅마다 바뀔 수 있어서 fstab 에 적으면 안 됩니다. 적은 뒤 systemctl daemon-reload 와 mount -a 로 fstab 줄 자체가 동작하는지 확인하세요.

온라인으로 LV 와 파일시스템 늘리기

lv_data300MiB 더 늘리고(총 900MiB 이상), 마운트를 풀지 않은 채 ext4 파일시스템도 같이 커지게 하세요. df 로 본 /srv/data 의 크기가 커져야 합니다.

lvextend -L +300M 으로 LV 를 늘려도 파일시스템은 모릅니다. resize2fs 를 따로 돌리거나 lvextend 에 -r 을 붙여야 df 가 바뀝니다.

스왑 파일 만들고 켜기

/var/swap/lfcs.swap256MiB 스왑 파일로 만들어 켜세요. 권한은 600 이어야 하고, /etc/fstab 에 재부팅 뒤에도 켜지도록 줄(타입 swap)을 추가하세요.

fallocate 또는 dd 로 파일을 만들고 chmod 600 → mkswap → swapon 순서입니다. swapon --show 로 켜졌는지 봅니다. fstab 줄은 여섯 필드이고 마운트 지점 자리는 none, 타입은 swap 입니다 (예: /var/swap/sample.swap none swap sw 0 0).

로컬 NFS 서버로 내보내고 마운트

/srv/share 를 NFS 로 내보내되 127.0.0.1 에만 허용하세요(옵션 rw,sync,no_subtree_check). /srv/share/hello.txt 에 아무 내용이나 적고, 그 공유를 /mnt/share 에 NFS 로 마운트해 같은 파일이 보이게 하세요.

/etc/exports 한 줄 → exportfs -ra → mount -t nfs4 127.0.0.1:/srv/share /mnt/share 순서입니다. exportfs -v 로 실제로 내보내졌는지 확인하세요 — 파일만 고치면 서버는 모릅니다.

autofs 로 접근할 때 붙이기

같은 공유를 autofs 가 접근하는 순간 붙이게 하세요. 마스터 맵 /etc/auto.master.d/lfcs.autofs/nfs 를 맵 /etc/auto.lfcs 로 연결하고, 그 맵에 키 share127.0.0.1:/srv/share 를 nfs4 로 가리키게 적으세요. autofs 를 재시작한 뒤 ls /nfs/share 가 hello.txt 를 보여야 합니다. (서버가 자기 자신이면 autofs 는 NFS 대신 bind 로 붙입니다 — findmnt /nfs/share 의 SOURCE 가 [/srv/share] 로 보여도 정상입니다.)

마스터 맵 줄은 '마운트지점 맵파일', 맵 줄은 '키 -fstype=nfs4 서버:/경로' 입니다. 맵을 고친 뒤 systemctl restart autofs 를 잊으면 /nfs 는 그냥 빈 디렉터리입니다.

iostat·vmstat 로 성능 지표 남기기

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=<켜져 있는 스왑 파일 경로>.

iostat 는 sysstat 패키지에 있습니다. 첫 표본은 부팅 이후 누적치라 세 번 뽑습니다. 값은 손으로 적지 말고 vgs·lvs --units m --nosuffix·swapon --show 에서 뽑으세요.