---
# System prepended metadata

title: Harvester VM 使用 container disk
tags: [work]

---

# Harvester VM 使用 container disk
如果你想要複製大量虛擬機（VM）工作負載，或是注入不需要持久化資料的驅動程式，ContainerDisk 是一個理想的選擇。

暫存磁碟（Ephemeral Volume）設計用於那些需要額外儲存空間、但不在意資料在 VM 重啟後是否保留的情境，也適用於只需要唯讀輸入檔案（例如設定檔或秘密金鑰）的 VM。

對於需要跨 VM 重啟保留根磁碟（root disk）內容的工作負載來說，ContainerDisk 並不是一個合適的方案。

## 創建 containerdisk 的 docker image

需要把 qcow2 或 raw 放到 `/disk` 目錄下。
```
$ wget https://download.opensuse.org/repositories/Cloud:/Images:/Leap_15.5/images/openSUSE-Leap-15.5.x86_64-NoCloud.qcow2

$ cat << END > Dockerfile
FROM scratch
ADD --chown=107:107 openSUSE-Leap-15.5.x86_64-NoCloud.qcow2 /disk/
END

$ docker build -t docker.io/taiwanese/opensuse15.5:latest .
```

## Harvester 創建 VM 使用 container disk

* 創建 vm 時，在 volume 點選 Add Container，然後填入我們剛剛 build 好的 image

![image](https://hackmd.io/_uploads/rk8osbnbeg.png)

* 成功開機

![image](https://hackmd.io/_uploads/HyQEpb2Wxe.png)

## 注意

如果使用 container disk 類型的儲存需要注意以下:
1. container disk 這個是暫時性的，當 VM 重啟後內容會消失（如果沒有額外掛載永久儲存 volume）。
2. vm 無法使用 Live Migration 遷移。
3. 升級 harvester 時需要先將有掛載 container disk 的 vm 關機。


## 參考
https://kubevirt.io/user-guide/storage/disks_and_volumes/#containerdisk-workflow-example

https://docs.harvesterhci.io/v1.4/vm/index/#adding-a-container-disk