建立磁碟區
建立空白磁碟區
- UI
- API
- Terraform
標題區段
- 設定磁碟區
Name。 - (選用) 提供磁碟區的
Description。
基本設定分頁
- 在
Source中選擇New。 - 選擇現有的
StorageClass。 - 設定磁碟區的
Size。

-
如果所選 StorageClass 的副本計數為
1且磁碟區已連接到虛擬機器,則該虛擬機器被視為不可遷移。 -
當建立磁碟區時,它會從所選的
StorageClass複製相關參數到自身。如果你稍後變更StorageClass的參數,它不會回寫到磁碟區。
超大磁碟區
在 Harvester v1.5.0(使用 Longhorn v1.8.1)中,超大磁碟區(例如,大小為 999999 Gi)會被標記為 Not Ready 且無法刪除。
要解決此問題,請執行以下步驟:
-
暫時移除 PVC webhook 規則。
RULE_INDEX=$(kubectl get \
validatingwebhookconfiguration longhorn-webhook-validator -o json \
| jq '.webhooks[0].rules | map(.resources[0] == "persistentvolumeclaims") | index(true)')
if [ -n "$RULE_INDEX" -a "$RULE_INDEX" != "null" ]; then
kubectl patch validatingwebhookconfiguration longhorn-webhook-validator \
--type='json' \
-p="[{'op': 'remove', 'path': '/webhooks/0/rules/$RULE_INDEX'}]"
fi -
等待相關的 PVC 被刪除。
-
恢復 PVC webhook 規則以重新啟用驗證。
kubectl patch validatingwebhookconfiguration longhorn-webhook-validator \
--type='json' \
-p='[{"op": "add", "path": "/webhooks/0/rules/-", "value": {"apiGroups":[""],"apiVersions":["v1"],"operations":["UPDATE"],"resources":["persistentvolumeclaims"],"scope":"Namespaced"}}]'
此問題將在 Longhorn v1.8.2 中解決,該版本可能會包含在 Harvester v1.5.1 中。
相關問題:
- Harvester:Issue #8096
- Longhorn:Issue #10741
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
volume.beta.kubernetes.io/storage-provisioner: driver.longhorn.io
volume.kubernetes.io/storage-provisioner: driver.longhorn.io
name: my-vol
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
volumeMode: Block
volumeName: pvc-my-vol
在建立新磁碟區時,請勿使用 vmstate-persistence 和 longhorn-static StorageClass。vmstate-persistence 用於 TPM 和 UEFI 持久性,而 longhorn-static 用於管理現有的 Longhorn 磁碟區。
要使用 Harvester Terraform Provider 在 Harvester 上透過 Terraform 建立空白磁碟區,請定義一個 harvester_volume 資源區塊:
resource "harvester_volume" "empty-volume" {
name = "empty-volume"
namespace = "default"
size = "10Gi"
}
建立映像檔磁碟區
- UI
- API
- Terraform
標題區段
- 設定磁碟區
Name。 - (選用) 提供磁碟區的
Description。
基本設定分頁
- 在
Source中選擇VM Image。 - 選擇現有的
Image。 - 設定磁碟區的
Size。
從虛擬機器映像檔建立磁碟區時,請確保磁碟區大小大於或等於映像檔大小。如果設定的磁碟區大小小於底層映像檔的大小,磁碟區可能會損毀。這對於 qcow2 映像檔尤其重要,因為虛擬大小通常大於實體大小。
預設情況下,Harvester 會將磁碟區大小設定為映像檔的虛擬大小。

建立一個磁碟區,並使用來自命名空間 default 的映像檔 image-8rb2z 的內容進行初始化:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
harvesterhci.io/imageId: default/image-8rb2z
volume.beta.kubernetes.io/storage-provisioner: driver.longhorn.io
volume.kubernetes.io/storage-provisioner: driver.longhorn.io
name: foobar
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
storageClassName: longhorn-image-8rb2z
volumeMode: Block
volumeName: pvc-foobar
要使用 Terraform 在 Harvester 上建立磁碟區並使用映像檔的內容進行初始化,請定義一個 harvester_volume 資源區塊並設定 image 屬性:
resource "harvester_volume" "opensuse154-image-disk" {
name = "opensuse154-image-disk"
namespace = "default"
size = "10Gi"
image = harvester_image.opensuse154.id
}