Print

Print


hi Andrew,

with respect, I think you're slightly overegging the pudding in the
opposite direction.

The issue I had understanding the documentation is that the oss.spaces
configuration description never says anything about the "path" needing
to be writable on the actual system filesystem (outside of the spaces
directories themselves).
This is easily fixed by adding something like:

"Even if you are using oss.spaces, the xrootd server will still need
write access into the system filesystem in the paths that are accessed
via the server. (These are used as mappings from the filesystem
namespace into the spaces themselves.) As a result, you may need to
set oss.localroot, depending on the paths exported, and your system
configuration."

to the oss.spaces entry.

Sam

On Thu, 14 Nov 2019 at 23:19, Andrew Hanushevsky
<[log in to unmask]> wrote:
>
> Hi Sam,
>
> I suppose it isn't explicitly documented because we didn't think the
> implementation mattered at the level of what the config directves do.
>
> a) You create arbitrary partitions and provide a space name for each.So,
> you have lost of multiple oss.space directives.
>
> b) After that you don't have to do much of anything. In fact, technically,
> you don't need local root as it defaults to a simple '/' (I know Matevz
> said you need one but was ony because of his particular space arrangement
> - see below).
>
> The issue really here is that you had a bunch of "data" spaces but no
> "meta" space. It would apear that you wanted anything that wasn't "data"
> to be defaulted to "localroot". There is no general way to do that when
> the allocator specifies a named space. You can only do it this way if you
> can differentate spaces by path.
>
> So, if the cinfo files always go into a distinguished path like
> /a/b/cinfo/ then you can force files to be placed directly into that
> directory (i.e. ignore the space name) by using he "inplace" option in the
> export directives. For instance,
>
> all.export /a/b/cinfo/ inplace
>
> only thenyou would not need to have a "meta" space. Since that is
> relatively difficult to document, we live with the extra symlinks as they
> pose little overhead.
>
> Back to documentation, I do have a set of slides that describes all of
> this. I can create a pdf file and link to it from the documention for
> those who want the nitty gritty implementation details.
>
> Andy
>
>   On Thu, 14 Nov 2019, Sam Skipsey wrote:
>
> > Ah, okay, so when you're using spaces, the localroot is a "fake" (but
> > real filesystem directory) which just symlinks into the spaces, as a
> > sort of "lookup table" for which space to actually find a given file?
> > That's interesting. (And this is definitely not explained *at all* in
> > the documentation, so that needs fixed. The oss.spaces stuff just says
> > that it is a means of aggregating storage spaces and doesn't say that
> > you need a localroot too, and the oss.localroot stuff doesn't mention
> > how it relates to spaces at all.)
> >
> > On Thu, 14 Nov 2019 at 21:13, Matev? Tadel <[log in to unmask]> wrote:
> >>
> >>
> >>
> >> On 2019-11-14 12:39, Sam Skipsey wrote:
> >>> On Thu, 14 Nov 2019 at 20:27, Matev? Tadel <[log in to unmask]> wrote:
> >>>>
> >>>> Hi,
> >>>>
> >>>> You are missing oss.localroot ... this has to be always defined. That's
> >>>> where symlinks to various oss.space instances go.
> >>>>
> >>>
> >>> ...how does this work (and why isn't it described in any detail how
> >>> this applies to oss.spaces in the documentation?)
> >>
> >> I think Andy should explain this (and fix the docs) ... as it might be
> >> my mental model is incomplete.
> >>
> >>>> Looking at your config, you don't seem to need oss.space and pfc.spaces
> >>>> at all, you just need oss.localroot /storage0/
> >>>>
> >>>
> >>> No, we have /storage0 through /storage4.
> >>>
> >>>> It seems the disks are aggregated in some other ways, not by being added
> >>>> to any space.
> >>>>
> >>>
> >>> That's... partly true. But the /storage* filesystem locations are all
> >>> distinct, and associated with different devices.
> >>>
> >>>> public is the default space used by xcache, for both data and metadata
> >>>> (so what you specify are actually the defaults).
> >>>>
> >>>
> >>> I know, but since it wasn't working, I thought I'd put it in
> >>> explicitly just in case.
> >>>
> >>>> xcache allows you to separate spaces for data and metadata, often it is
> >>>> useful to have metadata and localroot on ssd, or at least on a separate
> >>>> disk / controller.
> >>>>
> >>>
> >>> Indeed... as noted, the problem is that there's no documentation about
> >>> how to associate a space with the localroot, as the documentation
> >>> doesn't talk about spaces in this context.
> >>
> >> All spaces are associate with the localroot implicitly, I believe ...
> >> localroot just holds symlinks to instaniated files in various spaces.
> >> You can think of localroot as the namespace representation ... with
> >> actual data being stored on other spaces.
> >>
> >> Now, the question that arises for me is, how you associate parts of
> >> namespace (export) with an oss.space -- and I believe this is also what
> >> confuses you.
> >>
> >> In xcache we do it explicitly by writing data files to the "data" space
> >> and cinfo files to the "meta" space. This way they can land on different
> >> storage types and can be separated as cinfo files get access often
> >> during purge cycle.
> >>
> >>>> See the relevant lines from a config we use at UCSD below.
> >>>>
> >>>> It turns out that for cache it is better to use raw disks than raid5/6
> >>>> or zfs as you get independent streams for each file being opened going
> >>>> to specific disks, both on input and output. Data loss due to a lost
> >>>> disk is not a problem for caches.
> >>>>
> >>>> I hope this is clearer now :)
> >>>>
> >>>
> >>> Not really: I still need to know how you associate the localroot with a space.
> >>
> >> See above + I hope Andy can further clarify it for you.
> >>
> >>>> Matevz
> >>>>
> >>>> oss.localroot /xcache-root  # On SSD
> >>>>
> >>>> oss.space data /data1/xcache # Spinning disks (we use xfs)
> >>>> oss.space data /data2/xcache
> >>>> oss.space data /data3/xcache
> >>>> oss.space data /data4/xcache
> >>>> oss.space data /data5/xcache
> >>>> oss.space data /data6/xcache
> >>>> oss.space data /data7/xcache
> >>>> oss.space data /data8/xcache
> >>>> oss.space data /data9/xcache
> >>>> oss.space data /data10/xcache
> >>>> oss.space data /data11/xcache
> >>>> oss.space data /data12/xcache
> >>>>
> >>>> oss.space meta /xcache-meta # On SSD
> >>>>
> >>>> # Use space "data" for data, "meta" for meta-data/cinfo files
> >>>> pfc.spaces data meta
> >>>
> >>> Yes. So... is /xcache-root a real path? Is /xcache-meta a real path?
> >>
> >> Yes, both are real paths you can write to :)
> >>
> >>> This doesn't help me with what I should point oss.localroot at.
> >>
> >> To a directory, preferably on a SSD. And the same for oss.space meta.
> >> localroot will only hold sym-links so it needs not be very large. meta
> >> will only hold cinfo files so it will be something like 1 kB per file +
> >> 1-bit per-block of data files, also rather smallish.
> >>
> >> E.g., for blocksize of 512 kB:
> >>
> >> [1311] root@xcache-00 /# du -sch xcache-root xcache-meta /data{1..12}
> >> 3.8M    xcache-root
> >> 31M     xcache-meta
> >> 1.8T    /data1
> >> 1.8T    /data2
> >> 1.8T    /data3
> >> 1.8T    /data4
> >> 1.8T    /data5
> >> 1.8T    /data6
> >> 1.8T    /data7
> >> 1.8T    /data8
> >> 1.8T    /data9
> >> 1.8T    /data10
> >> 1.8T    /data11
> >> 1.8T    /data12
> >> 22T     total
> >>
> >> Matevz
> >>
> >>> Sam
> >>>
> >>>>
> >>>> On 2019-11-14 11:50, Sam Skipsey wrote:
> >>>>> Hello,
> >>>>> So, I've tried various interpretations of the documentation, but I'm
> >>>>> obviously missing something.
> >>>>>
> >>>>> I'm trying to configure an Xrootd Proxy Cache, backed by storage
> >>>>> aggregated into an oss.space.
> >>>>>
> >>>>> The cache is configured like:
> >>>>>
> >>>>>
> >>>>> oss.space public /storage0*
> >>>>> #oss.space public default /
> >>>>>
> >>>>> ofs.osslib libXrdPss.so
> >>>>> pss.cachelib libXrdFileCache.so
> >>>>> pfc.ram 16g
> >>>>> all.trace all
> >>>>> all.log all
> >>>>> pfs.diskusage 0.90 0.95
> >>>>>
> >>>>> all.export /xroot:/ outplace
> >>>>> all.export /root:/ outplace
> >>>>>
> >>>>> all.export / outplace
> >>>>>
> >>>>> pss.origin svr01.beowulf.cluster:1094
> >>>>> xrd.allow host *.beowulf.cluster
> >>>>>
> >>>>> pfc.blocksize 256k
> >>>>>
> >>>>> pfc.spaces public public
> >>>>>
> >>>>>
> >>>>>
> >>>>> where the /storage0* spaces are all writable and owned by the xrootd
> >>>>> user (and when we start up the server, it creates "public" directories
> >>>>> in each of them).
> >>>>>
> >>>>> However, whenever I try to access a file through the proxy, it logs
> >>>>> that it couldn't write the file to the disk (specifying its path as if
> >>>>> it was going to write it to the storage with no prefix - that is,
> >>>>> outside of the specified "public" space, in the literal root
> >>>>> filesystem).
> >>>>> If this was a non-spaces based system, I'd specify oss.localroot, but
> >>>>> that doesn't seem to apply to a space?
> >>>>> I tried adding the outplace directives to the all.exports, but this
> >>>>> hasn't changed anything.
> >>>>>
> >>>>> What am I missing? None of the example configurations I can see with
> >>>>> oss.spaces seem to need any additional configuration directives...
> >>>>>
> >>>>> Sam
> >>>>>
> >>>>> ########################################################################
> >>>>> Use REPLY-ALL to reply to list
> >>>>>
> >>>>> To unsubscribe from the XROOTD-L list, click the following link:
> >>>>> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1
> >>>>>
> >>>>
> >>>> ########################################################################
> >>>> Use REPLY-ALL to reply to list
> >>>>
> >>>> To unsubscribe from the XROOTD-L list, click the following link:
> >>>> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1
> >
> > ########################################################################
> > Use REPLY-ALL to reply to list
> >
> > To unsubscribe from the XROOTD-L list, click the following link:
> > https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1
> >
>
> ########################################################################
> Use REPLY-ALL to reply to list
>
> To unsubscribe from the XROOTD-L list, click the following link:
> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-L list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1