Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restore lvm backups on brtfs? #166

Closed
tlaurion opened this issue Jun 26, 2023 · 5 comments
Closed

Restore lvm backups on brtfs? #166

tlaurion opened this issue Jun 26, 2023 · 5 comments
Labels
documentation question Further information is requested

Comments

@tlaurion
Copy link

Asking this wishing for a "yes, possible" in the goal of restoring 4.1 templates and vms backuped from 4.1 in lvm mode into 4.2 into brtfs. Seems like the issues related to perf won't be fixed soon (4k templates etc) where BTRFS just gets a perf boost on 4.2 by default.

Any insights on how/if that is possible @tasket ?

@tasket
Copy link
Owner

tasket commented Jun 27, 2023

@tlaurion Its certainly possible now with extra steps taken by the user.

The only issue I'm aware of is (in the context of a system like Qubes) the volume names will differ almost completely. OTOH, for non-Qubes systems this may not pose any problem at all and volumes might be sent and received without changing volume names, depending on the admin's preferred storage arrangements.

Let's say you have a Qubes reflink storage pool at '/mnt/btrfs/libqubes' and the dirs 'appvms' and 'vm-templates' are directly under that. In this case you almost certainly want to make '/mnt/btrfs/libqubes' a Btrfs subvolume and use that path for wyng --local. Volumes names, therefore, will be relative to that local path much the same way they are relative to an LVM volume group. The only difference is that subdirs are inevitable, and Wyng must accommodate them in the volume names.

Hence...

# wyng list

Volumes:
 appvms/banking/private.img
 appvms/dev/private.img
 appvms/personal/private.img
 appvms/root-backup/private.img
 appvms/untrusted/private.img
 vm-templates/d11-kde/private.img
 vm-templates/d11-kde/root.img

If we want to restore banking from this archive into an LVM thin pool, we can either create the thin volume manually and then use wyng --save-to receive, or do a wyng rename appvms/banking/private.img vm-banking-private before running wyng receive. You can't receive the Btrfs volume directly to LVM if its name contains symbols like '/' because LVM doesn't support paths. (Also, there may be unicode chars in the volume name, which LVM also can't handle.)

Going in the opposite direction LVM to Btrfs: You can also rename before receiving, or you have the option of receiving directly using the LVM name and then doing mv /mnt/btrfs/libqubes/vm-banking-private /mnt/btrfs/libqubes/appvms/banking/private.img.

There is also a minor issue with permissions; Wyng currently can only preserve owner read/write status when going between LVM and reflink, but it will do this automatically.


The short answer is: Yes. It boils down to the difference in volume names. And I've already done that type of restoration between different pool types with Wyng; One must simply know the paths used by the different Qubes pool types and rename accordingly.


As for questions about making this work nicely under the VM concept directly, this will have to be addressed with wyng-util-qubes and the like. Wyng itself only recognizes VMs as communication conduits.

@tasket tasket added question Further information is requested documentation labels Jun 27, 2023
@tasket
Copy link
Owner

tasket commented Jun 29, 2023

BTW, I think Btrfs has improved a lot but it still might be sub-optimal compared with XFS, which has less overhead than Btrfs but still supports reflinks. My understanding is there may still be a big difference in write amplification between the two.

@tlaurion
Copy link
Author

@tasket is there advancement I'm not aware of?

@tasket
Copy link
Owner

tasket commented Jun 29, 2023

@tlaurion Btrfs has a series of very substantial speed improvements in the kernel versions 6.1, 6.2, and 6.3. These have been available in Qubes 4.1 via the 'kernel-latest' package. I think Qubes 4.2 is starting out with kernel 6.1 or 6.2 IIRC.

@tasket
Copy link
Owner

tasket commented Apr 25, 2024

Implemented in wyng-util-qubes.

@tasket tasket closed this as completed Apr 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants