ZFS snap management in ESXi via SOAP
I came up with the idea of AiO (ESXi server with virtualized ZFS/NFS
storage and VMs on NFS and pass-through storage hardware) around 2010.
This was the first stable ZFS storage solution based on (Open)Solaris or
a lightweight minimalistic OmniOS. Others copied the idea based on
Free-BSD or Linux.
From the beginning ZFS snaps offered a huge advantage over ESXi snaps
as they can be created/destroyed without delay and initial space
consumption. Even thousands of snaps are possible while ESXi snaps are
limited to a few shorttime ones. Combined with ZFS replication a high
speed backup or copy/move of VMs is ultra easy. That said, there is a
problem with ZFS snaps and VMs as the state of a ZFS snap is like a
sudden powerloss. There is no guarantee that a VM in a ZFS snap is not
corrupted.
In napp-it I included an ESXi hotsnap function to create a save ESXi
snap prior the ZFS snap followed by a ESXi snap destroy. This includes
an ESXi snap in every ZFS snap with hot memory state. After a VM restore
from an ZFS snap you can go back to the safe ESXi snap. Works perfectly
but handling is a little complicated as you need ssh access to access
esxcli. Maybe you have asked yourself if there is no easier way and
there is one via the ESXi SOAP api similar to the ESXi web-ui.
Thomas just published a small interactive Perl script for easy ESXi web
management via SOAP. It even works with ESXi free, see
https://www.hardwareluxx.de/community/threads/esx-esxi-hilfethread.748644/page-290#post-29758517
1. install (missing) Perl modules
perl -MCPAN -e shell
notest install Switch
notest install Net::SSLeay
notest install LWP
notest install LWP::protocol::https
notest install Data::Dumper
notest install YAML
exit;
complete list of needed modules:
Switch
LWP::UserAgent
HTTP::Request
HTTP::Cookies
Data:: Dumper
Term::ANSIColor
YAML
LIBSSL
Net::SSLeay
IO::Socket::SSL
IO::Socket::SSL::Utils
LWP::protocol::https
Howto:
Update napp-it to newest 23.dev where the script is included
example: list all datastores
perl /var/web-gui/data/napp-it/zfsos/_lib/scripts/soap/VMWare_SOAP.pl
list_all_datastores --host 192.168.2.48 --user root --password 1234
Attached Datastores "63757dea-d2c65df0-3249-0025905dea0a"
Attached Datastores "192.168.2.203:/nvme/nfs"
example: list VMs:
perl /var/web-gui/data/napp-it/zfsos/_lib/scripts/soap/VMWare_SOAP.pl
list_attached_vms --host 192.168.2.48 --user root --password
1234--mountpoint /nvme/nfs --mounthost 192.168.2.203
Attached VM ID "10" = "solaris11.4cbe"
Attached VM ID "11" = "w2019.125"
Attached VM ID "12" = "oi10.2022"
Attached VM ID "14" = "w11"
Attached VM ID "15" = "ventura"
Attached VM ID "16" = "danube"
Attached VM ID "9" = "omnios.dev.117"
example: create snap
perl /var/web-gui/data/napp-it/zfsos/_lib/scripts/soap/VMWare_SOAP.pl
create_snapshot --host 192.168.2.48 --user root --password
1234--mountpoint /nvme/nfs --mounthost 192.168.2.203 --vm_id 9
--snapname latest --mem yes --quiesce yes --snapdesc latest
example: list (latest) snap
perl /var/web-gui/data/napp-it/zfsos/_lib/scripts/soap/VMWare_SOAP.pl
list_snapshot --host 192.168.2.48 --user root --password 1234 --vm_id 9
I will use the script to work together with a normal autosnap job in a
future napp-it. Up to then you can create a jobid.pre (ex 123456.pre) in
/var/web-gui/_log/jobs/ with a script to create the ESXi snap and a
jobid.post to destroy the ESXi snap after it was included in the ZFS snap.
--
Guenther Ernst Alka
Dipl. Ing (FH)
Rektor-Klaus Str.71
73525 Schw. Gmünd
tel 07171 931393
------------------------------------------
illumos: illumos-discuss
Permalink:
https://illumos.topicbox.com/groups/discuss/Tddd718ace06ffae8-Mc4f90c4e5456fc4d409abbc6
Delivery options: https://illumos.topicbox.com/groups/discuss/subscription