[OpenAFS] Is OpenAFS for me?

Thomas Kula kula@tproa.net
Tue, 7 Mar 2006 13:47:41 -0600

Karl Bellve wrote:

>But, I would like to have a /afs/home that is 1TB made up of various 
>computers/drives. If I add a new HD to a new computer, can I now 
>expand /afs/home to include the size of the new HD, or must I make a 
>new AFS?

Remember, a volume is basically a chunk of space with a particular quota
on it (rough description for this example). For example, typically every 
user's home directory is its own volume --- my directory at home is in a 
volume called "u.kula". Everything within your afs space is going to appear 
within a volume, from the top level down, if it is in afs, it is in some

A volume must fit within a partition on a fileserver --- you can not have
a volume with more space filled in it than you have available on the partition
it is on, and volumes can not span partitions. My home volume, u.kula, 
lives (currently) on the partition /vicepa on the server gozer.tproa.net. 
That partition has 36 gigs of space on it, so no matter what I set the quota 
on u.kula, if it remains on this partition on this server, it can not occupy 
no more than 36 gigs of space (in fact, it can not have more in it than the 
amount of space free on the partition it is currently on). But it doesn't 
matter on which fileserver or which partition on a fileserver in your cell 
the volume appears, you can move them at will.

To make a volume appear within /afs/tproa.net I used "fs makemount" to say
"this volume 'u.kula' should appear as the directory 
'/afs/tproa.net/users/7/3/kula'" Everything that is in the volume 'u.kula'
appears under '/afs/tproa.net/users/7/3/kula'. Where it appears is arbitrary 
--- this is just the convention I've used at home. I could mount it as
'/afs/tproa.net/pickles' or even (as I've done at work)
'/afs/iastate.edu/users/09/31/kula/tproa'. Anywhere in afs that I have
the proper permissions, I can add a mount point for a particular volume.
The afs db servers take care of pointing me to whatever fileserver currently
happens to contain that volume. 

I say all of this because I think you may have the wrong impression --- you
don't simply add drive space or fileservers and suddenly have more space in
some amorphorus cloud within '/afs/home' or whatnot. Rather, you can add
fileservers, or additional disk space within fileservers, and use then move
volumes into that. So, for example, if I add the fileserver keymaster.tproa.net
with a 200 gb /vicepa and a 300 gb /vicepb, I don't all of a sudden have 500
gigs of random space availble. But what I can do is move u.kula from gozer
into, say, vicepb of keymaster, and now all of a sudden I can use more than
36 gigs of space in u.kula --- I can use up to whatever space isn't used in
the 300 gb of space in vicepb on keymaster. And this move is fairly transparent
to the end user, who doesn't care which fileserver he or she is on. Afs takes
care of letting the client know where to find it --- I simply know that my
home directory is at /afs/tproa.net/users/7/3/kula, and don't care where the
volume that contains it is at. 

Or lets say that I an going to work on project "bigfiles", which needs 100
gb of space, which I'd like to appear as /afs/tproa.net/users/7/3/kula/bigfiles.
I could simply make sure that whatever fileserver and partition 'u.kula' is
on has enough space to contain the additional 100 gb of files, or I could
make another volume, say, 'proj.bigfiles' (the name doesn't matter --- it's
just convention) and then say "the volume proj.bigfiles should be mounted at
/afs/tproa.net/users/7/3/kula/bigfiles". u.kula could live on one fileserver,
proj.bigfiles could live on another --- it doesn't matter. 

Basically, chunk up your storage needs into convenient units --- a home
directory, a project directory, a particular software package, a website
directory, whatever makes sense. These units are volumes. Put the volumes
in the available space on the partitions on your fileservers. Move stuff
around as necessary to balance space requirements, load, to be able to take
down a fileserver to replace or work on it, etc. Mount volumes where it makes
sense for them to appear. If you need more space, replace a partition with a 
bigger one, add an additional partition somewhere or add another fileserver. 
If a directory within a current volume is becoming two large and unwieldy to 
live in that partition, split if off into its own partition and mount that 
new partition in the old directory location.

Hopefully this all makes sense and doesn't add any additional confusion.

Thomas L. Kula | kula@tproa.net | http://kula.tproa.net/
Mathom House upon the Canw, The People's Republic of Ames