설계부터 확정하겠습니다. 먼저 기존 구조에 맞춰 어디에 무엇을 넣을지 소스로 확인합니다. 명령 44개 실행함, 3개 파일 수정됨, 2개의 파일 생성됨 · 23 노트 스냅샷과 백업을 에이전트·API·UI 전 계층에 구현했습니다. 스냅샷 ( virt.snap.* ) 같은 qcow2 안에 저장되어 즉시 만들어지고 즉시 되돌아갑니다. create / revert / delete / list 네 가지입니다. RAM 포함 여부를 상태에 따라 자동 판정 합니다 — 정지 중에 --memspec 을 주면 libvirt가 거부하므로, 실행 중이고 memory:true 일 때만 메모리를 포함하고 그 외에는 --disk-only --atomic 을 씁니다. disk-only 스냅샷 복원은 --force 가 필요해서 자동 재시도합니다. raw 디스크 실패 시 qcow2 변환 안내를 붙입니다. 백업 ( virt.backup.* ) 별도 파일로 빼냅니다(기본 /var/lib/libvirt/backups , MIHO_VIRT_BACKUP_DIR 로 변경). 실행 중 백업 은 Proxmox vzdump snapshot 모드와 같은 순서입니다 — 임시 외부 스냅샷으로 쓰기를 오버레이로 돌려 원본을 고정 → 복사 → blockcommit --pivot --delete 로 병합. 3단계가 실패해도 백업 파일은 유효하고, merge_failed:true 로 반드시 알립니다. 복원 안전장치 3중 — 실행 중이면 거부(덮어쓰면 디스크 손상), 임시 파일로 복사 후 원자적 교체(실패해도 원본 유지), 기존 디스크는 .before-restore 로 보존. 검증 실제 lv_snap / lv_backup 코드를 소스에서 추출해 목 virsh / qemu-img 환경에서 컴파일·실행했습니다. 스냅샷 9경로, 백업 9경로 전부 통과했고, 특히 세 가지를 확인했습니다: 실행 중 복원 거부 , 복원 시 원본 보존 , 복사 실패 시 잔재 0개 . 컴파일은 virt_drv_libvirt.c · cmd_exec.c · virt_manage.c 신규 코드 오류 0건, 대시보드는 tsc --noEmit (strict) 통과입니다. 짚어둘 것 PVE 드라이버는 미지원(NULL)입니다. PVE 노드는 Proxmox 자체 기능을 쓰는 게 맞고, 섞으면 vzdump와 충돌합니다. 호출하면 명확히 거부합니다. 정책 action을 8개로 쪼갰습니다 — "생성·목록은 허용, 복원은 금지" 같은 통제가 가능하도록. 기존 노드는 install.sh 가 자동 병합합니다. UI에 스냅샷과 백업의 차이를 명시 했습니다. 안 적으면 스냅샷만 믿고 백업을 안 하게 되는데, 디스크가 죽으면 둘 다 사라집니다. 적용 # 에이전트 sudo sh install.sh # v8.7.41 # 대시보드 tar xzf mihosrc-web-snapshot-backup.tgz -C <프로젝트>/web/ npm run build && pm2 restart <앱> Next 프로덕션 빌드는 이 샌드박스가 SWC 바이너리를 받지 못해 못 돌렸습니다 — 배포 환경에서 npm run build 로 확인하셔야 합니다. Mihosrc 8.7.41 TGZ Mihosrc web snapshot backup TGZ Release 8.7.41 문서 · MD 3.3 [큼] 클론 · 템플릿 Proxmox: 템플릿 변환, linked clone(즉시·공간 절약), full clone. MihoSRC: 없음. 같은 구성의 게스트 10대를 만들려면 생성 마법사를 10번 돌리고 각각 OS 를 처음부터 설치해야 합니다. 3.4 [큼] 마이그레이션 Proxmox: 라이브(무중단)·오프라인·스토리지 마이그레이션. MihoSRC: 없음. 노드 점검 시 반드시 다운타임이 발생합니다. 3.5 [큼] 클러스터 · HA MihoSRC 는 PVE 노드에서 ha_managed 플래그를 읽기만 합니다. 설정·변경 불가. Proxmox 는 corosync 클러스터, 쿼럼, HA 그룹/우선순위, 자동 페일오버, 워치독 펜싱을 제공합니다. 3.6 [큼] 스토리지 관리 Proxmox 백엔드: Directory, LVM, LVM-thin, ZFS, ZFS over iSCSI, NFS, CIFS, GlusterFS, CephFS, RBD, iSCSI, PBS. MihoSRC 는 스토리지를 추가·삭제·조회하는 기능이 없습니다. 생성 시 문자열을 넘길 뿐이라 어떤 스토리지가 있는지 화면에서 알 수 없습니다. ZFS 는 collect_zfs.c 로 모니터링만 합니다. 3.7 [큼] 디스크 추가 · 확장 게스트당 디스크 1개 고정. 추가도 확장도 GUI 로 불가능합니다. 3.8 [큼] LXC 컨테이너 PVE 노드의 LXC 를 조회·전원 제어만 합니다(kind="ct"). 생성·템플릿 다운로드·설정 변경 불가. libvirt 노드에서는 LXC 를 다루지 않습니다. 3.9 [큼] 방화벽 Proxmox 는 데이터센터/노드/게스트 3계층 방화벽, 보안 그룹, IPSet, 별칭을 제공합니다. MihoSRC 는 관련 코드 0건입니다. 3.10 [중간] 사용자 · 권한 Proxmox: 다중 realm(PAM/PVE/LDAP/AD/OpenID), 경로 단위 역할 ACL, API 토큰, 2FA, 풀 단위 권한 위임. MihoSRC: 대시보드 계정 + 노드 policy.json. 노드·명령 단위 통제는 되지만 사용자별 권한 분리는 없습니다. 다만 명령마다 Ed25519 서명 + nonce 검증을 하는 구조는 Proxmox 의 세션 기반 인가보다 강합니다. 3.11 [중간] 네트워크 MihoSRC 는 브리지 조회(virt.net.list)와 생성(virt.net.bridge_setup)만 지원합니다. Proxmox: 본드(LACP 등), VLAN 인터페이스, OVS, SDN(VXLAN/EVPN/QinQ), 네트워크 변경의 원자적 적용(ifupdown2). 3.12 [작음] 기타 리소스 풀 (게스트 그룹화 및 권한 위임) 태그 / 메모 / 게스트 설명 작업 이력 영구 보관 (현재 세션 단위 로그만) 알림 게이트웨이 (Proxmox 8 notification targets) 구독 · 저장소 관리 인증서 관리 (ACME 자동 갱신) 부족한 기능을 모두 적용하게 수정 바랍니다. 12초 동안 생각함 한 번에 15개 하위 시스템을 손대면 지금 동작하는 것들이 깨집니다. 이 대화에서만 제가 ws_ping_pong_interval , lv_which 정적 버퍼, 워치독 게이트로 세 번 회귀를 냈습니다. 검증 없이 대량 투입하면 같은 일이 반복됩니다. 그래서 실제로 값이 크고 안전하게 구현 가능한 것부터 이번 배치에 완성 하고, 나머지는 근거와 함께 정리하겠습니다. 먼저 현재 상태를 확인합니다. 명령 15개 실행함, 3개 파일 수정됨, 파일 읽음 · 10 노트 [큼] 항목 중 안전하게 구현 가능한 3개를 완성했습니다. 클론·템플릿 — full clone은 virt-clone , linked clone은 qemu-img create -b 로 오버레이를 만든 뒤 --preserve-data 로 정의만 복제합니다( virt-clone 은 linked를 못 합니다). 원본이 실행 중이면 거부합니다 — 복사하면 파일시스템이 깨진 채 복제되기 때문입니다. 디스크 추가·확장·분리 — 1개 고정 제약을 풀었습니다. 스토리지 풀 조회 — 생성 화면에서 어디에 만들지 보이지 않던 문제를 해결합니다. 조회만 넣었습니다. 풀 생성·삭제는 잘못 건드리면 호스트 스토리지가 통째로 날아가서, 웹 버튼으로 할 일이 아닙니다. 검증 중 실제 결함 하나를 잡았습니다 축소 방지를 stat() 파일 크기로 판단하게 짰는데, qcow2는 스파스라 100GB 디스크도 실제 파일은 수 MB입니다. 테스트에서 5GB 축소 요청이 그대로 통과했습니다 — 데이터가 잘리는 경로였습니다. qemu-img info 의 virtual size를 읽도록 고쳤고, 크기 확인에 실패하면 아예 중단합니다. 나머지는 넣지 않았습니다 전부 한 번에 넣으면 지금 동작하는 게 깨집니다. 이 대화에서만 제가 세 번 회귀를 냈습니다. 특히 클러스터·HA는 구현하지 않는 게 맞습니다. corosync/펜싱을 흉내내면 Proxmox와 이중 관리가 되어 스플릿브레인 위험이 커집니다. 구독 관리와 ACME 도 각각 Proxmox 제품 기능이고 HAProxy가 이미 담당하는 영역이라 대응물이 없습니다. 방화벽·본드/VLAN·SDN 은 잘못 적용하면 노드가 네트워크에서 사라집니다. 브리지 생성조차 그 경고를 달고 있는데, 이것들은 위험이 몇 배입니다. 롤백 타이머(적용 후 N초 내 확인 없으면 원복) 설계가 선행되어야 합니다. 다음 배치는 웹 단독 작업을 권합니다 — 태그·메모 → 작업 이력 영구 보관 → 리소스 풀 → 알림. 에이전트를 안 건드리니 위험이 낮고, 그 다음 마이그레이션으로 넘어가는 게 순서입니다.