> For the complete documentation index, see [llms.txt](https://ia-cloud.gitbook.io/cloudia-manual/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ia-cloud.gitbook.io/cloudia-manual/vm/instance.md).

# 인스턴스

CloudiA의 `인스턴스` 메뉴에서는 가상머신을 생성하고, 상태를 확인하고, 전원과 스냅샷, 연결된 리소스를 관리합니다. 이 문서는 실제 UI 사용 절차를 먼저 설명하고, 운영자 성격의 고급 내용은 뒤쪽 `운영 참고`와 `부록`으로 분리합니다.

## 인스턴스 개요

### 메뉴에서 할 수 있는 일

* 프로젝트의 인스턴스 목록을 확인합니다.
* 인스턴스를 생성하고 편집합니다.
* 인스턴스를 실행, 종료, 재부팅, 삭제합니다.
* 실행 중인 인스턴스에 웹 콘솔로 접속합니다.
* 상세 화면에서 네트워크, 디스크, 스냅샷, 연결 리소스, 모니터링 정보를 확인합니다.
* 인스턴스 스냅샷을 생성, 편집, 삭제, 롤백합니다.
* 인스턴스의 부팅 디스크를 다른 스토리지 도메인으로 이동(스토리지 마이그레이션)합니다.

### 화면 구성

| 화면   | 설명                                                                       |
| ---- | ------------------------------------------------------------------------ |
| `목록` | 인스턴스 상태를 확인하고 생성, 편집, 전원 제어, 삭제를 시작합니다.                                  |
| `생성` | 이름, 스펙, 설치 유형, 네트워크, 사용자 계정, 선택 설정을 입력해 인스턴스를 만듭니다.                      |
| `편집` | 생성과 같은 화면 구성을 사용합니다. 다만 생성 후 변경할 수 없는 항목은 잠기며, 실행 중에는 일부 항목만 수정할 수 있습니다. |
| `상세` | 현재 상태와 연결된 리소스를 확인하고, 웹 콘솔 접속, 디스크 부팅 순서 변경, 스냅샷 관리 같은 후속 작업을 수행합니다.     |

### 상태 이해하기

| 상태         | 의미                                                                              | 사용자 안내                                                                          |
| ---------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| `생성 중`     | 인스턴스 생성 작업이 진행 중입니다.                                                            | 작업이 끝날 때까지 기다립니다.                                                               |
| `부팅 중`     | 전원이 인가되고 게스트 OS가 올라오는 중입니다.                                                     | 상태가 안정될 때까지 기다립니다.                                                              |
| `실행 중`     | 게스트 OS가 동작 중입니다.                                                                | 콘솔 접속과 전원 제어가 가능합니다.                                                            |
| `재부팅 중`    | 재부팅 작업이 진행 중입니다.                                                                | 작업이 끝날 때까지 기다립니다.                                                               |
| `업데이트 중`   | 라이브 업데이트 작업이 진행 중입니다. (예: `vCPU`/`메모리` 핫 변경, 실행 중 NIC·디스크 변경)                   | 작업이 끝날 때까지 기다립니다.                                                               |
| `종료 중`     | 종료 작업이 진행 중입니다.                                                                 | 작업이 끝날 때까지 기다립니다.                                                               |
| `종료됨`      | 전원이 꺼진 상태입니다.                                                                   | `실행`할 수 있습니다.                                                                   |
| `정지됨`      | 전원이 꺼진 상태입니다.                                                                   | `실행`할 수 있습니다. `종료`로 정상 종료 상태로 정리할 수도 있습니다.                                      |
| `일시 중지`    | 실행 상태가 일시 중지되었습니다.                                                              | `실행`으로 재개할 수 있습니다. 그 외 일부 작업은 제한됩니다.                                            |
| `마이그레이션 중` | 호스트 간 이동 작업이 진행 중입니다.                                                           | 작업이 끝날 때까지 기다립니다.                                                               |
| `삭제 중`     | 삭제 작업이 진행 중입니다.                                                                 | 완료될 때까지 기다립니다.                                                                  |
| `에러`       | 생성 또는 운영 중 오류가 발생했습니다. 배치할 수 있는 호스트가 없어 기동하지 못한 경우, 배치 정보가 어긋난 경우도 이 상태로 표시됩니다. | 상태 옆 안내 아이콘에서 원인을 확인합니다. `실행`은 비활성이지만 `종료`는 할 수 있으며, `종료` 후 `실행`이 직접 재시도 경로입니다. |

> 중요
>
> `에러` 상태에서는 시스템이 자동으로 복구를 시도합니다. 상태 옆 안내 아이콘의 문구로 현재 상황을 구분합니다.
>
> * `자동 복구 시도 중`, `자동 재시도 중`: 원인이 해소되면 시스템이 스스로 인스턴스를 되살립니다. 기다려도 됩니다.
> * `저장장치가 복구되면 자동 재시도`, `배치 조건을 만족하는 호스트 없음`: 원인이 인스턴스 밖에 있습니다. 저장장치·호스트 자원이 회복되면 자동으로 다시 시도합니다.
> * `자동 복구를 중단함 · 반복 실패로 관리자 확인 필요`: 자동 재시도가 반복 실패해 멈춘 상태입니다. 관리자에게 원인 확인을 요청하고, 원인을 제거한 뒤 `종료` 후 `실행`으로 다시 시도합니다.
>
> 자동 복구가 중단되어도 `실행`과 `종료`는 그대로 사용할 수 있습니다. 멈추는 것은 시스템의 자동 재시도뿐입니다.

> 중요
>
> `종료됨`과 `정지됨`은 모두 전원이 꺼진 상태이지만, 내부 상태 정의는 다릅니다.
>
> * `종료됨`: 현재 어떤 호스트에도 배치되어 있지 않은 종료 상태
> * `정지됨`: 시스템 내부에서 정지 상태로 관리되는 종료 상태
>
> 사용자 관점에서는 두 상태 모두 `실행`할 수 있습니다. 운영 판단이나 장애 분석이 필요할 때는 상태명을 구분해 확인합니다.

> 참고
>
> 이름을 클릭해 상세 화면에 들어갈 수 없는 상태는 `생성 중`, `삭제 중`입니다.

### 관리 대상 구분

| 생성 방식                                       | 인스턴스 메뉴에서 할 일                                          |
| ------------------------------------------- | ------------------------------------------------------ |
| `수동 생성`                                     | 이 메뉴에서 생성, 편집, 전원 제어, 삭제, 스냅샷 작업을 수행합니다.               |
| `오토 스케일링 그룹`, `쿠버네티스`, `파일 시스템`, `Gen:iA` 등 | 이 메뉴에서는 주로 상태와 상세 정보만 확인합니다. 실제 관리는 상위 서비스 화면에서 수행합니다. |

> 중요
>
> 상위 서비스에서 생성된 인스턴스는 인스턴스 메뉴에 작업 버튼이 표시되더라도 비활성화될 수 있습니다. 이런 인스턴스는 원래 생성한 서비스 화면에서 관리합니다.

## 목록에서 할 수 있는 작업

### 목록에서 먼저 확인할 항목

| 항목            | 확인할 내용                                                |
| ------------- | ----------------------------------------------------- |
| `번호`          | 프로젝트 내 생성 순서를 나타내는 고정 순번입니다(1부터 시작).                  |
| `이름`          | 인스턴스 표시 이름입니다. 이름을 클릭하면 상세 화면으로 이동합니다.                |
| `생성 방식`       | `수동 생성`인지, 상위 서비스에서 생성된 인스턴스인지 확인합니다.                 |
| `IP 주소`       | NIC에 할당된 IPv4 주소를 표시합니다. NIC가 여러 개면 쉼표로 구분해 함께 표시합니다. |
| `상태`          | 현재 전원 상태와 작업 가능 범위를 확인합니다.                            |
| `vCPU`, `메모리` | 현재 할당된 기본 스펙을 확인합니다.                                  |
| `생성 일시`       | 생성 시점을 확인합니다.                                         |

> 참고
>
> 목록의 `IP 주소` 컬럼에서 가장 앞에 표시되는 IPv4 주소는 기본 네트워크 인터페이스의 IPv4 주소입니다.

### 검색과 정렬

* 검색 조건은 `이름`입니다.
* `번호`, `이름`, `IP 주소`, `생성 일시` 컬럼은 정렬할 수 있습니다. `번호` 정렬은 `생성 일시` 기준 정렬과 동일하게 동작하고, `IP 주소` 정렬은 기본 네트워크 인터페이스의 IPv4 주소를 숫자 크기 순으로 비교합니다(문자열 순서가 아닙니다).
* 기본 정렬은 `생성 일시` 기준입니다.
* 페이지당 10개를 표시합니다.
* 목록에서는 좌측 라디오 버튼으로 인스턴스 1개만 선택할 수 있습니다.

### 작업 버튼 사용 기준

아래 표는 목록 화면의 대표 버튼을 같은 기준으로 정리한 것입니다.

* `버튼 표시`: 버튼이 화면에 보이는지
* `버튼 활성화`: 현재 선택한 인스턴스 기준으로 버튼을 클릭할 수 있는지
* `실제 작업 성공`: 버튼 클릭 후 작업이 실제로 완료되기 위한 조건

| 작업                  | 버튼 표시  | 버튼 활성화 조건                                                                                                                        | 실제 작업 성공 조건                                                                                                     |
| ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `생성`                | 항상 표시  | 항상 활성화                                                                                                                           | 필수 입력값과 자원 검증을 통과해야 합니다.                                                                                        |
| `편집`                | 항상 표시  | 인스턴스 1개를 선택하고, `수동 생성`이며, 상태가 `종료됨`, `정지됨`, `실행 중`이어야 합니다. 단, `ISO 파일` 설치 유형은 `실행 중`일 때 비활성화됩니다.                                 | 편집 화면에서 수정 가능한 항목만 저장할 수 있습니다. 실행 중 편집은 라이브 업데이트 가능 항목만 반영됩니다.                                                  |
| `실행`                | 항상 표시  | 인스턴스 1개를 선택하고, `수동 생성`이며, 상태가 `종료됨`, `정지됨`, `일시 중지` 중 하나여야 합니다.                                                                  | 호스트 배치 조건과 연결 리소스 조건을 만족해야 합니다. `일시 중지` 상태에서 `실행`하면 중지되기 전의 실행 상태로 재개됩니다.                                       |
| `종료`                | 항상 표시  | 인스턴스 1개를 선택하고, `수동 생성`이며, 상태가 `실행 중`, `일시 중지`, `정지됨`, `에러` 중 하나여야 합니다. `종료됨`에서는 비활성화됩니다.                                         | 종료 요청이 정상 처리되어야 합니다. `에러` 상태 중 배치 정보까지 잃은 인스턴스는 종료가 실패할 수 있으며, 이때는 관리자 확인이 필요합니다.                               |
| `재부팅`               | 항상 표시  | 인스턴스 1개를 선택하고, `수동 생성`이며, 상태가 `실행 중`이어야 합니다.                                                                                     | 보안 유형과 시스템 정책에서 재부팅을 허용해야 하며, 재부팅 요청이 정상 처리되어야 합니다.                                                             |
| `삭제`                | 항상 표시  | 인스턴스 1개를 선택하고, `수동 생성`이어야 합니다. `생성 중`, `실행 중`, `부팅 중`, `재부팅 중`, `종료 중`, `삭제 중` 상태에서는 비활성화됩니다. `에러` 상태는 원인 확인이 끝날 때까지 제한될 수 있습니다. | 연결된 인스턴스 스냅샷이 0개여야 합니다.                                                                                         |
| `더보기 > 인스턴스 복제`     | 메뉴에 표시 | 인스턴스 1개를 선택하고, 상태가 `실행 중` 또는 `종료됨`이어야 합니다.                                                                                       | 이름 검증과 자원(할당량) 조건을 통과해야 합니다. 네트워크 설정(IP·MAC 주소), 추가 디스크, 파일 시스템은 복제되지 않습니다. 자세한 내용은 [인스턴스 복제](#인스턴스-복제)를 확인합니다. |
| `더보기 > 시작 템플릿으로 변환` | 메뉴에 표시 | 인스턴스 1개를 선택하고, 상태가 `실행 중` 또는 `종료됨`이어야 합니다.                                                                                       | 이름 검증을 통과해야 합니다. 보존 여부는 토글로 선택하며 일부 항목은 항상 보존됩니다. 자세한 내용은 [시작 템플릿으로 변환](#시작-템플릿으로-변환)을 확인합니다.                   |

> 참고
>
> 스냅샷 생성은 목록 화면 버튼이 아니라 인스턴스 상세 화면의 스냅샷 탭에서 수행합니다. 자세한 내용은 [인스턴스 스냅샷](#인스턴스-스냅샷)을 확인합니다. 아래 "상태별 빠른 기준" 표의 `스냅샷 생성` 열도 이 기준을 따릅니다.
>
> 이 문서에서 `조건부`는 현재 상태는 허용되지만 추가 조건을 더 확인해야 함을 뜻합니다. `제한`은 상태 외에 생성 방식, 오류 상태, 상위 서비스 정책 때문에 인스턴스 메뉴에서 바로 처리할 수 없음을 뜻합니다.

### 상태별 빠른 기준

아래 표는 `수동 생성` 인스턴스를 기준으로 자주 사용하는 작업만 빠르게 정리한 것입니다.

| 상태                                                | 편집             | 실행             | 종료 | 재부팅 | 삭제  | 스냅샷 생성 | 안내                                           |
| ------------------------------------------------- | -------------- | -------------- | -- | --- | --- | ------ | -------------------------------------------- |
| `실행 중`                                            | 가능<sup>1</sup> | 불가             | 가능 | 가능  | 불가  | 가능     |                                              |
| `종료됨`                                             | 가능             | 가능             | 불가 | 불가  | 조건부 | 가능     |                                              |
| `정지됨`                                             | 가능             | 가능             | 가능 | 불가  | 조건부 | 불가     |                                              |
| `일시 중지`                                           | 제한             | 가능<sup>2</sup> | 가능 | 불가  | 조건부 | 불가     | 그 외 작업은 상태 해제 또는 종료 후 다시 시도합니다.              |
| `생성 중`, `부팅 중`, `재부팅 중`, `업데이트 중`, `종료 중`, `삭제 중` | 불가             | 불가             | 불가 | 불가  | 불가  | 불가     | 진행 중인 작업이 끝난 뒤 다시 시도합니다.                     |
| `에러`                                              | 불가             | 불가             | 가능 | 불가  | 조건부 | 불가     | 상태 옆 안내에서 원인을 확인합니다. `종료` 후 `실행`이 재시도 경로입니다. |

<sup>1</sup> `ISO 파일` 설치 유형의 인스턴스는 `실행 중`일 때 편집할 수 없습니다.\ <sup>2</sup> `일시 중지` 상태에서 `실행`하면 중지되기 전의 실행 상태로 재개됩니다.

## 인스턴스 생성

### 생성 전에 준비할 항목

* 인스턴스가 연결될 `VPC`를 준비합니다.
* 각 NIC가 연결될 `서브넷`을 준비합니다.
* 접속 방식을 `비밀번호`, `SSH 키`, 또는 둘 다 사용할지 결정합니다.
* `OS 이미지`로 만들지, `ISO 파일`로 직접 설치할지 결정합니다.
* 추가 `블록`, `파일 시스템`, `AI 가속기`, `사용자 스크립트`가 필요한지 확인합니다.

### 1. 기본 정보 입력

* `인스턴스 이름`을 입력합니다.
* 스펙은 `인스턴스 타입 선택` 또는 `직접 입력`으로 지정합니다.
* 필요하면 `vCPU 상세 설정`에서 하이퍼스레딩 사용 여부와 코어 수를 조정합니다.

| 항목           | 입력 기준                  | 비고                                         |
| ------------ | ---------------------- | ------------------------------------------ |
| `인스턴스 이름`    | 영문 대/소문자, 숫자, `-`, `_` | 최대 80자, 첫 글자 숫자 불가, 공백 및 기타 특수문자 불가        |
| `인스턴스 타입 선택` | 사전 정의된 스펙 선택           | 선택한 타입의 `vCPU`, `메모리`, 최대 NIC 수가 자동 적용됩니다. |
| `직접 입력`      | `vCPU`와 `메모리` 직접 입력    | 필요한 스펙을 직접 지정합니다.                          |
| `vCPU 상세 설정` | 기본값 사용 또는 옵션 지정        | 적용된 `vCPU = CPU 코어당 스레드 수 × 코어 수`입니다.      |

| 필드     | 입력 기준         | 비고                            |
| ------ | ------------- | ----------------------------- |
| `vCPU` | 1 이상의 정수      | 실행 중 편집에서는 현재 값보다 줄일 수 없습니다.  |
| `메모리`  | 크기 입력 + 단위 선택 | 실행 중 증설은 최소 1GB, 512MB 단위입니다. |

### 2. 설치 유형 선택

| 설치 유형    | 사용할 때                                          | 알아둘 점                                                           |
| -------- | ---------------------------------------------- | --------------------------------------------------------------- |
| `OS 이미지` | 표준 이미지로 빠르게 인스턴스를 만들 때 사용합니다.                  | Cloud-init 기반 사용자 계정과 초기 설정을 함께 적용할 수 있습니다. 생성 후 이미지 변경은 불가합니다. |
| `ISO 파일` | OS를 직접 설치하거나 골든 이미지를 만들기 위한 초기 VM을 만들 때 사용합니다. | 설치 자유도는 높지만 제한사항이 많습니다. 생성 후 ISO 변경은 불가합니다.                     |

> 중요
>
> `ISO 파일` 설치 유형은 일반적인 사용자 워크로드보다 OS 설치 후 골든 이미지를 만드는 초기 작업에 적합합니다. 일반적인 인스턴스 생성은 `OS 이미지` 사용을 권장합니다.
>
> `ISO 파일` 설치 유형의 주요 제한사항은 다음과 같습니다.
>
> * `사용자 계정` 섹션을 사용할 수 없습니다.
> * `고급 설정`에서 `보안 유형`, `오브젝트 스토리지`, `사용자 스크립트`를 사용할 수 없습니다. `부팅 펌웨어`, `확장 한도`, 추가 `블록`은 사용할 수 있습니다.
> * Windows 계열 `ISO 파일`은 추가 `블록`을 3개까지만 연결할 수 있습니다. 자세한 이유는 아래 `참고`를 확인합니다.
> * 실행 중에는 `편집`할 수 없습니다. 추가 `블록` 연결과 해제는 `종료됨` 상태에서만 가능합니다.
> * 편집 화면에서 `ISO 파일`을 변경할 수 없습니다.
> * `CEPH` 스토리지 도메인을 지원하지 않습니다.

> 참고
>
> Windows 계열 게스트는 모든 디스크가 `SATA` 방식으로 연결되고, 인스턴스 하나가 쓸 수 있는 `SATA` 포트는 6개입니다. `ISO 파일` 설치 유형은 설치 ISO와 드라이버 ISO 두 개가 CD-ROM으로 함께 연결되어 포트를 사용하므로, 부팅 디스크 1개를 제외하면 추가 `블록`은 3개까지 연결할 수 있습니다. 이 개수를 넘기면 생성 또는 편집 단계에서 거부됩니다. 설치를 마치고 ISO를 분리하면 그만큼 여유가 생겨 더 많은 `블록`을 연결할 수 있습니다.
>
> Linux 계열 게스트는 디스크 연결 방식이 달라 이 제한이 적용되지 않습니다.

> 참고
>
> Windows를 `ISO 파일`로 설치할 때 부팅 장치 선택 화면이 보이면 `QEMU DVD-ROM` 항목을 선택합니다. Windows 11의 네트워크 요구 사항 우회와 VirtIO 드라이버 설치 예시는 [윈도우 가상머신 ISO 생성 및 콘솔 확인](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/04-create-windows-instance-from-iso-and-open-console.md)을 확인합니다.

### 3. 부팅 디스크 크기 설정

| 구분       | 입력 기준                       | 제한                                     |
| -------- | --------------------------- | -------------------------------------- |
| `OS 이미지` | 선택한 이미지 크기가 기본값으로 입력됩니다.    | 이미지 크기보다 작게 설정할 수 없습니다.                |
| `ISO 파일` | OS를 설치할 빈 부팅 디스크 크기를 입력합니다. | 1 이상의 정수만 입력할 수 있습니다. 소수점은 입력할 수 없습니다. |

`ISO 파일` 설치 유형에서는 아래 기준을 먼저 참고해 부팅 디스크를 설정합니다.

| 운영체제 계열          | 최소값   | CloudiA 기본값 |
| ---------------- | ----- | ----------- |
| `Unknown`        | 4 GB  | 10 GB       |
| `RHEL 계열`        | 10 GB | 15 GB       |
| `Ubuntu`         | 5 GB  | 15 GB       |
| `Debian`         | 4 GB  | 8 GB        |
| `Windows 10`     | 32 GB | 64 GB       |
| `Windows 11`     | 64 GB | 80 GB       |
| `Windows Server` | 32 GB | 64 GB       |

> 참고
>
> 운영체제별 상세 기준은 [부록 A. ISO 기반 부팅 디스크 기준](#appendix-a-boot-disk-criteria)을 확인합니다.

### 4. 네트워크 인터페이스 구성

* 인스턴스에는 최소 1개의 네트워크 인터페이스가 필요합니다.
* 인스턴스는 하나의 `VPC`에 속합니다.
* 첫 번째 NIC가 기본 네트워크 인터페이스가 됩니다.

| 항목              | 입력 방법                             | 비고                   |
| --------------- | --------------------------------- | -------------------- |
| `서브넷`           | 선택한 VPC에 속한 서브넷을 선택합니다.           | NIC마다 1개씩 선택합니다.     |
| `IP 주소 - 자동 할당` | 사용 가능한 IPv4를 자동으로 할당합니다.          | 권장 기본값입니다.           |
| `IP 주소 - 수동 할당` | 선택한 서브넷의 CIDR 안에서 IPv4를 직접 입력합니다. | 서브넷 선택 후 사용할 수 있습니다. |
| `보안그룹`          | NIC에 적용할 보안그룹을 선택합니다.             | NIC당 최대 5개를 선택합니다.   |

`오브젝트 스토리지`를 활성화하면 네트워크 인터페이스 목록 맨 앞에 시스템용 `Managed VNIC`가 자동으로 추가됩니다. 이 NIC는 오브젝트 스토리지 내부 접근에 필요한 연결을 제공하며, 사용자가 직접 추가, 수정, 삭제하는 일반 NIC와는 다르게 동작합니다.

> 중요
>
> `오브젝트 스토리지`를 사용하더라도 사용자 NIC는 최소 1개 이상 필요합니다. `Managed VNIC`만으로 인스턴스를 구성할 수는 없습니다.

> 참고
>
> NIC가 여러 개여도 게스트 OS에는 기본 네트워크 인터페이스의 DNS만 자동으로 적용됩니다. 추가 NIC에 필요한 DNS는 게스트 OS에서 직접 설정합니다.

### 5. 사용자 계정 설정

`사용자 계정`은 `OS 이미지` 설치 유형에서만 사용합니다. `ISO 파일` 설치 유형에서는 이 섹션이 비활성화됩니다.

| 항목       | 입력 기준                               | 비고                                           |
| -------- | ----------------------------------- | -------------------------------------------- |
| `사용자 이름` | 4\~20자, 첫 글자 영문 소문자, 소문자/숫자/`_`/`-` | 예약어는 사용할 수 없습니다.                             |
| `비밀번호`   | 4\~20자, 허용된 영문/숫자/특수문자              | `SSH 키`를 선택하지 않으면 필요합니다.                     |
| `SSH 키`  | 프로젝트에 등록된 SSH 키 선택                  | 최대 5개까지 선택합니다. `비밀번호`를 사용하지 않으면 1개 이상 선택합니다. |

> 참고
>
> `사용자 계정`에 지정한 계정은 게스트 OS의 기본 사용자 계정(UID 1000)으로 만들어지며, CloudiA가 관리하는 계정은 이 하나뿐입니다. `SSH 키` 추가나 `비밀번호` 변경처럼 cloud-init을 다시 실행하는 설정 변경이나 재부팅이 발생해도 이 계정은 그대로 유지됩니다.
>
> 추가 계정이 필요하면 인스턴스에 접속한 뒤 게스트 OS에서 직접 `useradd`로 만듭니다. 이렇게 만든 추가 계정은 CloudiA가 관리하지 않지만, 위와 같은 설정 변경이나 재부팅에도 삭제되지 않고 유지되며, 생성·삭제·권한 관리는 사용자가 직접 수행합니다.
>
> `OS 이미지`가 Windows 계열이면 cloud-init이 게스트에서 동작하지 않아 `사용자 계정`에 입력한 값이 게스트에 적용되지 않습니다. Windows 인스턴스는 이미지에 미리 설정된 계정으로 로그인합니다.

### 6. 선택 설정 검토

필요한 경우 아래 항목을 함께 설정합니다.

| 항목              | 설명                                                       | 비고                                                                                                                                                          |
| --------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `블록`            | 프로젝트의 블록 자원을 인스턴스에 연결합니다.                                | 운영 데이터와 OS 디스크를 분리할 때 사용합니다.                                                                                                                                |
| `파일 시스템`        | 파일 시스템 자원을 선택하고 마운트 포인트를 지정합니다.                          | `NFS`, `virtiofs` 같은 공유 저장소 연결에 사용합니다. Windows 이미지는 자동 마운트를 지원하지 않아 이 항목을 사용할 수 없으며, 게스트에서 직접 마운트해야 합니다.                                                    |
| `오브젝트 스토리지`     | 오브젝트 스토리지 접근용 네트워크를 함께 사용하도록 설정합니다.                      | 활성화하면 네트워크 인터페이스 목록 맨 앞에 `Managed VNIC`가 자동 추가됩니다. 별도 디스크를 붙이는 기능은 아닙니다. `ISO 파일` 설치 유형에서는 사용할 수 없습니다.                                                      |
| `AI 가속기`        | AI 가속기를 연결합니다.                                           | `GPU` 또는 `NPU` 가속기를 선택할 수 있습니다. 인스턴스 스펙을 `직접 입력`으로 구성할 때 선택할 수 있으며, 자세한 내용은 상세 화면의 `AI 가속기 탭`을 참고합니다.                                                       |
| `선호도 그룹`        | 인스턴스를 배치할 선호(preferred) 또는 반선호(anti-affinity) 그룹을 선택합니다. | 선호 그룹은 지정한 인스턴스들을 같은 호스트에 배치하고, 반선호 그룹은 서로 다른 호스트에 배치합니다. 자세한 내용은 [선호도 그룹](/cloudia-manual/vm/affinity-group.md)을 확인합니다.                                    |
| `Secure Boot`   | 인스턴스의 Secure Boot 사용 여부를 선택합니다.                          | Windows 이미지는 UEFI로 동작하며 Secure Boot가 기본 활성화됩니다. Windows 11은 하드웨어 요구 사항에 따라 비활성화할 수 없으며, 그 외 Windows는 필요 시 비활성화할 수 있습니다.                                     |
| `vTPM(TPM 2.0)` | 인스턴스에 가상 TPM 2.0 장치를 제공할지 선택합니다.                         | Windows 11 이미지에는 하드웨어 요구 사항에 따라 vTPM 2.0이 필수로 적용됩니다. 그 외 이미지에서는 사용 여부를 직접 선택할 수 있습니다.                                                                       |
| `부팅 펌웨어`        | 부팅 방식을 `기본값`, `BIOS`, `UEFI` 중에서 선택합니다.                  | `기본값`은 선택한 이미지가 선언한 펌웨어를 그대로 따릅니다. 보안 인스턴스(`SEV` 등)는 `BIOS`를 선택할 수 없고, Windows 11 이미지는 `UEFI`만 지원합니다. 이미지가 선언한 펌웨어와 다른 값을 선택하면 부팅에 실패할 수 있다는 경고가 화면에 표시됩니다. |
| `고급 설정`         | 필요하면 `보안 유형`, `최대 vCPU`, `최대 메모리`, `가상 CPU 피닝`을 설정합니다.   | 자세한 의미와 운영 기준은 `운영 참고`를 확인합니다. `ISO 파일` 설치 유형에서는 `보안 유형`을 사용할 수 없습니다.                                                                                       |
| `사용자 스크립트`      | 부팅 시 자동으로 실행할 작업을 등록합니다.                                 | Cloud-init이 동작하는 게스트에서 사용합니다. Windows 이미지는 cloud-init이 동작하지 않아 등록해도 게스트에 적용되지 않습니다.                                                                         |

> 참고
>
> `NFS` 파일 시스템이 연결된 경우에는 일반적인 경우보다 종료 시간이 길어질 수 있습니다.
>
> `오브젝트 스토리지`를 활성화하면 생성 화면의 네트워크 인터페이스 목록에도 `Managed VNIC`가 함께 표시됩니다. 이 항목은 사용자가 선택, 수정, 삭제할 수 없습니다.
>
> vTPM이 활성화된 인스턴스는 라이브 마이그레이션이 지원되지 않습니다. 무중단 이전 대신 콜드 마이그레이션을 사용합니다.
>
> 게스트에서 디스크 암호화 키를 TPM에 봉인할 때(Windows BitLocker, Linux LUKS `systemd-cryptenroll` 등)는 `PCR 0`을 봉인 기준으로 사용하지 않습니다. `PCR 0`은 인스턴스의 메모리 크기를 변경하거나 하드웨어 구성이 다른 호스트에서 다시 시작되면 값이 달라져, 봉인한 키가 자동으로 해제되지 않습니다. 이때는 복구 키를 직접 입력해야 접근을 회복할 수 있으므로, 복구 키는 반드시 인스턴스 외부에 별도로 보관합니다.
>
> Secure Boot를 함께 사용하는 인스턴스에서는 `PCR 7`을 봉인 기준으로 사용합니다. Secure Boot를 사용하지 않는 인스턴스에서는 `PCR 7`에 Secure Boot가 비활성 상태라는 사실만 기록되어, 부트로더나 커널이 교체되어도 값이 그대로입니다. 따라서 이 구성에서는 `PCR 7` 하나만으로 봉인하지 말고 부팅 구성요소를 함께 측정하는 PCR을 추가하거나 별도의 인증 수단을 사용합니다.
>
> 이미지·`ISO 파일`·`블록`·`파일 시스템`은 각각 특정 호스트에 전속된 스토리지 도메인에 속할 수 있습니다. 이미 선택한 항목과 같은 호스트에 둘 수 없는 항목은 선택 목록에서 비활성화되며, 모달 제목 옆 `ⓘ` 아이콘에 마우스를 올리면 안내 문구를 확인할 수 있습니다.

### 7. 사용자 스크립트 입력

반복되는 초기 설정이 있으면 `사용자 스크립트`로 자동화합니다.

| 항목      | 설명                            |
| ------- | ----------------------------- |
| `실행 순서` | 여러 스크립트를 등록한 경우 실행 순서를 지정합니다. |
| `파일 이름` | 스크립트 파일 이름을 입력합니다.            |
| `단계`    | 실행 시점을 선택합니다.                 |
| `내용`    | 스크립트 본문을 입력합니다.               |

| 단계             | 실행 시점                 | 한 줄 요약                                                                                    |
| -------------- | --------------------- | ----------------------------------------------------------------------------------------- |
| `PER_BOOT`     | 부팅할 때마다               | 재부팅하면 반드시 다시 실행됩니다.                                                                       |
| `PER_INSTANCE` | instance-id가 바뀔 때 1회  | 최초 부팅 시 실행됩니다. CloudiA에서 instance-id 변경 트리거(아래 목록)가 발생하면 instance-id가 갱신되어 다시 실행됩니다.      |
| `PER_ONCE`     | cloud-init 상태 기준 딱 1회 | 최초 부팅 이후에는 재부팅이나 CloudiA 설정 변경과 무관하게 다시 실행되지 않습니다. 재실행하려면 `cloud-init clean` 후 재부팅해야 합니다. |

`PER_INSTANCE`와 `PER_ONCE`는 모두 "한 번"처럼 보이지만 CloudiA 설정 변경 시 동작이 다릅니다.

| 상황                                   | `PER_BOOT` | `PER_INSTANCE` | `PER_ONCE` |
| ------------------------------------ | ---------- | -------------- | ---------- |
| 최초 부팅                                | 실행         | 실행             | 실행         |
| 단순 재부팅                               | 실행         | 실행 안 함         | 실행 안 함     |
| CloudiA에서 instance-id 변경 트리거 발생 후 부팅 | 실행         | **다시 실행**      | 실행 안 함     |
| `cloud-init clean` 후 재부팅             | 실행         | 실행             | 실행         |

#### instance-id 변경 트리거

`PER_INSTANCE` 스크립트는 cloud-init instance-id가 바뀐 다음 부팅에서 다시 실행됩니다. CloudiA는 아래 변경이 발생하면 instance-id를 새 버전으로 발급합니다.

* `사용자 스크립트` 추가·수정·삭제
* `SSH 키` 추가·삭제
* `NIC` 추가·삭제
* `비밀번호` 추가·변경·삭제
* `파일 시스템`(`NFS`, `virtiofs`) 연결·해제 또는 마운트 포인트 변경
* 기본 NIC가 속한 `서브넷`의 `DNS 서버` 변경

> 참고
>
> instance-id 버저닝은 `OS 이미지` 설치 유형(cloud-init 기반)에만 적용됩니다. `ISO 파일` 설치 유형은 cloud-init을 사용하지 않으므로 해당하지 않습니다. `인스턴스 이름`, `사용자 이름`, `vCPU`·`메모리` 변경은 트리거가 아닙니다.
>
> 게스트에서 현재 instance-id는 `cloud-init query instance-id`로 확인할 수 있습니다. 변경 트리거 후 이 값이 달라졌다면 다음 부팅에서 `PER_INSTANCE` 스크립트가 다시 실행됩니다.

> 참고
>
> 사용자 스크립트는 게스트 OS 안에서 실행됩니다. 패키지 관리자와 서비스 이름은 게스트 OS에 맞게 작성합니다.
>
> **단계 선택 기준:**
>
> * 부팅마다 상태를 보정하거나 마운트를 확인해야 하면 `PER_BOOT`를 사용합니다. 반드시 idempotent하게 작성합니다.
> * 새 인스턴스를 만들 때마다 초기화 작업이 필요하면 `PER_INSTANCE`를 기본으로 사용합니다.
> * 스크립트 변경 여부와 무관하게 단 한 번만 실행되어야 하는 이미지 생명주기 작업에만 `PER_ONCE`를 사용합니다. 일반적인 초기화에는 `PER_INSTANCE`가 더 적합합니다.
>
> Linux 인스턴스를 골든 이미지로 만들기 전에 `PER_ONCE` 스크립트가 이미 실행된 상태라면, 그 실행 이력이 이미지에 포함될 수 있습니다. 골든 이미지 생성 전에는 게스트 OS에서 `cloud-init clean`을 수행한 뒤 종료하는 절차를 표준으로 권장합니다. 자세한 예시는 [스냅샷 이미지 생성으로 골든 이미지 만들기 및 인스턴스 실행](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/16-create-golden-image-from-snapshot.md)을 확인합니다.

## 인스턴스 편집

### 편집을 시작하기

* 목록에서 인스턴스 1개를 선택합니다.
* `편집`을 클릭합니다.
* 편집 화면은 생성 화면과 같은 구성을 사용합니다.
* 생성 후 변경할 수 없는 항목은 잠겨 있습니다.

> 중요
>
> `편집` 버튼은 인스턴스를 하나만 선택하고, 상태가 `실행 중`·`정지됨`·`종료됨`일 때 활성화됩니다. 단, `ISO`로 부팅해 `실행 중`인 인스턴스는 편집할 수 없습니다.

### 종료 상태에서 편집

`종료됨` 또는 `정지됨` 상태에서는 편집 화면에 들어가 수정 가능한 항목을 저장할 수 있습니다.

* 생성 시에만 결정되는 항목은 계속 잠겨 있습니다.
* 대표적으로 `설치 유형`, `OS 이미지`, `ISO 파일`은 생성 후 변경할 수 없습니다.
* `부팅 디스크 크기`는 값을 줄일 수는 없지만, 전원 종료 상태에서는 현재 값 이상으로 증설(확대)할 수 있습니다. 자세한 내용은 아래 `부팅 디스크 증설`을 확인합니다.
* `오브젝트 스토리지` 토글은 종료 상태에서 변경할 수 있습니다. 단 `ISO 파일` 설치 유형에서는 사용할 수 없습니다.
* `오브젝트 스토리지`를 활성화하면 네트워크 인터페이스 목록 맨 앞에 `Managed VNIC`가 자동 추가되고, 비활성화하면 해당 NIC가 자동 제거됩니다.

#### 부팅 디스크 증설

`종료됨` 또는 `정지됨` 상태에서는 편집 화면의 `디스크 크기 설정`에서 `부팅 디스크 크기`를 현재 값 이상으로 늘릴 수 있습니다. 증설(확대)만 가능하며 크기를 줄일 수는 없고, 저장 후 다음 실행 시점에 블록 디바이스가 확대됩니다. cloud-init(Linux)·Cloudbase-init(Windows) 같은 확장 도구가 포함된 이미지는 게스트 OS의 파티션과 파일 시스템이 부팅 시 자동으로 확장되며, 도구가 없는 이미지는 게스트에서 수동으로 확장해야 합니다.

> 참고
>
> 증설 절차와 게스트 OS별(Linux/Windows) 수동 확장 방법, 필요한 패키지는 [인스턴스 부팅 디스크 증설하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/22-grow-boot-disk.md)를 확인합니다.

### 실행 중 편집

실행 중 편집은 라이브 업데이트로 처리합니다. 화면 상단에 경고 배너가 표시될 수 있습니다.

#### 실행 중에도 가능한 작업

* `vCPU` 늘리기
* `메모리` 늘리기
* 네트워크 인터페이스 추가, 편집, 삭제. 단, 기본 NIC는 제외합니다.
* 추가 블록 디스크 연결 또는 제거

#### 실행 중에는 제한되는 작업

* `인스턴스 이름`
* `인스턴스 타입 선택`과 `직접 입력` 전환
* 하이퍼스레딩 변경
* `설치 유형`, `OS 이미지`, `ISO 파일`
* `부팅 디스크 크기` (실행 중에는 변경할 수 없습니다. 전원 종료 상태에서는 증설할 수 있으며, `종료 상태에서 편집`의 `부팅 디스크 증설`을 확인합니다.)
* `VPC` 변경
* 기본 NIC 편집 또는 삭제
* `사용자 계정`
* `보안 유형`, `최대 vCPU`, `최대 메모리`
* `파일 시스템`
* `오브젝트 스토리지`
* `AI 가속기`
* `가상 CPU 피닝`
* `사용자 스크립트` 등록

> 중요
>
> `ISO 파일` 설치 유형의 인스턴스는 `실행 중` 상태에서 편집할 수 없습니다.
>
> `오브젝트 스토리지` 토글은 실행 중 편집에서 변경할 수 없습니다. 따라서 실행 중에는 `Managed VNIC`를 추가하거나 제거할 수 없습니다.

> 참고
>
> 실행 중 편집에서는 현재 값보다 작은 `vCPU` 또는 `메모리`로 줄일 수 없습니다.
>
> * `vCPU`: 현재 값 이상, 최대 `vCPU` 이하
> * `메모리`: 현재 값 이상, 최대 `메모리` 이하
>
> 하이퍼스레딩을 사용하는 인스턴스는 실행 중 `vCPU` 증설 시 짝수 단위로만 늘릴 수 있습니다.
>
> 보안 유형에 따라 라이브 업데이트가 제한될 수 있습니다. `SEV-ES`, `SEV-SNP`는 실행 중 `vCPU` 증설과 재부팅이 제한됩니다.

> 주의
>
> 실행 중에 NIC나 블록 디스크를 추가해도 게스트 OS 내부 설정이 자동으로 끝나지 않을 수 있습니다. 인터페이스, IP, 라우팅, DNS, 디스크 인식 상태는 게스트 OS에서 직접 확인합니다. 자세한 점검 예시는 [부록 B. 다중 NIC 운영 참고](#appendix-b-multi-nic-ops)와 [부록 D. 추가 블록 디스크와 파일 시스템 확인 명령](#appendix-d-block-disk-and-filesystem-checks)을 확인합니다.

## 인스턴스 상세

### 상세 화면에 들어가기

* 목록에서 인스턴스 이름을 클릭합니다.
* `생성 중`, `삭제 중` 상태에서는 상세 화면에 들어갈 수 없습니다.

### 화면에서 확인할 수 있는 정보

| 구분           | 확인할 수 있는 내용                                                                                                                                                 |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `상단 정보`      | 이름, 상태, ID, UUID, VPC, 오브젝트 스토리지 사용 여부, 물리 머신, 생성 일시, 인스턴스 타입, `vCPU`, `메모리`, 최대 `vCPU`, 최대 `메모리`, 보안 유형, 생성 방식, 설치 유형, OS 이미지 또는 ISO 파일, 시작 템플릿, 사용자 계정 정보 |
| `인스턴스 구성 요소` | 네트워크 인터페이스, 디스크, 스냅샷, 호스트 장치, AI 가속기, 사용자 스크립트, 가상 CPU 피닝                                                                                                   |
| `연결된 리소스`    | 파일 시스템, 플로팅 IP, 선호도 그룹, SSH 키                                                                                                                               |
| `모니터링 정보`    | CPU, 메모리, 디스크, 네트워크 지표                                                                                                                                      |

### 콘솔 접속

전원이 인가된 인스턴스는 웹 콘솔(VNC)로 직접 접속해 게스트 화면을 확인하고 조작할 수 있습니다. `SSH 키`나 네트워크 접속이 아직 준비되지 않은 초기 단계나, `ISO 파일`로 OS를 직접 설치할 때 유용합니다.

1. 인스턴스 상세 화면으로 이동합니다.
2. 화면 상단 도구 모음에서 `콘솔`을 클릭합니다.
3. 새 브라우저 창에서 웹 콘솔이 열리고 자동으로 연결됩니다.

| 상태                                                   | `콘솔` 버튼  |
| ---------------------------------------------------- | -------- |
| `실행 중`, `부팅 중`, `재부팅 중`, `종료 중`, `마이그레이션 중`, `일시 중지` | 활성화됩니다.  |
| `종료됨`, `정지됨`, `생성 중`, `에러`                           | 비활성화됩니다. |

* 콘솔은 별도 브라우저 창으로 열립니다. 같은 인스턴스의 콘솔을 다시 열면 기존 창을 재사용합니다.
* 콘솔은 암호화(HTTPS) 연결로 동작합니다.
* 콘솔 자격 증명을 조회하는 동안에는 버튼이 `처리 중`으로 표시되며 잠시 비활성화됩니다.

> 중요
>
> 웹 콘솔에 로그인하려면 게스트 OS 계정의 `비밀번호`가 필요합니다. `OS 이미지`로 생성하는 인스턴스는 `비밀번호` 없이 `SSH 키`만 설정하면 콘솔로 로그인할 수 없습니다. 콘솔 접속이 필요하면 생성 시 반드시 `비밀번호`를 설정합니다. `ISO 파일` 설치 유형은 OS 설치 과정에서 계정을 직접 만들므로 이 제약을 받지 않습니다.

> 참고
>
> 콘솔 창이 열리지 않으면 브라우저의 팝업 차단을 해제합니다. Windows를 `ISO 파일`로 설치하면서 콘솔로 설치 과정을 확인하는 예시는 [윈도우 가상머신 ISO 생성 및 콘솔 확인](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/04-create-windows-instance-from-iso-and-open-console.md)을 확인합니다.

### 네트워크 인터페이스 탭

| 항목         | 설명              |
| ---------- | --------------- |
| `서브넷`      | NIC가 연결된 서브넷    |
| `보안그룹`     | NIC에 적용된 보안그룹   |
| `IP 주소`    | NIC의 IPv4 주소    |
| `기본 게이트웨이` | 해당 NIC의 게이트웨이   |
| `DNS 서버`   | 화면에 표시되는 DNS 정보 |
| `기본 인터페이스` | 기본 NIC 여부       |
| `MAC 주소`   | NIC의 MAC 주소     |

`오브젝트 스토리지`를 사용 중인 인스턴스는 이 탭에서 사용자 NIC와 함께 시스템이 자동으로 추가한 `Managed VNIC`를 확인할 수 있습니다. 상세 화면에서는 이를 통해 오브젝트 스토리지용 네트워크 인터페이스가 연결되어 있는지 먼저 확인합니다.

> 참고
>
> NIC가 여러 개여도 게스트 OS에는 기본 NIC의 DNS만 자동으로 적용됩니다. 추가 NIC에 필요한 DNS는 게스트 OS에서 직접 설정합니다.

### 디스크 탭

| 항목              | 설명                   |
| --------------- | -------------------- |
| `부팅 순서`         | 부팅 시도 순서             |
| `타입`            | 디스크 유형               |
| `장치 레이블`        | 게스트 OS에 연결되는 디스크 레이블 |
| `버스 타입`         | 디스크 버스 종류            |
| `크기`            | 디스크 크기               |
| `소스 타입 / 소스 이름` | 디스크 원본 정보            |

### 디스크 부팅 순서 변경

디스크가 2개 이상 연결된 인스턴스는 부팅 순서를 변경할 수 있습니다.

1. 인스턴스 상세 화면으로 이동합니다.
2. `인스턴스 구성 요소 > 디스크`를 선택합니다.
3. 인스턴스가 `종료됨` 상태인지 확인합니다.
4. `부팅 순서 변경`을 클릭합니다.
5. 장치를 드래그해 순서를 바꾸고, 필요하면 부팅 포함 여부를 조정합니다.
6. `저장`을 클릭합니다.

> 주의
>
> 부팅 불가능한 디스크를 가장 높은 우선순위로 두면 게스트 OS가 정상 부팅되지 않을 수 있습니다. 운영체제가 설치된 부팅 디스크를 상단에 둡니다.

### 호스트 장치 탭

상세 화면 `인스턴스 구성 요소 > 호스트 장치`에서 인스턴스에 연결된 호스트 장치(패스스루 장치) 목록을 **조회**합니다.

| 항목      | 설명         |
| ------- | ---------- |
| `장치 종류` | 장치의 분류입니다. |
| `공급업체`  | 장치 제조사입니다. |
| `제품명`   | 장치 모델명입니다. |

* 이 탭은 조회 전용입니다. 호스트 장치의 추가·삭제는 이 화면에서 제공하지 않습니다.

### AI 가속기 탭

상세 화면 `인스턴스 구성 요소 > AI 가속기`에서 인스턴스에 연결된 가속기를 조회하고, `GPU`/`NPU` 가속기를 추가하거나 삭제합니다.

| 항목      | 설명            |
| ------- | ------------- |
| `공급업체`  | 가속기 제조사입니다.   |
| `제품명`   | 가속기 모델명입니다.   |
| `장치 유형` | 가속기 장치 유형입니다. |
| `수량`    | 연결된 가속기 수입니다. |

주요 작업:

* `GPU 추가`: GPU 가속기를 추가합니다.
* `NPU 추가`: NPU 가속기를 추가합니다.
* `삭제`: 선택한 가속기를 제거합니다.

활성화 조건:

* 인스턴스가 `종료됨` 상태여야 합니다.
* `ISO 파일` 설치 유형 인스턴스에서는 사용할 수 없습니다.
* 인스턴스 스펙을 `직접 입력`으로 만든 경우에만 추가·삭제할 수 있습니다. `인스턴스 타입`을 선택해 만든 인스턴스는 상세 화면에서 가속기를 변경할 수 없습니다.
* `오토 스케일링 그룹`, `쿠버네티스` 등 상위 서비스가 생성한 시스템 인스턴스는 AI 가속기를 추가하거나 삭제할 수 없습니다. 가속기 구성은 상위 서비스(시작 템플릿 등)에서 관리합니다. [상위 서비스 인스턴스 관리](#상위-서비스-인스턴스-관리)를 확인합니다.
* 한 인스턴스에는 `GPU`와 `NPU` 중 한 종류의 가속기만 연결할 수 있습니다. `GPU`와 `NPU`를 동시에 연결할 수 없습니다.
* `GPU 추가`·`NPU 추가`는 연결된 가속기가 없을 때 사용할 수 있습니다.
* `삭제`는 목록에서 가속기를 선택했을 때 사용할 수 있습니다.

### 사용자 스크립트 탭

상세 화면 `인스턴스 구성 요소 > 사용자 스크립트`에서 인스턴스에 등록된 스크립트를 조회합니다. 각 스크립트의 `실행 순서`, `파일 이름`, `경로`, `단계`, `내용`을 확인할 수 있습니다.

* 스크립트 추가와 수정은 `편집` 화면의 `사용자 스크립트`에서 수행합니다.
* `실행 중`(라이브 업데이트) 상태에서는 사용자 스크립트를 등록하거나 변경할 수 없습니다. 변경하려면 인스턴스를 종료한 뒤 편집합니다.
* 단계(`PER_BOOT`, `PER_INSTANCE`, `PER_ONCE`)별 실행 시점과 동작 차이는 생성 단계의 `7. 사용자 스크립트 입력`을 확인합니다.

## 스토리지 마이그레이션

스토리지 마이그레이션은 인스턴스의 부팅 디스크를 다른 `스토리지 도메인`으로 이동하는 기능입니다. 스토리지 도메인 교체, 용량 재배치, 유지보수 준비 등에 사용합니다. 인스턴스에 연결된 블록(데이터 디스크)은 `스토리지 > 블록` 메뉴에서 개별적으로 이동합니다.

같은 `스토리지 마이그레이션` 버튼이 인스턴스 상태에 따라 다르게 동작합니다.

| 인스턴스 상태         | 동작 방식           | 설명                                   |
| --------------- | --------------- | ------------------------------------ |
| `종료됨`, `정지됨`    | 콜드 스토리지 마이그레이션  | 정지 상태에서 부팅 디스크를 대상 스토리지 도메인으로 이동합니다. |
| `실행 중`, `일시 중지` | 라이브 스토리지 마이그레이션 | 인스턴스 중단을 최소화하면서 부팅 디스크를 이동합니다.       |

수행 절차는 다음과 같습니다.

1. 목록 또는 상세 화면에서 인스턴스를 선택합니다.
2. `스토리지 마이그레이션`을 클릭합니다.
3. 대상 `스토리지 도메인`을 선택합니다.
4. `확인`을 클릭해 마이그레이션을 시작합니다.

> 중요
>
> 스냅샷이 있는 디스크는 라이브 스토리지 마이그레이션을 수행할 수 없습니다. 스냅샷을 삭제하거나 인스턴스를 종료한 뒤 콜드 스토리지 마이그레이션으로 수행합니다. 콜드 스토리지 마이그레이션에서도 스냅샷이 있는 디스크는 유형이 다른 스토리지 도메인으로는 이동할 수 없습니다.
>
> vTPM이 활성화된 인스턴스의 부팅 디스크는 라이브 스토리지 마이그레이션이 지원되지 않습니다. 인스턴스를 종료한 뒤 콜드 스토리지 마이그레이션으로 수행합니다.

> 참고
>
> 콜드 스토리지 마이그레이션 시 vTPM 데이터는 부팅 디스크와 함께 자동으로 이동됩니다. 별도 조치는 필요하지 않습니다.

## 인스턴스 복제

인스턴스 복제는 기존 인스턴스의 스펙과 부팅 디스크 내용을 그대로 가진 새 인스턴스를 만드는 기능입니다. 비슷한 환경을 여러 개 준비할 때 사용합니다.

수행 절차는 다음과 같습니다.

1. 목록에서 인스턴스 1개를 선택합니다.
2. `더보기 > 인스턴스 복제`를 클릭합니다.
3. 복제할 인스턴스의 요약 정보를 확인합니다.
4. 새 인스턴스 이름을 입력합니다.
5. `복제`를 클릭합니다.

> 중요
>
> `인스턴스 복제`는 인스턴스 1개를 선택하고, 상태가 `실행 중` 또는 `종료됨`일 때 활성화됩니다.
>
> 프로젝트 자원(할당량)이 부족하면 복제할 수 없다는 안내가 표시되며, 이 경우 `복제`가 비활성화됩니다.

> 주의
>
> 네트워크 설정(IP 주소·MAC 주소), 추가 디스크, 파일 시스템, GPU/NPU 패스스루 장치는 복제되지 않습니다. 복제본의 네트워크 인터페이스는 원본과 같은 서브넷·보안그룹을 사용하도록 새로 생성되며, IP 주소는 자동으로 할당됩니다. 원본에 GPU 또는 NPU가 연결되어 있어도 복제본은 해당 가속기 없이 생성되므로, AI 워크로드가 필요하면 복제 후 별도로 연결해야 합니다.

## 시작 템플릿으로 변환

시작 템플릿으로 변환은 기존 인스턴스의 설정을 바탕으로 새 시작 템플릿을 만드는 기능입니다. 자주 사용하는 구성을 템플릿으로 저장해 이후 인스턴스 생성이나 오토 스케일링 그룹에서 재사용할 때 사용합니다.

수행 절차는 다음과 같습니다.

1. 목록에서 인스턴스 1개를 선택합니다.
2. `더보기 > 시작 템플릿으로 변환`을 클릭합니다.
3. 변환할 인스턴스의 요약 정보를 확인합니다.
4. 새 시작 템플릿 이름을 입력합니다.
5. 템플릿에 보존할 항목을 토글로 선택합니다.
6. `생성`을 클릭합니다.

| 보존 항목           | 기본값    | 설명                                                                       |
| --------------- | ------ | ------------------------------------------------------------------------ |
| `고정 IP 주소 보존`   | 사용 안 함 | 기본값에서는 이 템플릿으로 인스턴스를 생성할 때 IP 주소가 자동 할당됩니다. 켜면 원본의 고정 IP 주소를 템플릿에 저장합니다. |
| `파일 시스템 연결 보존`  | 사용함    | 원본에 연결된 파일 시스템 구성을 템플릿에 포함할지 결정합니다.                                      |
| `GPU/NPU 사양 보존` | 사용함    | 원본에 연결된 GPU 또는 NPU 사양을 템플릿에 포함할지 결정합니다.                                  |
| `데이터 디스크 유지`    | 사용함    | 원본에 연결된 데이터 디스크(추가 블록)를 템플릿에 포함할지 결정합니다. 원본에 데이터 디스크가 있을 때만 표시됩니다.       |

> 중요
>
> `시작 템플릿으로 변환`은 인스턴스 1개를 선택하고, 상태가 `실행 중` 또는 `종료됨`일 때 활성화됩니다.

> 주의
>
> MAC 주소와 실행 상태는 템플릿에 보존되지 않습니다. `고정 IP 주소 보존`을 사용하지 않으면 이 템플릿으로 인스턴스를 생성할 때 IP 주소가 자동 할당됩니다. 네트워크 인터페이스, 보안그룹, 사용자 스크립트(cloud-init)는 토글과 무관하게 항상 템플릿에 보존됩니다.

> 주의
>
> `데이터 디스크 유지`를 사용하면 데이터 디스크가 복사되지 않고 **참조로 보존**됩니다. 데이터 디스크는 한 번에 하나의 인스턴스에만 연결할 수 있으므로, **원본 인스턴스에서 해당 디스크를 분리(편집)하거나 원본 인스턴스를 삭제하기 전에는 이 템플릿으로 인스턴스를 생성할 수 없습니다**(디스크는 삭제되지 않고 보존되어 새 인스턴스에 연결됩니다). 원본을 유지하면서 같은 구성의 인스턴스를 반복 생성하려면 이 토글을 꺼서 데이터 디스크 없이 변환합니다. 부팅 디스크는 새 이미지로 캡처되므로 이 제약과 무관합니다.

생성된 시작 템플릿은 `시작 템플릿` 메뉴에서 확인하고 관리합니다. 자세한 내용은 [시작 템플릿](/cloudia-manual/vm/launch-template.md)을 확인합니다.

## 인스턴스 스냅샷

인스턴스 스냅샷은 특정 시점의 디스크 상태를 저장하고 이후 롤백에 사용할 수 있는 기능입니다.

> v1.5.0부터 인스턴스 스냅샷 작업(생성·편집·삭제·롤백·이미지 생성)은 모두 **인스턴스 상세 화면의 `인스턴스 구성 요소 > 스냅샷`** 에서 수행합니다. 기존의 독립 `스토리지 > 스냅샷` 목록 메뉴는 제거되었습니다. 블록(디바이스) 자체의 스냅샷은 [스토리지 > 블록 - 블록 스냅샷](https://ia-cloud.gitbook.io/cloudia-manual/vm/pages/X0YgPmu7mi9nFalaEKwL#블록-스냅샷)에서 관리합니다.

### 스냅샷으로 할 수 있는 작업

| 작업          | 수행 위치                    | 상태 조건                 |
| ----------- | ------------------------ | --------------------- |
| `스냅샷 생성`    | 상세 화면 `인스턴스 구성 요소 > 스냅샷` | 인스턴스가 `실행 중` 또는 `종료됨` |
| `스냅샷 상세 조회` | 상세 화면 `인스턴스 구성 요소 > 스냅샷` | 스냅샷 1개 선택             |
| `스냅샷 편집`    | 상세 화면 `인스턴스 구성 요소 > 스냅샷` | 스냅샷 1개 선택             |
| `스냅샷 삭제`    | 상세 화면 `인스턴스 구성 요소 > 스냅샷` | 스냅샷 1개 선택             |
| `스냅샷 롤백`    | 상세 화면 `인스턴스 구성 요소 > 스냅샷` | 인스턴스가 `종료됨` 상태        |
| `이미지 생성`    | 상세 화면 `인스턴스 구성 요소 > 스냅샷` | 부팅 가능한 스냅샷 1개 선택      |

### 스냅샷 생성

1. 인스턴스 상세 화면에서 `인스턴스 구성 요소 > 스냅샷`을 선택합니다.
2. `생성`을 클릭합니다.
3. 스냅샷 이름과 설명을 입력합니다.
4. `생성`을 클릭합니다.

> 참고
>
> vTPM이 활성화된 인스턴스의 스냅샷은 디스크와 함께 TPM 상태(vTPM state)도 함께 저장됩니다. 별도 설정 없이 자동으로 처리되며, BitLocker 등 TPM으로 봉인된 데이터가 있는 인스턴스도 스냅샷 시점 그대로 복원할 수 있습니다.

### 스냅샷 상세 조회

1. 인스턴스 상세 화면에서 `인스턴스 구성 요소 > 스냅샷`을 선택합니다.
2. 조회할 스냅샷의 이름을 클릭합니다.
3. 스냅샷에 포함된 블록별 상세 정보를 확인합니다.

### 스냅샷 편집

1. 인스턴스 상세 화면에서 `인스턴스 구성 요소 > 스냅샷`을 선택합니다.
2. 수정할 스냅샷 1개를 선택합니다.
3. `편집`을 클릭합니다.
4. 이름과 설명을 수정합니다.

### 스냅샷 삭제

1. 인스턴스 상세 화면에서 `인스턴스 구성 요소 > 스냅샷`을 선택합니다.
2. 삭제할 스냅샷 1개를 선택합니다.
3. `삭제`를 클릭합니다.

### 스냅샷 롤백

1. 인스턴스가 `종료됨` 상태인지 확인합니다.
2. `인스턴스 구성 요소 > 스냅샷`을 선택합니다.
3. 롤백할 스냅샷 1개를 선택합니다.
4. `롤백`을 클릭합니다.

> 주의
>
> vTPM이 활성화된 인스턴스는 TPM 상태가 포함되지 않은 스냅샷으로 롤백할 수 없습니다. 이런 스냅샷은 디스크 롤백이 시작되기 전에 요청이 거부되고 오류 안내가 표시됩니다(인스턴스와 디스크는 그대로 유지됨). 다음 두 경우에 해당할 수 있습니다.
>
> * 이 기능이 추가되기 전에 생성한 vTPM 인스턴스 스냅샷
> * 콜드 스토리지 마이그레이션 이후에 롤백하려는, 마이그레이션 이전에 생성된 스냅샷(TPM 상태 사본은 마이그레이션 대상에 포함되지 않습니다)

### 스냅샷으로 이미지 생성(이미지화)

부팅 가능한 인스턴스 스냅샷을 기반으로 새 OS 이미지(골든 이미지)를 생성할 수 있습니다. (기존 `스토리지 > 스냅샷` 목록 화면의 이미지 생성 기능이 이 위치로 이동했습니다.)

1. 인스턴스 상세 화면에서 `인스턴스 구성 요소 > 스냅샷`을 선택합니다.
2. 부팅 가능한 스냅샷 1개를 선택합니다.
3. `이미지 생성`을 클릭하고 저장할 `스토리지 도메인`과 이미지 이름을 지정합니다.
4. 생성된 이미지는 `스토리지 > 이미지` 메뉴에서 확인하며 인스턴스 생성 시 사용할 수 있습니다.

> 이미지 생성 완료에는 몇 분이 소요될 수 있으며, 서버에서 생성 중인 이미지는 OS 타입 `UNKNOWN`, 크기 `0GB`로 표시될 수 있습니다.

> 참고
>
> 스냅샷을 기반으로 만든 이미지는 이후 인스턴스를 생성할 때 사용할 수 있습니다. 이미지 관리에 대한 자세한 내용은 [이미지](/cloudia-manual/storage/image.md)를 확인합니다.

> 중요
>
> 실행 중 스냅샷의 정합성이 중요하면 `QEMU Guest Agent` 설치 여부를 먼저 확인합니다. `ISO 파일` 설치 유형뿐 아니라 Linux 게스트 기본 이미지에도 게스트 에이전트가 없을 수 있습니다. 설치 예시는 [부록 C. 게스트 에이전트와 Windows 참고](#appendix-c-guest-agent-and-windows)를 확인합니다.

## 운영 참고

### 상위 서비스 인스턴스 관리

아래와 같은 인스턴스는 인스턴스 메뉴에서 상태와 상세 정보만 우선 확인합니다.

* `오토 스케일링 그룹`
* `쿠버네티스`
* `파일 시스템`
* `Gen:iA`

이런 인스턴스는 인스턴스 메뉴의 작업 버튼이 표시되더라도 비활성화될 수 있습니다. 실제 생성, 편집, 삭제, 재기동은 상위 서비스 화면에서 수행합니다.

### 인스턴스 실행이 실패할 때 확인할 항목

인스턴스를 `실행`할 때 배치 가능한 물리 호스트는 시스템이 자동으로 선택합니다. 아래 조건을 만족하는 호스트가 없으면 실행이 실패할 수 있습니다.

| 확인 항목       | 설명                                           |
| ----------- | -------------------------------------------- |
| `인스턴스 구성`   | 호스트가 요청한 `vCPU`와 `메모리`를 수용할 수 있어야 합니다.       |
| `설치 유형`     | 호스트가 필요한 OS 이미지 또는 ISO 파일을 제공할 수 있어야 합니다.    |
| `스토리지`      | 연결된 블록, 파일 시스템 등 필요한 스토리지 자원을 제공할 수 있어야 합니다. |
| `AI 가속기`    | 요청한 NPU 장치 유형이나 카드 수를 충족할 수 있어야 합니다.         |
| `보안 유형`     | 인스턴스의 보안 유형을 지원해야 합니다.                       |
| `가상 CPU 피닝` | 지정한 논리 CPU 범위를 수용할 수 있어야 합니다.                |
| `선호도 그룹`    | 선호 또는 반선호 규칙을 만족해야 합니다.                      |
| `호스트 상태`    | 호스트 연결 상태, 에이전트 상태, 내부 네트워크 상태가 정상이어야 합니다.   |

> 참고
>
> 자원 여유 판단은 모니터링 화면의 실시간 사용률과 동일하지 않을 수 있습니다. 시스템 내부 배치 기준으로 판단합니다.

### 고급 설정 항목

고급 설정은 일반 사용자보다 운영 정책이 있는 워크로드에서 주로 사용합니다.

| 항목          | 설명                                              |
| ----------- | ----------------------------------------------- |
| `보안 유형`     | `사용 안 함`, `SEV`, `SEV-ES`, `SEV-SNP` 중에서 선택합니다. |
| `최대 vCPU`   | 실행 중 증설 가능한 `vCPU` 상한입니다.                       |
| `최대 메모리`    | 실행 중 증설 가능한 메모리 상한입니다.                          |
| `가상 CPU 피닝` | 인스턴스 `vCPU`를 호스트의 논리 CPU 범위에 고정합니다.             |

> 참고
>
> 화면에 표시되는 보안 유형 옵션은 호스트(컴퓨트 노드)의 지원 범위에 따라 달라질 수 있습니다. 일부 환경에서는 `SEV-ES`, `SEV-SNP`가 표시되지 않을 수 있습니다.

#### 보안 유형별 제약

`SEV` 계열 보안 유형은 보호 수준에 따라 실행 중 작업과 호스트 요구 사항이 다릅니다.

| 보안 유형     | 보호 수준             | 실행 중 작업                           | 호스트 요구 사항    |
| --------- | ----------------- | --------------------------------- | ------------ |
| `사용 안 함`  | 적용 안 함            | 일반 인스턴스와 동일합니다.                   | 별도 요구 사항 없음  |
| `SEV`     | 메모리 암호화           | 실행 중 재부팅과 `vCPU` 증설(핫플러그)이 가능합니다. | SEV 지원 호스트   |
| `SEV-ES`  | 메모리 + 레지스터 상태 암호화 | 실행 중 재부팅과 `vCPU` 증설(핫플러그)이 제한됩니다. | IOMMU 지원 호스트 |
| `SEV-SNP` | 메모리 + 상태 + 무결성 보호 | 실행 중 재부팅과 `vCPU` 증설(핫플러그)이 제한됩니다. | IOMMU 지원 호스트 |

> 중요
>
> `SEV-ES`, `SEV-SNP` 인스턴스는 실행 중 재부팅과 `vCPU` 증설이 제한됩니다. 또한 SEV 계열(`SEV`, `SEV-ES`, `SEV-SNP`)은 모두 라이브 마이그레이션을 지원하지 않습니다. 실행 중 스펙 변경이나 무중단 이전이 필요한 워크로드라면 보안 유형 선택 시 이 점을 함께 고려합니다.

### 추가 블록 디스크와 파일 시스템 연결 확인

추가 리소스를 연결한 뒤에는 화면과 게스트 OS를 함께 확인합니다.

### 오브젝트 스토리지 사용 시 확인할 항목

* `오브젝트 스토리지`는 인스턴스에 별도 디스크를 추가하는 기능이 아닙니다.
* 이 옵션을 활성화하면 오브젝트 스토리지 접근용 네트워크 인터페이스와 내부 DNS 설정이 함께 적용됩니다.
* 인스턴스 상세의 `상단 정보`에서 사용 여부를 확인하고, `네트워크 인터페이스` 탭에서 `Managed VNIC` 존재 여부를 함께 확인합니다.
* 인스턴스 안에서 실제 이름 해석이 되는지 확인하려면 `object-storage.cloudia.internal` 조회 결과를 점검합니다.

#### 추가 블록 디스크

* 상세 화면의 `디스크` 탭에서 `장치 레이블`과 디스크 정보를 확인합니다.
* 게스트 OS에서 실제 디스크가 인식됐는지 확인합니다.
* Linux에서는 장치 이름만 보지 말고 `SERIAL` 값과 `장치 레이블`을 함께 비교합니다.
* Windows에서는 디스크가 `Offline` 또는 `RAW`인지 함께 확인합니다.

#### 파일 시스템

* 상세 화면의 `연결된 리소스 > 파일 시스템`에서 연결 상태를 확인합니다.
* 게스트 OS에서 실제 마운트 여부와 읽기/쓰기 여부를 확인합니다.
* `NFS`는 관련 패키지가 설치되어 있어야 합니다.
* 게스트 OS에 `NFS` 클라이언트 패키지가 없으면 `/etc/fstab`에 항목이 있어도 자동 마운트가 완료되지 않을 수 있습니다.
* 이 경우 패키지를 설치한 뒤 `mount -a`로 기존 `fstab` 항목을 적용합니다.
* `virtiofs`는 마운트 여부뿐 아니라 읽기/쓰기 테스트까지 확인합니다.

> 참고
>
> Linux와 Windows에서 사용하는 상세 명령 예시는 [부록 D. 추가 블록 디스크와 파일 시스템 확인 명령](#appendix-d-block-disk-and-filesystem-checks)을 확인합니다. NFS 공유 볼륨 구성, 패키지 설치, `fstab` 적용, 마운트 확인을 순서대로 따라 하려면 [파일 시스템을 통한 인스턴스 간 공유 볼륨 구성하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/17-share-volumes-between-instances-with-nfs.md)를 확인합니다.

### 가상 CPU 피닝 편집

1. 인스턴스 상세 화면으로 이동합니다.
2. 인스턴스가 `종료됨` 또는 `정지됨` 상태인지 확인합니다.
3. `인스턴스 구성 요소 > 가상 CPU 피닝`을 선택합니다.
4. `편집`을 클릭합니다.
5. 규칙을 추가하거나 삭제합니다.
6. `vCPU ID`와 `논리 CPU 범위(시작, 끝)`를 입력합니다.
7. `편집`을 클릭해 저장합니다.

> 참고
>
> 가상 CPU 피닝 설정은 다음 실행 시점에 반영되는지 확인한 뒤 작업합니다.

### 실전 예시로 분리한 항목

메뉴 사용법보다 시나리오와 OS별 명령이 중요한 항목은 `예제 및 실습 가이드`에서 별도로 설명합니다.

* Windows ISO 설치, 첫 번째 `QEMU DVD-ROM` 선택, Windows 11 네트워크 요구 사항 우회, VirtIO 드라이버 설치: [윈도우 가상머신 ISO 생성 및 콘솔 확인](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/04-create-windows-instance-from-iso-and-open-console.md)
* Windows 인스턴스를 골든 이미지로 준비하는 절차: [ISO로 설치한 Windows 인스턴스를 골든 이미지로 준비하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/19-prepare-windows-instance-for-golden-image.md)
* NFS 파일 시스템 공유 볼륨 구성, 패키지 설치, `/etc/fstab` 적용, 마운트 검증: [파일 시스템을 통한 인스턴스 간 공유 볼륨 구성하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/17-share-volumes-between-instances-with-nfs.md)
* 외부 접속과 내부 통신 점검 시나리오: [플로팅 IP로 인스턴스 외부 접속하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/quickstarts/04-access-instance-via-floating-ip.md), [인스턴스 포트 포워딩으로 외부 접속하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/10-connect-instance-via-port-forwarding.md), [보안그룹으로 인스턴스 트래픽 정책 구성하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/13-create-security-group-traffic-policy.md)

## 부록

부록에서 운영 항목으로 바로 이동하려면 아래 링크를 사용합니다.

* [부록 A. ISO 기반 부팅 디스크 기준](#appendix-a-boot-disk-criteria)
* [부록 B. 다중 NIC 운영 참고](#appendix-b-multi-nic-ops)
* [부록 C. 게스트 에이전트와 Windows 참고](#appendix-c-guest-agent-and-windows)
* [부록 D. 추가 블록 디스크와 파일 시스템 확인 명령](#appendix-d-block-disk-and-filesystem-checks)
* [부록 E. 외부 접속 또는 내부 통신 점검](#appendix-e-connectivity-checks)

### 부록 A. ISO 기반 부팅 디스크 기준

이 부록은 `ISO 파일` 설치 유형에서 사용하는 부팅 디스크 기준을 자세히 정리한 것입니다.

* `최소값`: CloudiA가 허용하는 최소 부팅 디스크 크기
* `CloudiA 기본값`: 생성 화면에서 기본으로 제안하는 값
* `공급사 문서 기준 권장값`: 운영체제 공급사 문서에서 따로 안내하는 권장값

#### 운영체제 계열별 기본 정책 요약

| 운영체제 계열          | 최소값   | CloudiA 기본값 |
| ---------------- | ----- | ----------- |
| `Unknown`        | 4 GB  | 10 GB       |
| `RHEL 계열`        | 10 GB | 15 GB       |
| `Ubuntu`         | 5 GB  | 15 GB       |
| `Debian`         | 4 GB  | 8 GB        |
| `Windows 10`     | 32 GB | 64 GB       |
| `Windows 11`     | 64 GB | 80 GB       |
| `Windows Server` | 32 GB | 64 GB       |

#### 운영체제별 부팅 디스크 기준

| 운영체제                          | 최소값   | CloudiA 기본값 | 공급사 문서 기준 권장값 | 설명                                                           |
| ----------------------------- | ----- | ----------- | ------------- | ------------------------------------------------------------ |
| `Unknown`                     | 4 GB  | 10 GB       | 별도 권장값 없음     | 운영체제를 식별할 수 없는 경우 적용하는 기본 기준입니다.                             |
| `Red Hat Enterprise Linux 8`  | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `Red Hat Enterprise Linux 9`  | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `Red Hat Enterprise Linux 10` | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `CentOS 8`                    | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `CentOS Stream 9`             | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `Rocky Linux 8`               | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `Rocky Linux 9`               | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `Rocky Linux 10`              | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `AlmaLinux 8`                 | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `AlmaLinux 9`                 | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 계열 기준을 적용합니다.                                         |
| `Red Hat Based 8`             | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 호환 배포판 기준을 적용합니다.                                     |
| `Red Hat Based 9`             | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 호환 배포판 기준을 적용합니다.                                     |
| `Red Hat Based 10`            | 10 GB | 15 GB       | 별도 권장값 없음     | `RHEL` 호환 배포판 기준을 적용합니다.                                     |
| `Ubuntu 22.04`                | 5 GB  | 15 GB       | 25 GB 이상      | Ubuntu Server 설치 최소 5 GB, 공급사 문서는 25 GB 이상을 권장합니다.           |
| `Ubuntu 24.04`                | 5 GB  | 15 GB       | 25 GB 이상      | Ubuntu Server 설치 최소 5 GB, 공급사 문서는 25 GB 이상을 권장합니다.           |
| `Debian 11`                   | 4 GB  | 8 GB        | 4 GB          | Debian Installer 기준 최소 설치 환경(no desktop) 권장값을 반영합니다.         |
| `Debian 12`                   | 4 GB  | 8 GB        | 4 GB          | 공식 문서의 normal installation 최소치는 더 낮지만, 실사용 기준으로 4 GB를 적용합니다. |
| `Debian 13`                   | 4 GB  | 8 GB        | 4 GB          | Debian Installer 기준 최소 설치 환경(no desktop) 권장값을 반영합니다.         |
| `Windows 10`                  | 32 GB | 64 GB       | 별도 권장값 없음     | 공급사 문서는 최소 저장소만 명시합니다.                                       |
| `Windows 11`                  | 64 GB | 80 GB       | 별도 권장값 없음     | 공급사 문서는 최소 저장소만 명시합니다.                                       |
| `Windows Server 2019`         | 32 GB | 64 GB       | 별도 권장값 없음     | 공급사는 범용 권장 디스크 크기를 별도로 제공하지 않습니다.                            |
| `Windows Server 2022`         | 32 GB | 64 GB       | 별도 권장값 없음     | 공급사는 범용 권장 디스크 크기를 별도로 제공하지 않습니다.                            |
| `Windows Server 2025`         | 32 GB | 64 GB       | 별도 권장값 없음     | 공급사는 범용 권장 디스크 크기를 별도로 제공하지 않습니다.                            |

> 참고
>
> 위 값은 생성 시점의 최소·기본 기준입니다. 만든 뒤에는 `부팅 디스크 크기`를 현재 크기 이상으로 증설(확대)만 할 수 있습니다(축소 불가). 자세한 절차는 `종료 상태에서 편집`의 `부팅 디스크 증설`을 확인합니다.

### 부록 B. 다중 NIC 운영 참고

#### 같은 서브넷, 다른 서브넷, 외부 네트워크

| 통신 구간               | 일반적인 동작                   | 함께 확인할 항목                        |
| ------------------- | ------------------------- | -------------------------------- |
| `같은 서브넷`            | 상대 인스턴스의 사설 IP로 직접 통신합니다. | 보안그룹, 게스트 OS 방화벽, 서비스 리슨 주소      |
| `같은 VPC의 다른 서브넷`    | 각 서브넷의 게이트웨이를 통해 통신합니다.   | 보안그룹, 게이트웨이, 게스트 OS 라우팅, 네트워크 정책 |
| `다른 VPC 또는 외부 네트워크` | 별도 연결 정책 없이 직접 통신하지 않습니다. | 라우팅, NAT 또는 플로팅 IP, 보안 정책        |

#### 비대칭 라우팅이 발생하는 경우

비대칭 라우팅은 요청이 들어온 인터페이스와 응답이 나가는 인터페이스가 다른 경우입니다. 다중 NIC 환경에서는 다음 조건에서 자주 발생합니다.

* 여러 NIC에 기본 게이트웨이가 동시에 설정된 경우
* 특정 NIC의 IP로 수신한 요청에 대해 다른 NIC의 기본 경로가 선택된 경우
* 소스 IP 기준 라우팅이 필요한데 기본 라우팅 테이블만 사용하는 경우
* Linux의 `rp_filter`가 strict 모드로 설정된 경우

#### 점검 항목

다중 NIC에서 통신이 되지 않으면 Linux 게스트에서 다음 항목을 함께 점검합니다.

1. 인터페이스별 IP와 라우팅
2. `ip rule` 기반 정책 기반 라우팅(PBR)
3. `rp_filter` 설정
4. 기본 게이트웨이 중복 여부

자주 사용하는 명령은 다음과 같습니다.

```bash
ip addr
ip route
ip route show table all
ip rule

sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.default.rp_filter
sysctl net.ipv4.conf.<인터페이스명>.rp_filter
```

#### 수동 IP 설정 예시(Linux)

실행 중 편집으로 NIC를 추가한 뒤 게스트 OS에서 새 인터페이스를 직접 구성해야 할 수 있습니다.

```bash
IFACE=eth1
IPADDR=10.0.0.66/24
GW=10.0.0.1
DNS1=10.0.0.2

nmcli con add type ethernet ifname "$IFACE" con-name "$IFACE" ip4 "$IPADDR" gw4 "$GW"
nmcli con modify "$IFACE" ipv4.dns "$DNS1" ipv4.method manual
nmcli con up "$IFACE"
```

> 참고
>
> 기본 NIC가 아닌 인터페이스에 게이트웨이를 추가하면 별도의 default route가 생길 수 있습니다. 다중 NIC 환경에서는 경로 우선순위와 정책 기반 라우팅을 함께 확인합니다.

### 부록 C. 게스트 에이전트와 Windows 참고

#### Linux 게스트에서 QEMU Guest Agent 설치

`Rocky Linux` 또는 `RHEL` 계열에서는 다음 명령을 사용합니다.

```bash
sudo dnf install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
sudo systemctl status qemu-guest-agent
```

`Ubuntu`에서는 다음 명령을 사용합니다.

```bash
sudo apt-get update
sudo apt-get install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
sudo systemctl status qemu-guest-agent
```

#### Windows ISO 설치와 VirtIO 드라이버 설치

Windows 게스트의 `ISO 파일` 설치, 첫 번째 `QEMU DVD-ROM` 선택, Windows 11 네트워크 요구 사항 우회, `virtio-win.iso`를 사용한 `VirtIO` 드라이버 설치는 [윈도우 가상머신 ISO 생성 및 콘솔 확인](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/04-create-windows-instance-from-iso-and-open-console.md) 문서에서 함께 안내합니다.

#### Windows 골든 이미지 준비

Windows 인스턴스의 `BitLocker` 확인, 복호화, `Sysprep` 적용, 이미지 생성 전 종료 절차는 [ISO로 설치한 Windows 인스턴스를 골든 이미지로 준비하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/19-prepare-windows-instance-for-golden-image.md)를 확인합니다.

### 부록 D. 추가 블록 디스크와 파일 시스템 확인 명령

#### Linux에서 추가 블록 디스크 확인

1. 상세 화면에서 추가 블록 디스크의 `장치 레이블`을 확인합니다.
2. 게스트 OS에서 다음 명령을 실행합니다.

```bash
lsblk -o NAME,SERIAL
```

3. `SERIAL` 값과 상세 화면의 `장치 레이블` 숫자를 함께 비교합니다.

> 참고
>
> 디스크가 여러 개 연결된 경우에는 `/dev/vdb`, `/dev/vdc` 같은 장치 이름만으로 식별하지 말고 `SERIAL` 값과 `장치 레이블`을 함께 확인합니다.

#### Windows에서 추가 블록 디스크 확인

```powershell
Get-Disk
Get-Partition
Get-Volume
```

새 디스크가 `Offline` 또는 `RAW`로 보이면 초기화, 파티션 생성, 포맷, 드라이브 문자 할당을 순서대로 진행합니다.

#### Linux에서 NFS 준비 사항 확인

| 게스트 OS                   | 확인할 패키지      | 확인 명령                |
| ------------------------ | ------------ | -------------------- |
| `Rocky Linux`, `RHEL` 계열 | `nfs-utils`  | `rpm -q nfs-utils`   |
| `Ubuntu`                 | `nfs-common` | `dpkg -l nfs-common` |

필요한 패키지가 없으면 다음 명령으로 설치합니다.

```bash
# Rocky Linux / RHEL 계열
sudo dnf install -y nfs-utils

# Ubuntu
sudo apt-get update
sudo apt-get install -y nfs-common
```

패키지를 설치한 뒤에는 `/etc/fstab`에 이미 기록된 NFS 항목을 적용합니다.

```bash
sudo mount -a
```

#### virtiofs 확인 예시

```bash
mountpoint /mnt/virtiofs
df -h /mnt/virtiofs
sudo sh -c 'echo "Hello ---" > /mnt/virtiofs/test-file.txt'
cat /mnt/virtiofs/test-file.txt
ls -la /mnt/virtiofs/
```

#### NFS 확인 예시

```bash
sudo cat /etc/fstab
sudo mount -a
findmnt
df -hT
mount | grep nfs
```

### 부록 E. 외부 접속 또는 내부 통신 점검

통신이 되지 않으면 다음 순서로 확인합니다.

1. 인스턴스 상태가 `실행 중`인지 확인합니다.
2. 필요한 NIC에 올바른 IP가 설정됐는지 확인합니다.
3. 보안그룹 인바운드와 아웃바운드 규칙을 확인합니다.
4. 게스트 OS 방화벽과 서비스 리슨 주소를 확인합니다.
5. 플로팅 IP가 필요한 구조라면 올바른 인터페이스에 연결됐는지 확인합니다.
6. 다중 NIC 환경이라면 라우팅, 정책 기반 라우팅, `rp_filter`, 기본 게이트웨이 우선순위를 함께 확인합니다.

관련 시나리오를 단계별로 따라 하려면 다음 문서를 확인합니다.

* [플로팅 IP로 인스턴스 외부 접속하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/quickstarts/04-access-instance-via-floating-ip.md)
* [인스턴스 포트 포워딩으로 외부 접속하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/10-connect-instance-via-port-forwarding.md)
* [보안그룹으로 인스턴스 트래픽 정책 구성하기](https://github.com/iAcloud-inc/CloudiA-manual/tree/main/docs/user-guide/examples-and-labs/13-create-security-group-traffic-policy.md)
