Fix OpenNebula save/restore
This commit is contained in:
@@ -28,7 +28,7 @@ Install OpenNebula. Then, on each node:
|
|||||||
|
|
||||||
### oned.conf changes
|
### 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
|
```diff
|
||||||
VM_MAD = [
|
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:
|
2. Add `vitastor` to TM_MAD.ARGUMENTS and DATASTORE_MAD.ARGUMENTS:
|
||||||
|
|
||||||
```diff
|
```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 |
|
| 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/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/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/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. |
|
| 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:
|
2. Добавьте `vitastor` в значения TM_MAD.ARGUMENTS и DATASTORE_MAD.ARGUMENTS:
|
||||||
|
|
||||||
```diff
|
```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/deploy.vitastor | Запустить виртуальную машину | Создайте и запустите виртуальную машину с дисками Vitastor: постоянным / непостоянным / волатильным (временным). |
|
||||||
|
| vmm/kvm/save.vitastor | Сохранить снимок памяти ВМ | Остановите виртуальную машину командой "Остановить". |
|
||||||
|
| vmm/kvm/restore.vitastor| Восстановить снимок памяти ВМ | Запустите ВМ после остановки обратно. |
|
||||||
| datastore/clone | Скопировать образ как "постоянный" | Создайте шаблон ВМ и создайте из него постоянную ВМ. |
|
| datastore/clone | Скопировать образ как "постоянный" | Создайте шаблон ВМ и создайте из него постоянную ВМ. |
|
||||||
| datastore/cp | Импортировать внешний образ | Импортируйте шаблон ВМ с образами дисков из Магазина OpenNebula. |
|
| datastore/cp | Импортировать внешний образ | Импортируйте шаблон ВМ с образами дисков из Магазина OpenNebula. |
|
||||||
| datastore/export | Экспортировать образ как URL | Вероятно: экспортируйте шаблон ВМ с образами в Магазин. |
|
| datastore/export | Экспортировать образ как URL | Вероятно: экспортируйте шаблон ВМ с образами в Магазин. |
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ set -e
|
|||||||
reapply_patch() {
|
reapply_patch() {
|
||||||
if ! patch -f --dry-run -l -R $1 < $2 >/dev/null; then
|
if ! patch -f --dry-run -l -R $1 < $2 >/dev/null; then
|
||||||
already_applied=0
|
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
|
applied_ok=0
|
||||||
echo "ERROR: Failed to patch file $1, please apply the patch $2 manually"
|
echo "ERROR: Failed to patch file $1, please apply the patch $2 manually"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin"
|
|||||||
|
|
||||||
while IFS= read -r -d '' element; do
|
while IFS= read -r -d '' element; do
|
||||||
XPATH_ELEMENTS[i++]="$element"
|
XPATH_ELEMENTS[i++]="$element"
|
||||||
done < <($XPATH \
|
done < <(cat | $XPATH \
|
||||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VITASTOR_CONF \
|
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VITASTOR_CONF \
|
||||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/IMAGE_PREFIX)
|
/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 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"
|
exec_and_log "$CLI rm $SRC_IMAGE" "Error removing checkpoint $SRC_IMAGE"
|
||||||
|
|
||||||
|
"$DRIVER_PATH"/restore $@
|
||||||
|
|||||||
@@ -14,13 +14,16 @@ FILE=$2
|
|||||||
VM_ID=$4
|
VM_ID=$4
|
||||||
DS_ID=$5
|
DS_ID=$5
|
||||||
|
|
||||||
|
rm -f "$FILE"
|
||||||
|
"$DRIVER_PATH"/save $@
|
||||||
|
|
||||||
XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin"
|
XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin"
|
||||||
|
|
||||||
unset i j XPATH_ELEMENTS
|
unset i j XPATH_ELEMENTS
|
||||||
|
|
||||||
while IFS= read -r -d '' element; do
|
while IFS= read -r -d '' element; do
|
||||||
XPATH_ELEMENTS[i++]="$element"
|
XPATH_ELEMENTS[i++]="$element"
|
||||||
done < <($XPATH \
|
done < <(cat | $XPATH \
|
||||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VITASTOR_CONF \
|
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VITASTOR_CONF \
|
||||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/IMAGE_PREFIX \
|
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/IMAGE_PREFIX \
|
||||||
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/POOL_NAME)
|
/VMM_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/POOL_NAME)
|
||||||
@@ -39,7 +42,7 @@ fi
|
|||||||
|
|
||||||
DST_IMAGE="${IMAGE_PREFIX}-sys-${VM_ID}-checkpoint"
|
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)"
|
exec_and_log "$RM -f $FILE" "Error removing checkpoint ($FILE)"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
Reference in New Issue
Block a user