Fix OpenNebula save/restore
This commit is contained in:
@@ -28,7 +28,7 @@ Install OpenNebula. Then, on each node:
|
||||
|
||||
### oned.conf changes
|
||||
|
||||
1. Add deploy script override in kvm VM_MAD: add `-l deploy.vitastor` to ARGUMENTS:
|
||||
1. Add deploy script override in kvm VM_MAD: add `-l deploy.vitastor` to ARGUMENTS.
|
||||
|
||||
```diff
|
||||
VM_MAD = [
|
||||
@@ -49,6 +49,10 @@ Install OpenNebula. Then, on each node:
|
||||
]
|
||||
```
|
||||
|
||||
Optional: if you also want to save VM RAM checkpoints to Vitastor, use
|
||||
`-l deploy=deploy.vitastor,save=save.vitastor,restore=restore.vitastor`
|
||||
instead of just `-l deploy=deploy.vitastor`.
|
||||
|
||||
2. Add `vitastor` to TM_MAD.ARGUMENTS and DATASTORE_MAD.ARGUMENTS:
|
||||
|
||||
```diff
|
||||
@@ -141,6 +145,8 @@ The OpenNebula plugin includes quite a bit of bash scripts, so here's their desc
|
||||
| Script | Action | How to Test |
|
||||
| ----------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------ |
|
||||
| vmm/kvm/deploy.vitastor | Start a VM | Create and start a VM with Vitastor disk(s): persistent / non-persistent / volatile. |
|
||||
| vmm/kvm/save.vitastor | Save VM memory checkpoint | Stop a VM using "Stop" command. |
|
||||
| vmm/kvm/restore.vitastor| Restore VM memory checkpoint | Start a VM back after stopping it. |
|
||||
| datastore/clone | Copy an image as persistent | Create a VM template and instantiate it as persistent. |
|
||||
| datastore/cp | Import an external image | Import a VM template with images from Marketplace. |
|
||||
| datastore/export | Export an image as URL | Probably: export a VM template with images to Marketplace. |
|
||||
|
||||
@@ -49,6 +49,10 @@
|
||||
]
|
||||
```
|
||||
|
||||
Опционально: если вы хотите также сохранять снимки памяти ВМ в Vitastor, добавьте
|
||||
`-l deploy=deploy.vitastor,save=save.vitastor,restore=restore.vitastor`
|
||||
вместо просто `-l deploy=deploy.vitastor`.
|
||||
|
||||
2. Добавьте `vitastor` в значения TM_MAD.ARGUMENTS и DATASTORE_MAD.ARGUMENTS:
|
||||
|
||||
```diff
|
||||
@@ -144,6 +148,8 @@ iptables -I FORWARD 1 -s 10.0.3.0/24 -d 10.0.2.0/24 -j DROP
|
||||
| Скрипт | Описание | Как протестировать |
|
||||
| ----------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------ |
|
||||
| vmm/kvm/deploy.vitastor | Запустить виртуальную машину | Создайте и запустите виртуальную машину с дисками Vitastor: постоянным / непостоянным / волатильным (временным). |
|
||||
| vmm/kvm/save.vitastor | Сохранить снимок памяти ВМ | Остановите виртуальную машину командой "Остановить". |
|
||||
| vmm/kvm/restore.vitastor| Восстановить снимок памяти ВМ | Запустите ВМ после остановки обратно. |
|
||||
| datastore/clone | Скопировать образ как "постоянный" | Создайте шаблон ВМ и создайте из него постоянную ВМ. |
|
||||
| datastore/cp | Импортировать внешний образ | Импортируйте шаблон ВМ с образами дисков из Магазина OpenNebula. |
|
||||
| datastore/export | Экспортировать образ как URL | Вероятно: экспортируйте шаблон ВМ с образами в Магазин. |
|
||||
|
||||
@@ -5,7 +5,7 @@ set -e
|
||||
reapply_patch() {
|
||||
if ! patch -f --dry-run -l -R $1 < $2 >/dev/null; then
|
||||
already_applied=0
|
||||
if ! patch -l -f $1 < $2; then
|
||||
if ! patch --no-backup-if-mismatch -r - -l -f $1 < $2; then
|
||||
applied_ok=0
|
||||
echo "ERROR: Failed to patch file $1, please apply the patch $2 manually"
|
||||
fi
|
||||
|
||||
@@ -19,7 +19,7 @@ XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin"
|
||||
|
||||
while IFS= read -r -d '' element; do
|
||||
XPATH_ELEMENTS[i++]="$element"
|
||||
done < <($XPATH \
|
||||
done < <(cat | $XPATH \
|
||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VITASTOR_CONF \
|
||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/IMAGE_PREFIX)
|
||||
|
||||
@@ -35,3 +35,5 @@ SRC_IMAGE="${IMAGE_PREFIX}-sys-${VM_ID}-checkpoint"
|
||||
|
||||
exec_and_log "$CLI dd iimg=$SRC_IMAGE of=$FILE" "Error exporting checkpoint into from $SRC_IMAGE to $FILE"
|
||||
exec_and_log "$CLI rm $SRC_IMAGE" "Error removing checkpoint $SRC_IMAGE"
|
||||
|
||||
"$DRIVER_PATH"/restore $@
|
||||
|
||||
@@ -14,13 +14,16 @@ FILE=$2
|
||||
VM_ID=$4
|
||||
DS_ID=$5
|
||||
|
||||
rm -f "$FILE"
|
||||
"$DRIVER_PATH"/save $@
|
||||
|
||||
XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin"
|
||||
|
||||
unset i j XPATH_ELEMENTS
|
||||
|
||||
while IFS= read -r -d '' element; do
|
||||
XPATH_ELEMENTS[i++]="$element"
|
||||
done < <($XPATH \
|
||||
done < <(cat | $XPATH \
|
||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VITASTOR_CONF \
|
||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/IMAGE_PREFIX \
|
||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/POOL_NAME)
|
||||
@@ -39,7 +42,7 @@ fi
|
||||
|
||||
DST_IMAGE="${IMAGE_PREFIX}-sys-${VM_ID}-checkpoint"
|
||||
|
||||
exec_and_log "$CLI dd if=$FILE oimg=$DST_IMAGE" "Error importing checkpoint into $DST_IMAGE"
|
||||
exec_and_log "$CLI dd if=$FILE oimg=$DST_IMAGE conv=trunc" "Error importing checkpoint into $DST_IMAGE"
|
||||
exec_and_log "$RM -f $FILE" "Error removing checkpoint ($FILE)"
|
||||
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user