Skip to contentSkip to conversation

Concurrent write access

DISCUSSION Wolfgang Mader 3 participants 4 messages Jul 9, 2015 – Jul 17, 2015 Btrfs file system

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
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          |
#2 lore raw
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 on fire(*).

Hugo.

(*) Screaming, shouting, people running away, emergency services.

#3 lore raw
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]>