[Linux-cluster] gnbd and caching
Benjamin Marzinski
bmarzins at redhat.com
Thu Jul 26 18:30:21 UTC 2007
On Thu, Jul 26, 2007 at 03:32:20PM +0200, Markus Hochholdinger wrote:
> Hi,
>
> Am Donnerstag, 26. Juli 2007 02:12 schrieb Benjamin Marzinski:
> > On Tue, Jul 24, 2007 at 05:34:16PM +0200, Markus Hochholdinger wrote:
> > > i'm running some standalone gnbd servers (option -c) and i'm wondering
> > > where the (read-)caching of the gnbd happens and when/how the cache will
> > > be emptied.
> > > As far as i understand it, the caching happens on the gnbd client. Is
> > > this correct?
> > No. On the gnbd client side, the device works just like every other block
> > device. When the device is closed, the cache is automatically flushed.
>
> so nothing on the gnbd-client side inside gnbd makes any caching. This is
> good.
>
>
> > > If so, when will the cache of the gnbd client be emptied? Will it be
> > > emptied if no one accesses the device? Or will it be cached until the
> > > device is reimported (removed and imported)?
> > > Are there other possibilities to clear the read cache? Are there
> > > possibilities to see how much data is cached (allocated memory of
> > > gnbd_recvd)? Or have i to look for linux page cache?
> > Like I said, the caching option has nothing to do with the client side.
> > GNBD acts just like any other block device.
> > The caching option does only one thing. I determines whether or not the
> > gnbd server daemon opens the exported block device with the O_DIRECT flag
> > or not.
>
> Ah, so this caching option is only relevant on the server. So if one gnbd
> client asks the server, it could serve data from the cache. If another
> gnbd-client asks the same server, it also could serve from the same cache. So
> as long as the exported block device will not change, my data would be
> konsistent.
> And if i access the block device from the gnbd client, the normal linux
> caching mechanismen will take place.
>
>
> > If the device is uncached, then the gnbd server will access the exported
> > device with O_DIRECT, which bypasses the cache. Otherwise, the gnbd server
> > will not use O_DIRECT, and use the page cache. If the exported device was
> > on a SAN, and being used by exported by multiple gnbd servers (which would
> > allow you to use dm-multipath for failover), you would want it uncached,
> > because otherwise changes on other machines might be missed, if you pulled
> > from cache. Also, if you were say, exporting part of an LVM volume, which
> > you were also using locally, you would want to be uncached. Otherwise would
> > have one cache on top of the exported device, and another cache (for the
> > same device) on top of the LVM volume.
>
> I think i understand it now. This gnbd caching thing is all about block device
> caching on the gnbd server, not on the gnbd client.
>
> If i access one exported block device from multiple gnbd clients with O_DIRECT
> my data will be konsistent.
> This means, if one gnbd client reads (O_DIRECT) data from a cached gnbd
> server, this data will be cached on the gnbd server. Then another gnbd client
> writes data on the same position. If now the first gnbd client reads again
> the same position, it will get the data written from the second client,
> because the gnbd server serves both clients from the same cache.
> Are am I correct?
Yes. All the clients use the same cache on the server, so if they open the gnbd device O_DIRECT, they will all see eachother's writes.
> Many thanks for your explanations.
>
>
> --
> greetings
>
> eMHa
> --
> Linux-cluster mailing list
> Linux-cluster at redhat.com
> https://www.redhat.com/mailman/listinfo/linux-cluster
More information about the Linux-cluster
mailing list