Concurrent write access
Hi,
I have a btrfs raid10 which is connected to a server hosting multiple virtual machine. Does btrfs support connecting the same subvolumes of the same raid to multiple virtual machines for concurrent read and write? The situation would be the same as, say, mounting user homes from the same nfs share on different machines.
Thanks,
Wolfgang
Quoted 7 lines · Wolfgang Mader
Hi,
I have a btrfs raid10 which is connected to a server hosting multiple virtual machine. Does btrfs support connecting the same subvolumes of the same raid to multiple virtual machines for concurrent read and write? The situation would be the same as, say, mounting user homes from the same nfs share on different machines.
It'll depend on the protocol you use to make the subvolumes visible
within the VMs.
btrfs subvolumes aren't block devices, so that rules out most of
the usual approaches. However, there are two methods I've used which I can confirm will work well: NFS and 9p.
NFS will work as a root filesystem, and will work with any
host/guest, as long as there's a network connection between the two. 9p is, at least in theory, faster (particularly with virtio), but won't let you boot with the 9p device as your root FS. You'll need virtualiser support if you want to run a virtio 9p -- I know qemu/kvm supports this; I don't know if anything else supports it.
You can probably use Samba/CIFS as well. It'll be slower than the
virtualised 9p, and not be able to host a root filesystem. I haven't tried this one, because Samba and I get on like a house on fire(*).
Hugo.
(*) Screaming, shouting, people running away, emergency services.
Signature · 4 lines
Hugo Mills | Alert status mauve ocelot: Slight chance of hugo@... carfax.org.uk | brimstone. Be prepared to make a nice cup of tea. http://carfax.org.uk/ | PGP: E2AB1DE4 |
Quoted 16 lines · On Thursday 09 July 2015 22:06:09 Hugo Mills wrote:
Quoted 7 lines · Wolfgang Mader
Hi,
I have a btrfs raid10 which is connected to a server hosting multiple virtual machine. Does btrfs support connecting the same subvolumes of the same raid to multiple virtual machines for concurrent read and write? The situation would be the same as, say, mounting user homes from the same nfs share on different machines.
It'll depend on the protocol you use to make the subvolumes visible
within the VMs.btrfs subvolumes aren't block devices, so that rules out most of
the usual approaches. However, there are two methods I've used which I can confirm will work well: NFS and 9p.
Quoted 6 lines
NFS will work as a root filesystem, and will work with any
host/guest, as long as there's a network connection between the two. 9p is, at least in theory, faster (particularly with virtio), but won't let you boot with the 9p device as your root FS. You'll need virtualiser support if you want to run a virtio 9p -- I know qemu/kvm supports this; I don't know if anything else supports it.
Thanks for the overview. It it qmeu/kvm in fact, to this is an option. Right now, however, I connect the discs as virtual discs and not the file system, but only to one virtual machine.
Best,
Wolfgang
Quoted 8 lines
You can probably use Samba/CIFS as well. It'll be slower than the
virtualised 9p, and not be able to host a root filesystem. I haven't tried this one, because Samba and I get on like a house onfire(*).Hugo.
(*) Screaming, shouting, people running away, emergency services.
Quoted 17 lines · Wolfgang Mader
Quoted 11 lines · On Thursday 09 July 2015 22:06:09 Hugo Mills wrote:
Quoted 9 lines · Wolfgang Mader
Hi,
I have a btrfs raid10 which is connected to a server hosting multiple virtual machine. Does btrfs support connecting the same subvolumes of the same raid to multiple virtual machines for concurrent read and write? The situation would be the same as, say,
mounting user homes from the same nfs share on different machines.Quoted 4 lines
It'll depend on the protocol you use to make the subvolumes
visible
within the VMs.
Quoted 5 lines
Thanks for the overview. It it qmeu/kvm in fact, to this is an option. Right
now, however, I connect the discs as virtual discs and not the file system,
but only to one virtual machine.
btrfs is *not* a cluster filesystem, so one key thing it does not support is having the same block device being mounted by multiple computers at the same time (doesn't matter if they're hardware or virtual machines).
Note that all the subvolumes on a btrfs filesystem share some core data structures, so mounting different subvolumes is not a way to work around this limitation.
If you mount the filesystem on the host machine then use a network protocol (like nfs,samba,9p mentioned earlier), everything will be ok.
If you actually want to mount a filesystem from the same block device on multiple VMs, you'll have to look into using a specially-designed cluster filesystem like OCFS or GFS.
Signature · 1 line
Calvin Walton <[email protected]>