Re: [OpenAFS] Number of files in an OpenAFS volume...

2016-07-04 Thread Jeffrey Altman
On 7/4/2016 12:48 PM, Stephan Wiesand wrote:
> 
> On Jul 4, 2016, at 16:27 , Jeffrey Altman wrote:
> 
>> The directory size restrictions are one of the reasons that /afs cannot
>> be used for a large number of applications.  The AuriStor File System
>> implements a new directory format which is understood only by AuriStor
>> clients.  This format permits directories to grow to store an unlimited
>> number of entries.
> 
> Another such restriction is that AFS won't allow hard links across 
> directories, even if they're in the same volume. Does AuriStor lift that 
> restriction too?

Yes.  Cross-directory hard links must be prevented by AFS3 because ACLs
can only be assigned to directories.   The AuriStor File System allows
ACLs to be assigned to any object (directory, file, symlink or mount
point.)  If a cross-directory hard link is added to a file and that file
inherits a directory ACL, the directory ACL is copied to the file as
part of the creation of the hard link.

Jeffrey Altman




<>

smime.p7s
Description: S/MIME Cryptographic Signature


Re: [OpenAFS] Number of files in an OpenAFS volume...

2016-07-04 Thread Stephan Wiesand

On Jul 4, 2016, at 16:27 , Jeffrey Altman wrote:

> The directory size restrictions are one of the reasons that /afs cannot
> be used for a large number of applications.  The AuriStor File System
> implements a new directory format which is understood only by AuriStor
> clients.  This format permits directories to grow to store an unlimited
> number of entries.

Another such restriction is that AFS won't allow hard links across directories, 
even if they're in the same volume. Does AuriStor lift that restriction too?

-- 
Stephan Wiesand
DESY -DV-
Platanenenallee 6
15738 Zeuthen, Germany

___
OpenAFS-info mailing list
OpenAFS-info@openafs.org
https://lists.openafs.org/mailman/listinfo/openafs-info


Re: [OpenAFS] Number of files in an OpenAFS volume...

2016-07-04 Thread Jeffrey Altman
On 7/4/2016 11:57 AM, Matthew Lowy wrote:
> Hi Jeffrey,
>
> a locale where double-byte characters were in file names the packing wouldn't 
> be as good.

All AFS3 directory entries are stored as single byte C-strings.  Unicode
names as stored by Windows, OSX, Linux with the UTF8 locale, etc store
utf8 sequences.   Any character that cannot be represented by ISO-8859-1
will require more than one octet.

Jeffrey Altman


<>

smime.p7s
Description: S/MIME Cryptographic Signature


RE: [OpenAFS] Number of files in an OpenAFS volume...

2016-07-04 Thread Matthew Lowy
Hi Jeffrey,

(directory, my error)

Ah, that makes more sense... if I understand corerctly, it makes it look like 
each slot is 32 characters long, the first 16 characters of the first slot are 
occupied by other file metadata so only 16 are available for file name data but 
in each subsequent slot all 32 characters are available for file name data. On 
that basis 1 - 16 character names take one slot, 17 - 48 character names take 
2, 49 - 80 character names take 3 slots, 81 - 112 chaarcter names take 4 slots 
and so on. I presume that if we were working in a locale where double-byte 
characters were in file names the packing wouldn't be as good.

Incidentally, isn't the function equivalent to:

{
int i;
i = strlen(name);
return 1 + ((i + 16) >> 5);
}

Implementing the algorithm below against the real data indicates that we are 
using 63,959 slots which is even more painfully close to 64k and explains why 
the mirror update sometimes fails with error messages relating to running out 
of slots..

Thank you, that resolves the anomaly... and as a team we'd already discovered 
there are things about OpenAFS that limit what it can be applied to... there 
have been some restrictions and tweaks needed in the mirroring application. 
I'll point my manager at Auristor for the next tech refresh.

Matthew

From: Jeffrey Altman [jalt...@auristor.com] 
Sent: 04 July 2016 15:27
To: Matthew Lowy; openafs-info@openafs.org
Subject: Re: [OpenAFS] Number of files in an OpenAFS volume...

On 7/4/2016 6:55 AM, Matthew Lowy wrote:
> Hello,
>
> We have a number of OpenAFS volumes that serve as storage for (public)
> mirrors and one of them is misbehaving when updated from upstream - the
> error indicates we've reached the limit of file names allowed in a volume.

In a volume or a directory?

The theoretical limit of directories in a volume is 2^30 and
non-directories in a volume is 2^30.  There have been incomplete efforts
to raise those limits by treating signed values as unsigned values but I
wouldn't count on them.

> The limit I am seeing is not compatible with my understanding of how
> OpenAFS handles file names in a directory. I've seen in the mail list
> archives the statements about how many file names can fit, that there
> are 64k slots and a file name < 16 in length occupies one slot, a file
> name from 16 to 32 characters long occupies two slots and so on. The
> earliest reference I've found is at
> http://lists.openafs.org/pipermail/openafs-info/2002-September/005812.html

Your understanding is roughly correct except that the numbers Todd
specified are wrong.   The actual number are determined by this function:

/* Find out how many entries are required to store a name. */
int
afs_dir_NameBlobs(char *name)
{
int i;
i = strlen(name) + 1;
return 1 + ((i + 15) >> 5);
}

A slot contains per file metadata followed by name data.  When multiple
slots all of the space in the 2nd and subsequent slots are used for file
name data.

> However...
>
> The directory concerned has more than 21,000 files in it, almost all of
> them have names exceeding 52 characters... as at today there are
> 1,220,000 characters in filenames in that directory. Even assuming they
> pack down perfectly into directory name slots that's over 76,000
> slots... and working them out using the rule above indicates that the
> directory is using over 87,000 slots. These are both significantly above
> 64k.
>
> I don't know if I'm misinterpreting the information in the OpenAFS
> archive or if the information is out of date - but I've not found
> anything that fundamentally is different from the information in the
> archive and I'm looking at a volume that seems to break the limits.

The AFS3 directory format is part of the wire protocol as it is shared
by both the file server and the clients.

> I'd really benefit from understanding what's going on ... how we appear to
> be getting more file name information into a directory than should be
> possible.
>
> /mirror.ox.ac.uk/sites/archive.ubuntu.com/ubuntu/pool/main/l/linux$ ls
> |wc -l
> 21731

This number is within the existing limits.

> /mirror.ox.ac.uk/sites/archive.ubuntu.com/ubuntu/pool/main/l/linux$ ls
> |wc -c
> 1250894

File names of length 52 through 70 characters require three slots.  If
all of the file names are of length 60 and are perfectly packed they
would require 62545 slots which is very close to the limit.

> This is one directory in a mirror of archive.ubuntu.com so you can see
> the contents from (e.g)
> https://launchpad.net/ubuntu/+mirror/mirror.ox.ac.uk-archive which
> points to the presentation of our mirror. The number of files has
> recently gone up because of upstream changes.

The directory size restrictio

Re: [OpenAFS] Number of files in an OpenAFS volume...

2016-07-04 Thread Jeffrey Altman
On 7/4/2016 6:55 AM, Matthew Lowy wrote:
> Hello,
> 
> We have a number of OpenAFS volumes that serve as storage for (public)
> mirrors and one of them is misbehaving when updated from upstream - the
> error indicates we've reached the limit of file names allowed in a volume.

In a volume or a directory?

The theoretical limit of directories in a volume is 2^30 and
non-directories in a volume is 2^30.  There have been incomplete efforts
to raise those limits by treating signed values as unsigned values but I
wouldn't count on them.

> The limit I am seeing is not compatible with my understanding of how
> OpenAFS handles file names in a directory. I've seen in the mail list
> archives the statements about how many file names can fit, that there
> are 64k slots and a file name < 16 in length occupies one slot, a file
> name from 16 to 32 characters long occupies two slots and so on. The
> earliest reference I've found is at
> http://lists.openafs.org/pipermail/openafs-info/2002-September/005812.html

Your understanding is roughly correct except that the numbers Todd
specified are wrong.   The actual number are determined by this function:

/* Find out how many entries are required to store a name. */
int
afs_dir_NameBlobs(char *name)
{
int i;
i = strlen(name) + 1;
return 1 + ((i + 15) >> 5);
}

A slot contains per file metadata followed by name data.  When multiple
slots all of the space in the 2nd and subsequent slots are used for file
name data.

> However...
> 
> The directory concerned has more than 21,000 files in it, almost all of
> them have names exceeding 52 characters... as at today there are
> 1,220,000 characters in filenames in that directory. Even assuming they
> pack down perfectly into directory name slots that's over 76,000
> slots... and working them out using the rule above indicates that the
> directory is using over 87,000 slots. These are both significantly above
> 64k.
> 
> I don't know if I'm misinterpreting the information in the OpenAFS
> archive or if the information is out of date - but I've not found
> anything that fundamentally is different from the information in the
> archive and I'm looking at a volume that seems to break the limits. 

The AFS3 directory format is part of the wire protocol as it is shared
by both the file server and the clients.

> I'd really benefit from understanding what's going on ... how we appear to
> be getting more file name information into a directory than should be
> possible.
> 
> /mirror.ox.ac.uk/sites/archive.ubuntu.com/ubuntu/pool/main/l/linux$ ls
> |wc -l
> 21731

This number is within the existing limits.

> /mirror.ox.ac.uk/sites/archive.ubuntu.com/ubuntu/pool/main/l/linux$ ls
> |wc -c
> 1250894

File names of length 52 through 70 characters require three slots.  If
all of the file names are of length 60 and are perfectly packed they
would require 62545 slots which is very close to the limit.

> This is one directory in a mirror of archive.ubuntu.com so you can see
> the contents from (e.g)
> https://launchpad.net/ubuntu/+mirror/mirror.ox.ac.uk-archive which
> points to the presentation of our mirror. The number of files has
> recently gone up because of upstream changes.

The directory size restrictions are one of the reasons that /afs cannot
be used for a large number of applications.  The AuriStor File System
implements a new directory format which is understood only by AuriStor
clients.  This format permits directories to grow to store an unlimited
number of entries.  However, the AuriStor file servers currently apply
an artificial limit of approximately 20 million entries.

More details on the AuriStor File System can be obtained at

  https://www.auristor.com/openafs/migrate-to-auristor/

Jeffrey Altman


<>

smime.p7s
Description: S/MIME Cryptographic Signature