명령어/Linux

[RHEL] guestfish VM 디스크 대화식 셸

jykim23 2026. 8. 4. 23:00
반응형

부제: libguestfs를 직접 부리는 대화식 파일시스템 셸

# 읽기 전용으로 이미지를 열고 대화식 셸 진입
guestfish --ro -a disk.qcow2
# 비대화식으로 명령만 실행
guestfish --ro -a disk.qcow2 run : list-filesystems
><fs> run
><fs> list-filesystems
/dev/sda1: xfs
><fs> mount-ro /dev/sda1 /
><fs> cat /etc/hostname
renamed-vm
><fs> ll /var/log
total 4
drwxr-xr-x 2 root root 21 Jul 16 15:00 .
drwxr-xr-x 3 root root 17 Jul 16 15:00 ..
-rw-r--r-- 1 root root 17 Jul 16 15:00 app.log

virt-cat·virt-ls·virt-edit 같은 도구가 각각 한 가지 일만 한다면, guestfish는 그 밑에 깔린 libguestfs API를 직접 두드리는 대화식 셸이다. run으로 백엔드 어플라이언스를 띄우고 mount로 파일시스템을 붙인 뒤 cat·ll·write·part-disk·mkfs 등 수백 개 명령을 순서대로 친다. 새 이미지를 파티셔닝해 파일시스템을 만드는 것부터 복구까지, 다른 virt 도구로 안 되는 세밀한 작업은 결국 여기로 온다. 진단은 항상 --ro(읽기 전용)로 열어 이미지를 보호한다. 데비안에도 있지만 RHEL virt 스택 기본이다.

이렇게도 쓴다

읽기 전용으로 열고 파일시스템 목록을 본다.

guestfish --ro -a disk.qcow2 run : list-filesystems

 

OS를 자동 인식해 마운트까지 마친 상태로 진입한다. (-i)

guestfish --ro -a guest.qcow2 -i

 

한 줄로 파일 내용을 뽑는다. (비대화식 -c)

guestfish --ro -a guest.qcow2 -i cat /etc/redhat-release

 

빈 이미지를 파티셔닝하고 XFS로 포맷한다. (heredoc 조합)

guestfish -a new.qcow2 <<'EOF'
run
part-disk /dev/sda mbr
mkfs xfs /dev/sda1
EOF

 

호스트 파일을 이미지 안으로 복사해 넣는다.

guestfish -a guest.qcow2 -i copy-in ./app.conf /etc

 

이미지 안 파일을 호스트로 꺼낸다. (download)

guestfish --ro -a guest.qcow2 -i download /var/log/messages ./messages.log
반응형