VOS(1)

✨ VOS(1) β€” the vos command suite, explained by your fav Unix bestie ✨

okay so. welcome to the vos era πŸ’… this is the AFS Command Reference page that kicks off the whole vos family, and honestly? it's giving administrator main character energy. grab a strawberry πŸ“ and let's get into it.


🌸 NAME 🌸

vos β€” the intro page for the vos command suite. think of it as the group chat's pinned message: every sibling page hangs off this one 🫢


πŸ’– DESCRIPTION πŸ’–

so the commands in the vos suite are the administrative interface to the Volume Server and the Volume Location (VL) Server. system admins roll up with vos commands to create, move, delete, replicate, back up and examine volumes, plus a whole bunch of other operations. and the way the VL Server just... auto-magically πŸ“ records changes in volume status and location that come out of vos commands into the Volume Location Database (VLDB)? obsessed. no cap.

most vos commands do idempotent operations, which is a fancy way of saying: if the operation gets interrupted by a network outage, a server machine dying, or a process going poof πŸ’€, then a later attempt at that same operation picks up from where it got interrupted instead of starting all over from the beginning. before running a command, the Volume and VL Servers check the current state of the volumes and VLDB records that the command is about to touch. if they're already in the desired end state (or in a consistent intermediate state), there's literally no need to redo the internal steps that got them there. slay. ✨

⚠️ but bestie β€” idempotency does NOT apply if the person issuing the command explicitly interrupts it with Ctrl+C or some other interrupt signal. in that case the volume is left locked and the administrator must use the vos unlock command to unlock it before they can keep going. noted. periodt.

it's super important that the VLDB accurately shows the status of the volumes on file server machines at all times, fr fr. vldb.DB0(5) and afs_volume_header(5) describe the info recorded in the VLDB and in volume headers, respectively. if a vos command changes volume status, it automatically records that change in the matching VLDB entry. and the most common cause of VLDB-vs-volume-status discrepancies on file server machines? interrupted operations 😭 to fix that consistency, use the vos syncserv and vos syncvldb commands.

and there are several categories of commands in the vos suite:

  • commands to create, move, and rename volumes: vos backup, vos backupsys, vos changeloc, vos create, vos move, and vos rename.
  • commands to remove VLDB volume records or volumes or both: vos delentry, vos remove, and vos zap.
  • commands to edit or display VLDB server entries: vos changeaddr, vos listaddrs vos setaddrs, and vos remaddrs.
  • commands to create, size, and restore dump files: vos dump, vos restore, and vos size.
  • commands to administer replicated volumes: vos addsite, vos release, and vos remsite.
  • commands to display VLDB records, volume headers, or both: vos examine, vos listvldb, and vos listvol.
  • commands to display info about partitions that house volumes: vos listpart and vos partinfo.
  • commands to restore consistency between the VLDB and volume headers: vos syncserv and vos syncvldb.
  • commands to lock and unlock VLDB entries: vos lock, vos unlock, and vos unlockvldb.
  • a command to report Volume Server status: vos status.
  • a command to end Volume Server transactions: vos endtrans.
  • a command to change volume fields: vos setfields.
  • commands to obtain help: vos apropos and vos help.

🚨 CAUTIONS 🚨 (read this part, bestie, for real)

right now the maximum quota for a volume is 2 terabytes (2^41 bytes). and ngl, this only affects the volume's quota β€” a volume can grow way, way bigger if the volume quota is disabled. but πŸ‘€ volumes over 2 terabytes in size may be impractical to move, and may have their size incorrectly reported by some tools, such as fs_listquota(1).


✨ OPTIONS ✨

these arguments and flags show up on lots of commands across the vos suite. every command's own reference page lists them too, but here they're described in greater detail πŸŽ€

  • -cell <cell name> β€” names the cell to run the command in. you can totally abbreviate the cell name to the shortest form that still distinguishes it from the other entries in the /etc/openafs/CellServDB file on the local machine. if you skip the -cell argument, the command interpreter figures out the local cell's name by reading these, in order:
    • the value of the AFSCELL environment variable.
    • the local /etc/openafs/ThisCell file.
    • the local /etc/openafs/server/ThisCell file.
πŸ’€ do NOT combine -cell and -localauth. a command with the -localauth flag always runs in the local cell (as defined in the server machine's local /etc/openafs/server/ThisCell file), whereas a command with the -cell argument runs in the specified foreign cell.
  • -config <config directory> β€” where to look for configuration info, including the CellServDB. this is mainly here for testing purposes. if -config and -localauth are both omitted, the command interpreter searches for config info in this order:
    • the /etc/openafs directory.
    • the /etc/openafs/server directory.
  • -help β€” prints a command's online help message to the standard output stream. 🫢 do not combine this flag with any of the command's other options; when it's there, the command interpreter ignores all other options and only prints the help message. iconic behavior tbh.
  • -localauth β€” constructs a server ticket using the server encryption key with the highest key version number in the local /etc/openafs/server/KeyFile file. the vos command interpreter presents that ticket β€” which never expires, bestie, never ✨ β€” to the Volume Server and VL Server during mutual authentication.

use this flag only when running a command on a server machine; client machines don't usually have a /etc/openafs/server/KeyFile file. whoever issues a command with this flag must be logged on to the server machine as the local superuser "root". this flag is useful for commands invoked by an unattended application program, like a process controlled by the UNIX cron utility or by a cron entry in the machine's /etc/openafs/BosConfig file. it's also useful if an administrator can't authenticate to AFS but is logged in as the local superuser root.

😭 do not combine -cell and -localauth. a command with -localauth always runs in the local cell (per the server machine's local /etc/openafs/server/ThisCell file), whereas a command with the -cell argument runs in the specified foreign cell. and also β€” do not combine -localauth and -noauth.
  • -noauth β€” sets up an unauthenticated connection to the Volume Server and VL Server, where the servers treat the issuer as the unprivileged user "anonymous". it's useful only when authorization checking is disabled on the server machine (like during installation of a file server machine, or when the bos setauth command has been used in other unusual circumstances). in normal circumstances the servers allow only privileged users to issue commands that change the status of a volume or VLDB record, and refuses to perform such an action even if the -noauth flag is provided. do not combine -noauth and -localauth.
  • -partition <partition name> β€” identifies the AFS server partition on a file server machine that houses, or is going to house, the volumes of interest, or that you want info about. the vos command interpreter accepts any of these four name formats:
  /vicepa     =     vicepa      =      a      =      0
  /vicepb     =     vicepb      =      b      =      1

after /vicepz (whose index is 25) comes:

  /vicepaa    =     vicepaa     =      aa     =      26
  /vicepab    =     vicepab     =      ab     =      27

and so on through:

  /vicepiv    =     vicepiv     =      iv     =      255

the -frompartition and -topartition arguments to the vos move command also accept this notation. πŸ¦‹

  • -server <machine name> β€” identifies the file server machine that houses, or is going to house, the volumes or AFS server partitions of interest. hand over the machine's IP address in dotted decimal format, its fully qualified host name (for example, "fs1.example.com"), or the shortest abbreviated form of its host name that distinguishes it from other machines. whether an abbreviated form works depends on a name resolution service (like the Domain Name Service, or a local host table) being available when you issue the command. πŸ‘‘

the -fromserver and -toserver arguments to the vos move command also accept these name formats.

  • -noresolve β€” shows all servers as IP addresses instead of the DNS name. this is very useful when the server address is registered as 127.0.0.1 or when you're dealing with multi-homed servers. the -noresolve option is available in OpenAFS versions 1.4.8 or later and 1.5.35 or later. 🧚
  • -verbose β€” produces a detailed trace of the command's execution on the standard output stream. if you omit this argument, only warnings and error messages show up. (basically: turn it on if you want the whole lore πŸ‘€)

πŸ‘‘ PRIVILEGE REQUIRED πŸ‘‘

to issue most vos commands, the issuer must be listed in the /etc/openafs/server/UserList file on each server machine that houses or is to house an affected volume, and on each database server machine. you get the most predictable performance results if all database server and file server machines in the cell share a common UserList file. alternatively, if the -localauth flag is included, the issuer must be logged on to a server machine as the local superuser "root".

and for a vos command that only displays info? no privilege required, bestie. free real estate. πŸ’…


🌈 SEE ALSO 🌈

vos_addsite(1), vos_apropos(1), vos_backup(1), vos_backupsys(1), vos_changeaddr(1), vos_convertROtoRW(1), vos_clone(1), vos_copy(1), vos_create(1), vos_delentry(1), vos_dump(1), vos_endtrans(1), vos_examine(1), vos_help(1), vos_listaddrs(1), vos_listpart(1), vos_listvldb(1), vos_listvol(1), vos_lock(1), vos_move(1), vos_partinfo(1), vos_release(1), vos_remove(1), vos_remsite(1), vos_rename(1), vos_restore(1), vos_setfields(1), vos_shadow(1), vos_size(1), vos_status(1), vos_syncserv(1), vos_syncvldb(1), vos_unlock(1), vos_unlockvldb(1), vos_zap(1), CellServDB(5), UserList(5)


IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.

this documentation is covered by the IBM Public License Version 1.0. it was converted from HTML to POD by software written by Chas Williams and Russ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. credit where credit is due, always 🫢


and that's the page, bestie!! πŸŽ€ this was OpenAFS, dated 2026-07-27 β€” go forth and manage those volumes, you absolute icon πŸ‘‘βœ¨

πŸ“¦ where this page comes from