Server snapshots and performance
Snapshots of your Webdock server are true snapshots in the sense that they capture an exact disk image at the time of snapshotting. Any running processes or contents in RAM are not captured however, and when you restore or provision a server from a snapshot, it will act as it was just rebooted.
Snapshots are not limited in size and will be of your entire server disk size. This means a server using a lot of disk space will take longer to snapshot. On our HDD servers we operate with an average of 50-100Mb/second snapshot efficiency. This means that a 50GB Webdock server at full capacity should take about 10 minutes.
Once snapshot, the snapshot needs to be synched from a secondary local drive to our remote storage backend so it's ready to be picked up for provisioning or restoration. This process usually operates at about 70-100Mb/second, but speeds may vary depending on network conditions and other factors. All told under optimum conditions a full 60GB image should complete in about 5 minutes (ssd) or 20 minutes (hdd) - but may take a while longer depending on current conditions. You can get an indication of how long a snapshot will take in the Webdock backend panel for snapshots, as there we list the last recorded snapshot duration as seen by our nightly snapshot job
Snapshots are not incremental
We do not do any incremental snapshotting. We always make 100% complete standalone duplicates of your entire server. We Keep It Simple as storage is cheap and plentiful these days. This makes snapshots extremely portable and keeps complexity to a minimum. If you have ever had to deal with a backup chain gone wrong, you might appreciate our philosophy.
We use zfs as our storage backend. The zfs filesystem is crazy awesome, but it is sensitive to data fragmentation. This means that if you have a server which creates many small files or has heavy database usage, the dataset will get fragmented over time. Fragmentation can have a dramatic effect on snapshot time, especially on HDD servers. Our LAMP and LEMP stacks have optimized defaults which should mitigate fragmentation caused by MySQL - but a busy site will inevitably become fragmented over time, which may result in slower snapshot times.
To mitigate this, we always first and foremost recommend provisioning SSD servers. Beyond that, we can actually defragment your server. The way this works is that we create a snapshot of your server, and then reload your server in-place. This involves downtime however, (about 10 seconds, or however long it takes your server to reboot) and the possibility of data going out of synch if you keep it running during the entire defrag operation.
If you would like to schedule defragmentation of your server, please be in touch with support.
Snapshots are nightly
Depending on the server location, we always schedule our daily and weekly snapshots to run at night between the hours of 01.00 and 05.00 in the local timezone. This is so we have as little impact on production websites as possible. As mentioned above, snapshotting means that we are reading from disk at full throttle and streaming the data to another drive and then to a remote storage backend. CPU impact is held to a minimum and will never reach more than 30-40% of total server CPU seconds (it is this high as we multithread-gzip the data as well).
The server will experience higher than usual I/O load which might impact your server performance. Usually a nightly snapshot of all servers on a host takes no more than 1-2 hours.
If you are worried about performance during nightly snapshotting, we recommend you provision an SSD server. If you experience degraded performance during night hours which is not compatible with what you are doing, please be in touch and we will find a placement for your server which provides the best possible performance for your use-case.
We hope that the awesome convenience of getting nightly backups of your server in its entirety is enough for you to excuse this minor inconvenience.
How we estimate snapshot time
Once we have backed up your system once, you will be able to see an estimated snapshot time on the Snapshots page for a server. This estimate is based on how long it actually took for us to take the nightly automated snapshot.
This estimate can vary from day to day based on whether you have added or deleted data from your server, disk I/O conditions at the time of snapshotting and as we include the time taken to synch the snapshot to our remote storage backend it will also depend on network conditions at the time.
If you create a snapshot yourself you can expect to see divergence from this estimate, but it should give you a fair idea of how long a snapshot should take. Sometimes snapshotting will be faster, sometimes it will be slower due to the factors mentioned above.