You are not logged in.
O.K., we have another client with this issue. Nonetheless they cannot reboot their host and we believe this to have to do with page cache.
Could you please run
hash -rAnd try again.
In case this fails a reboot may be required to fix the issue. What we mean by that is that it should be the following step.
Yes, sorry that was a typo from our part, it somehow got there with the cut&paste.
It's not the restore that's failing.
Totally puzzling. You run the very same command on --backup and it works, then you run it from the command line and it fails with an error that states the client can't regognize the RSA key format.
Whether you aren't using the same keys or you have some fairies playing inside your ESXi box.
I think it's time for you to use some compatible target device.
We really don't know what you are trying to do.
You have removed part of our original command from your post.
Our original proposed command
ssh -vvv -p22 -o ConnectTimeout=30 -o PasswordAuthentication=no -o ChallengeResponseAuthentication=no -o PreferredAuthentications=publickey -o StrictHostKeyChecking=no -i xsibackup_id_rsa admin@nasponte "date"Yours: the remote command 'date' is missing, you changed it by a 'ls' command. We were trying to determine whether the date binary was there and whether it was returning something.
ssh -vvv -p22 -o ConnectTimeout=30 -o PasswordAuthentica
tion=no -o ChallengeResponseAuthentication=no -o PreferredAuthentications=publickey -o StrictHostKeyChecking=no -i xsibackup_
id_rsa admin@192.168.2.49 -2 "ls /share/Storage/vmimages/SERVER-INT/20210413085226/SERVER-INT"Replacing the ESXi 5.5 ssh client with 6.5's is out of the scope of the support we can offer you.
[b]You haven't even clearly stated so far what kind of system you are trying to connect to.[/b]
The .vmx file is obviously .vmx.map, the files are deduplicated. You are restoring from a deduplicated repository where the files are represented by their corresponding hashmaps.
[b]Excerpt:[/b]
- You are able to write data to the remote FS, thus SSH is working indeed.
- You are kicked off with a "permission denied" message when you try to restore.
- That very same command is executed remotely when you run the backup and must be printed out in your backup output (we don't know you didn't post it).
- The only difference is that the backup SSH tunnel is openned with a user cipher list while the date probe is run via autonegotiation.
Run this with the original 5.5 SSH client (we added the same user cipher list as in the backup, which is in turn the list you can find at the etc/xsibackup.conf file):
ssh -vvv -p22 -c "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc
ssh_ciphers=auto" -o ConnectTimeout=30 -o PasswordAuthentication=no -o ChallengeResponseAuthentication=no -o PreferredAuthentications=publickey -o StrictHostKeyChecking=no
-i xsibackup_id_rsa admin@192.168.2.49 "date"This is really puzzling, we couldn't find out what's going on without revising that unknown system, we can't offer you to do that for you though.
There's somthing wrong in your command's output:
ssh -vvv -p22 -o ConnectTimeout=30 -o PasswordAuthentication=no -o ChallengeResponseAuthentication=no -o PreferredAuthentications=publickey -o StrictHostKeyChecking=noThe server doesn't seem to be recognizing the key format. Not any firmware based in Linux is compatible by default. You have to decide up to which point it is worth for you trying to configure such device instead of using some Linux distro which will work out of the box.
You must not use this syntax to backup a VM
/scratch/XSI/XSIBackup-DC/xsibackup --backup /vmfs/volumes/datastore1/SERVER-INT/ admin@192.168.2.49:22:/share/Storage/vmimages/SERVER-INTBut this:
/scratch/XSI/XSIBackup-DC/xsibackup --backup "VMs(SERVER-INT)" admin@192.168.2.49:22:/share/Storage/vmimages/SERVER-INT(c)XSIBackup is agnostic in regards to the network topology.
It does use SSH to connect to other hosts, namely: it will create a tunnel by connecting to some remote IP.
It is the routing table that will decide which interface is used to connect to each network address.
[url=https://kb.vmware.com/s/article/2001426]Configure static routes in (c)ESXi[/url]
BTW: do not forget to update (c)XSIBackup to the end of branch version, which is more stable and bug free.
Yes, there is a regexp option and you can use any expansion or variable in the command line, although the --backup-point option does not exist, now the target is passed by position: 1st arguments is action, 2nd argument is source and 3rd is target, the rest of the options follow in any order.
(c)XSIBackup has been designed to work on (c)ESXi and Linux. NAS firmware is frequently built on Linux, still, it's firmware, and has not been designed to allow an administrator to tweak it to his needs, on the contrary, it's specially designed to prevent that.
That said:
In your case you have been able to exchange the admin user key and (c)XSIBackup is able to access its profile and detect the key there. Nonetheless that very same user is being denied access to [b]/share/Storage/vmimages/SERVER-INT/20210408121629/[/b]
We have to recognize our message is a bit misleading
[b]
Server 192.168.2.49:22 is not linked by public key
[/b]
We are just trying to grab attention here to the most common scenario, maybe confounding some users in other cases, we'll revise it.
The exact message from OpenSSH is printed though, which is: [b]permission denied (publickey,password,keyboard-interactive)[/b] and is self explanatory.
If you want more detailed information on the error, although in this case it seems clear that it's just a permission issue on the folder, you can run some ssh command manually using the very same key trying to grab something from that dir and adding -vvv to the ssh client to get extended verbosity. Something like (from the (c)XSIBackup installation dir):
ssh -vvv -i xsibackup_id_rsa admin@nasponte "cat /share/Storage/vmimages/SERVER-INT/20210408121629/*.vmx" | cat > /tmp/your-vm.vmxUPDATE1:
Although the manual test will shed some light on the issue, we'll revise the specific logic of the --restore command, as there's obviously some difference between them.
UPDATE2:
This is the exact command, translated to the ssh command line that is causing your issue. Run it and post the output (again, from the installation dir).
ssh -vvv -p22 -o ConnectTimeout=30 -o PasswordAuthentication=no -o ChallengeResponseAuthentication=no -o PreferredAuthentications=publickey -o StrictHostKeyChecking=no -i xsibackup_id_rsa admin@nasponte "date"One of the early probes on the remote system is to simply get the remote date. For some strange reason it's failing for you.
When you run the command from the GUI you do run the exactly same job than when you do so from the command line, it's just invoked indirectly.
The thing is that a command used to detect the state of the VM returns NULL, which is awkward, it could maybe be due to the operation timing out.
Run this command (where VMID is the numeric ID of your VM) and post what it returns, we will take a closer look at your issue, we haven´t been able to reproduce it so far though. Anybody else experiencing the same issue, please report.
vim-cmd vmsvc/power.getstate VMIDThis issue was solved in 1.4.3.3
Thank you for your detailed explanation and pointing to the solution.
If you accumulated a huge repository (you didn't say what its size is) and you want to perform the most intensive operation on it, namely: --prune, the (c)ESXi shell resources might not be enough.
It's not only he amount of memory you may need to perform the pruning, its also that doing so from the (c)ESXi shell on, let's say an NFS DS, will add the network latency, which is not very recommendable as will just contribute to make things much slower.
The best way to use (c)XSIBackup is to prepare some compatible Linux backup server, to be used as a local DS or as a pure IP backup device, the second is the best option as things will work faster due to part of the CPU load being assumed by the server side.
Then use the backup server to prune, mount the .vmdk files or to perform granular restores. You will have the whole system at your finger tips, while in the (c)ESXi shell you are in a propietary cut down environment which has its limits.
[b]Important considerations:[/b]
Think corporate. What we mean by that is: why would you want to prune some repository?
What you should do is to, first of all archive your old repositories to keep a historic set of your VMs. And never prune a repository whithout having kept a copy of it. Pruning is a destructive operation: to delete each redundant block, (c)XSIBackup has to traverse the whole set looking for it, then physically delete it from the underlying disk.
Should something go wrong, like memory corruption or a disk fail, you may delete some block that you do not want to delete. That would yield the VMs sharing that block unusable.
From a usage perspective it's easy to recover from that loss, you just have to --repair the repo and perform an additional backup on it, thus the next round will skip all the preexisting blocks and add the new, so you will still keep the bulk of the data.
Still, from a recovery perspective, you may put yourself in a situation in which you can't recover some good number of VMs in the past.
So, be conservative with your backups and don't get us wrong, we do prune our repos, we always keep redundant data though.
We have successfully tested [b]1.5.0.0[/b] with up to [b]ESXi-7.0U1d-17551050[/b]. We will run more thorough tests before announcing compatibility with these latest releases. ESXi U2 will still take some weeks.
Thus, your issue must be related to some particular circumstance. Please, offer us more details to try to determine the possible cause.
Maybe some special characters in the name of the VM?
Since you are backing up to different folders, there isn't any possibility to mess it up.
There isn't any reason why it shouldn't work, as both hosts have their own backup folder.
Some newer builds may introduce changes that (c)XSIBackup has not been prepared to handle. Being able to perform a backup is not enough, as (c)XSIBackup depends on the metadata associated to the VM. Perform thorough tests: backup, restore, replicate, before setting up any production scheme.
It takes us some time to revise and test our software with newer builds as they are released, if you go ahead of us, you are plainly being the first to cross on thin ice. We never lose the chance to state this, nonetheless some of you are too eager to use newer (c)ESXi releases.
It's O.K. to test new releases on test labs, nonetheless, for goodness sake, always use well tested software in production and if you decide to use the very latest release, at least perform thorough tests before jumping out of the plane.
We can't tell by reading the output. (c)XSIBackup-Pro Classic is a script, please debug it, it's very easy, you have the event handling code at the end of the main script.
We haven't still announced compatibility with that (c)ESXi build. Latest tested build is [b]ESXi-7.0bs-16321839-standard[/b]. Please try not to use latest version in production. There aren't generally big changes from one version to the next, but you never know, we might need to address some change in the way (c)ESXi behaves.
In fact latest (c)ESXi builds have introduced some further read locks on the VM files that make (c)XSIBackup generate invalid backup files.
Please beware of using some of the latest (c)ESXi 7.0 builds without consulting us first or trying replicas and restores throughly before using, as you may be generating invalid backup files.
We will publish a compatibility list later this week.
(c)XSIBackup is a command line tool, thus, apart from the built-in arguments and options you have all the available bash tools to help you achieve your goal.
The below code will return a list of all your available VMs
vim-cmd vmsvc/getallvms | awk -F '[' '{print $1}' | awk '{print $2}'You can filter them with grep regexp below
vim-cmd vmsvc/getallvms | awk -F '[' '{print $1}' | awk '{print $2}' | awk '{print $2}' | grep -E "^free"Then just change the new line characters by commas, only in case you happen to have more than one VM in your list.
vim-cmd vmsvc/getallvms | awk -F '[' '{print $1}' | awk '{print $2}' | awk '{print $2}' | grep -E "^free" | sed -e ':a;N;$!ba;s/\n/,/g'Finally use the above expression to select your desired VMs and pass them to the --backup-vms argument
MYVMS="$( vim-cmd vmsvc/getallvms | awk -F '[' '{print $1}' | awk '{print $2}' | awk '{print $2}' | grep -E "^free" | sed -e ':a;N;$!ba;s/\n/,/g' )";./xsibackup --backup-point=/vmfs/volumes/datastore1/backup --backup-type=custom --backup-vms="$(MYVMS)"This is about the same than our REGEXP function does, you keep control on what's going on though.
Well, that could considered a bug. Classic versions will not be maintained any more though. You can nonetheless edit the main xsibackup file and easily modify the --on-error behaviour, it's at the end of the bash script. Just look for the --on-error string.
We could very easily make (c)XSIBackup take a snapshot on a stopped or suspended VM too, or even make it a configurable thing. We are just setting some basic thing: "the rules of the game are not going to change amidst a backup cycle", which is, from our perspective, something not only reasonable but desirable in a hypervisor meant to run servers.
Thus, our software is perfectly able to do what you want. Just keep your VMs on at all time. That way you will follow the basic and most simple rule: not changing the VM state in the middle of a backup job. You will be able to use it while it's being backed up without any problem.
What you are claiming is something totally different which has nothing to do with the ability to perform hot backups, namely: [b]being able to change the state of a VM in the middle of a backup[/b].
And the answer to that statement is very simple and straight: [b]no, we don't offer that feature nor do we pretend to[/b].
Would it be interesting to offer it?: well, that would be a difficult rethoric question to give an answer to. I guess there should be a previous question to place ourselves first: is there some good reason for it?, is there some significant number of users asking for that feature? or at least some case scenario or common situation in which that would be useful.
This case falls outside what we consider "reasonable procedures". Backups are based on snapshots, you need a way to freeze the VM so that you aren't copying data from a disk that is in turn being written to. Snapshots is one of the techniques to produce consistent backups, from our point of view it's the best one and that's why we use it.
If you suspend a VM you make a copy of its memory contents to a file and you suspend -may you allow the repetition- the I/O operations on the VM. Then you tell (c)XSIBackup to perform a backup on it. (c)XSIBackup sees the VM is suspended and I/O operations are suspended too, thus it sees no reason to take a snapshot, as the VM is already in a frozen state.
Then you change the rules of the game in the middle of a backup and decide to turn the VM on. You haven't taken a snapshot though, thus the host service tries to access some files which are in turn already open by (c)XSIBackup and you get an error saying that you can't access those files.
Something similar would happen if you try to turn on a VM which is being replicated to or if you try to copy a folder from a VM that is switched on.
Forgive us for being a bit sardonic on this question: this is the equivalent to trying to get down of a car without having stopped it first.
All routines have been thought to be as crash consistent as they can be. Per instance: blocks are copied over as a temp buffer and only once the transfer process is confirmed to have finished well, they are put in place with an atomic system call.
The new blocks are only added to the general .blocklog manifest once the full (1)backup process has finished. They are added to the file manifest (.map files) on a per file basis. Thus, if some backup is interrupted, the blocks will be copied again on any subsequent backup, as if they didn't exist, unless you run some --repair argument in the backend, which would account the blocks on the partial files to the .blocklog file and eventually save you some time.
All this operations follow rule of thumb logic, that is: if some block can't be completely transferred, it will not appear as a file in the data folder as part of the block structure. If it is not present in the data folder, it will not be considered by the --repair process.
You have the --check action to allow you to check the data block structure at different levels: file exists or file exists and its checksum matches the name of the block.
In regards to the --replica action. It writes data to the same file on the backend. In case anything would go south, you would get warnings and errors at different levels: 1/ the block transfer, 2/ the final checksum (number of bytes transferred).
By "reductio ad absurdum" logic: the possibility that a block is transferred wrongly while not getting an error on any of those two levels of check is extremely low, not to say despicable.
In case some replica is altered or damaged, you can use the --check action on it, which consists in checking every constituent block and rewriting the correct checksum to the corresponding .blocklog file. Thus next time a --replica is performed on the remote mirrored image the blocks which checksum doesn't match will be updated.
You could still suffer from silent corruption on the disk side. This is infrequent and tends to be much more frequent as read errors than writes. You should rely on your SMART utilities to be safe from that kind of problems.
Still there's room for more refinements and additional checks on the data and that's what we are planning on doing as our software evolves.
This post is in French, nonetheless you can easily translate it keeping 99% of accuracy
It should allow you to have an overview of how to enable the root user on different DSM versions
[url=https://www.synology.com/fr-fr/knowledgebase/DSM/tutorial/General_Setup/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet]Enable the Synology root user in different DSM versions[/url]
You are probably right, we are trying to make the manual as concise and practical as possible, many users don't even read it.
We will inlclude this kind of information in an appendix once we have reached a final stable phase at the end of branch 1.5 (which is about to be launched). Right now the evolution of the software is very fast and some things as: whether this information should be printed out or not is still under discussion and may be subject to change.
It does not affect your backups or restores in any way though.
You have two type of exclussions there:
1 - [b]open excluded[/b]: this are open files that can't be copied due to that they are being accessed by the host. They are not part of the backup, they aren't needed and that line is jus informative. Maybe we should simply hide those lines to avoid confusion, but then some users would wonder why those files are being skipped.
2 - [b]skipped excluded[/b]: this are files that are skipped by the backup process. They are mainly the files that compound the current snapshot the VM is running on, namely: the backup snapshot. The backup snapshot files can't be copied, because those are the files that the VM is using to store the new blocks of data produced by the VM during the backup. They are later commited to disk once the backup is over.
Of course the VM will be restored to the state it was when the backup snapshot was taken. Depending on the (c)ESXi version and the number of previous snapshots present, you will be able to produce different types of backups: with previous snapshots, without them. That is a subject for a different post though.
(c)Synology has been drifting away and making its DSM OS more and more closed and propietary. Up until not so long ago you were still able to use the root user over SSH. In fact they started by limiting SSH access to the root user while prohibiting any other user from accessing via SSH.
Now they seem to have taken some additional turn, we'll investigate this and if that is the case we'll remove the Synology compatibility notice and update the warning on the related posts.
This doesn't mean that you can't make (c)Synology work with (c)XSIBackup. Just as long as you can exchange keys and access via SSH with some user you will be able to. It will nonetheless require you to:
1 - Know how to exchange SSH keys manually in the worst of the cases. This is conceptually fairly simple (see above answer), just add the public key of your frontend (c)ESXi host to the [b]authorized_keys[/b] file of the Synology DSM user you will be employing over SSH.
2 - Know where the .ssh profiles are stored. This is configurable in DSM. You normally store them in /volume1/homes, it could be anywhere else though.
3 - Use the --home-path argument from (c)XSIBackup to point to the place where the authorized_keys file is.
In a typical DSM setup you would have your admin user's authorized_keys file here:
/volume1/homes/admin/.ssh/authorized_keysThen use the above bash code snippet or use the --add-key argument along with the --home-path option.
Once you have added the public SSH key you just have to check whether the key exchange authentication is working by issuing something like the following:
ssh -i xsibackup_id_rsa user@a.b.c.d "date"Where the xsibackup_id_rsa is the private key. You should see the date printed out.
Now you just need to make sure that the user you will be employing has execute permissions on the /bin/xsibackup binary, the /var/log/xsi and /etc/xsi folders and off course on the folder where you will be storing your backups and replicas.
Given that on (c)Synology the admin user is the most privileged one, this last phase should be quite straight.