[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Mounting from multiple devices



Hi Eric,

Thank you for the quick response. I'm still pretty new to playing with filesystems
so thank you also for the information about clustered filesystems. I'll be looking 
into these for my use case.

So essentially, any synchronization for parallel clients would have to happen at
the filesystem layer -- NBD has no mechanisms in place for that, and simply
exports a raw block device. Is my understanding of that correct?

Thank you,
Gregor Haas

On Mon, Sep 14, 2020 at 12:34 PM Eric Blake <eblake@redhat.com> wrote:
On 9/14/20 11:03 AM, Gregor Haas wrote:
> Hi all,
>
> First off, thank you for developing NBD. I've really been enjoying using it
> recently - accessing raw block devices over a network fits very well into
> my various use cases.
>
> However, I've found some conflicting documentation about the _safety_ of
> accessing an exported block device from multiple clients. Notably, the
> sourceforge page (https://nbd.sourceforge.io/) states that "if someone has
> mounted NBD read/write, you must assure that no one else will have it
> mounted". In contrast, the documentation in the current Linux tree (
> https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/blockdev/nbd.rst)
> does omits this sentence, implying that it is okay for multiple clients to
> mount NBD read/write.
>
> Let's say I have an ext4 filesystem on an NBD. Is it safe for me to mount
> this filesystem on multiple clients?

No.  It is not safe to mount an ext4 image from parallel clients.  Ever.

There are some clustered filesystems that are designed to be network
safe, and can tolerate having multiple clients (whether one writer and
multiple readers, or even multiple writers), because the writers take
care to coordinate with each other before overwriting the same portion
of the shared storage (in fact, that shared access is _how_ clustered
filesystems are able to hand off control between which machine in the
cluster is currently serving storage).  But most non-clustered
filesystems (ext4 included) assume that they have exclusive control over
the block storage, and you can cause massive corruption if that
assumption doesn't hold because you mounted in parallel through a second
user.

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org


Reply to: