123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826 |
- .TH FS 8
- .SH NAME
- fs, exsort \- file server maintenance
- .SH SYNOPSIS
- .PD 0
- .B help
- [
- .I command ...
- ]
- .PP
- .B allow
- .PP
- .B arp
- .I subcommand
- .PP
- .B cfs
- .I filesystem
- .PP
- .B check
- .RI [ options ]
- .PP
- .B clean
- .I file
- [
- .I bno
- [
- .I addr
- ] ]
- .PP
- .B clri
- .RI [ file ...]
- .PP
- .B cpu
- .RI [ proc ]
- .PP
- .B create
- .I path uid gid perm
- .RB [ lad ]
- .PP
- .B cwcmd
- .I subcommand
- .PP
- .B date
- .RB [[ +- ]
- .IR seconds ]
- .PP
- .B disallow
- .PP
- .B duallow
- .RI [ uid ]
- .PP
- .B dump
- [
- .I filesystem
- ]
- .PP
- .B files
- .PP
- .B flag
- .I flag
- [
- .I channel
- ]
- .PP
- .B fstat
- [
- .I files
- ]
- .PP
- .B halt
- .PP
- .B hangup
- .I channel
- .PP
- .B newuser
- .I name
- .RI [ options ]
- .PP
- .B noattach
- .PP
- .B passwd
- .PP
- .B printconf
- .PP
- .B profile
- .RB [ 01 ]
- .PP
- .B remove
- .RI [ files ...]
- .PP
- .B route
- .I subcommand
- .PP
- .B "sntp kick"
- .PP
- .BR stat [ admiesw ]
- .PP
- .B stats
- .RB [[ - ]
- .IR flags ...]
- .PP
- .B sync
- .PP
- .B time
- .I command
- .PP
- .B trace
- .RI [ number ]
- .PP
- .B users
- .RI [ file ]
- .PP
- .B version
- .PP
- .B who
- .RI [ user ...]
- .PP
- .B wormeject
- [
- .I tunit
- ]
- .PP
- .B wormingest
- [
- .I tunit
- ]
- .PP
- .B wormoffline
- .I drive
- .PP
- .B wormonline
- .I drive
- .PP
- .B wormreset
- .PD
- .PP
- .B disk/exsort
- .RB [ -w ]
- .RI [ file ]
- .SH DESCRIPTION
- Except for
- .IR exsort ,
- these commands are available only on the console of an
- .IR fs (4)
- file server.
- .\" .PP
- .\" The console requires the machine's password to be supplied before
- .\" accepting commands. Typing a control-D will cause
- .\" the server to request
- .\" the password again.
- .PP
- .I Help
- prints a `usage string' for the named
- .IR commands ,
- by default all commands.
- Also, many commands print menus of their options if given
- incorrect or incomplete parameters.
- .PP
- .I Allow
- disables permission checking and allows
- .BR wstat .
- This may help in initializing a file system.
- Use this with caution.
- .PP
- .I Arp
- has two
- .IR subcommands :
- .B print
- prints the contents of the ARP cache and
- .B flush
- flushes it.
- .PP
- .I Cfs
- changes the current file system, that is, the file tree to which
- commands
- .RB ( check ,
- .BR clean ,
- .BR clri ,
- .BR create ,
- .BR cwcmd ,
- .BR dump ,
- .BR newuser ,
- .BR profile ,
- .BR remove ,
- and
- .BR users )
- apply.
- The initial
- .I filesystem
- is
- .BR main .
- .PP
- .I Check
- verifies the consistency of the current file system.
- With no options it checks and reports the status.
- It suspends service while running.
- Options are:
- .TF touch
- .PD
- .TP
- .B rdall
- Read every block in the file system (can take a
- .I long
- time).
- Normally,
- .I check
- will stop short of the actual contents
- of a file and just verify the block addresses.
- .TP
- .B tag
- Fix bad
- .IR tags ;
- each block has a tag that acts as a backwards pointer for
- consistency checking.
- .TP
- .B ream
- Fix bad tags
- and also clear the contents
- of blocks that have bad tags.
- .TP
- .B pfile
- Print every file name.
- .TP
- .B pdir
- Print every directory name.
- .TP
- .B free
- Rebuild the list of free blocks
- with all blocks that are not referenced.
- This option is only useful on non-cache/WORM
- file systems.
- If the filesystem was modified, the summary printed
- at the conclusion of the check may not reflect the true
- state of the freelist and may also print a list of
- .I missing
- blocks.
- These
- .I missing
- blocks are actually on the free list and the true
- state of the filesystem can be determined by running
- .I check
- with no arguments.
- .TP
- .B bad
- Each block address that is out of range or duplicate is cleared.
- Note that only the second and subsequent
- use of a block is cleared.
- Often the problems in a file system are
- caused by one bad file that has a lot of
- garbage block addresses.
- In such a case,
- it is wiser to use
- .I check
- to find the bad file
- (by number of diagnostic messages)
- and then use
- .I clri
- to clear the addresses in that file.
- After that,
- .I check
- can be used to reclaim the free list.
- .TP
- .B touch
- Cause every directory and indirect block not on the current WORM disk
- to be advanced to the current WORM on the next dump.
- This is a discredited idea to try to keep operating
- on the knee of the cache working set.
- Buy more cache disk.
- .TP
- .B trim
- reduces the file system's
- .I fsize
- to fit the device containing the file system.
- This is useful after copying a partially-full file system
- into a slightly smaller device.
- Running
- .B "check free"
- afterward will construct a new free list that contains no
- blocks outside the new, smaller file system.
- .PP
- .I Clean
- prints the block numbers in
- .IR file 's
- directory entry (direct, indirect and doubly indirect)
- and checks the tags of the blocks cited.
- If
- .I bno
- is supplied, the
- .IR bno 'th
- block number (using zero origin)
- is set to
- .I addr
- (defaults to zero).
- Note that only the block numbers in the directory entry itself
- are examined;
- .I clean
- does not recurse through indirect blocks.
- .PP
- .I Clri
- clears the internal directory entry and abandons storage
- associated with
- .IR files .
- It ignores the usual rules for sanity, such as checking against
- removing a non-empty directory.
- A subsequent
- .B check
- .B free
- will place the abandoned storage in the free list.
- .PP
- .I Cpu
- prints the CPU utilization and state of the processes in the file server.
- If the name of a process type argument is given,
- then CPU utilization for only those processes is printed.
- .PP
- .I Create
- creates a file on the current file system.
- .I Uid
- and
- .I gid
- are names or numbers from
- .BR /adm/users .
- .I Perm
- is the low 9 bits of the permission mode of the file, in octal.
- An optional final
- .BR l ,
- .BR a ,
- or
- .BR d
- creates a locked file, append-only file, or directory.
- .PP
- .I Cwcmd
- controls the cached WORM file systems,
- specifically the current file system.
- The subcommands are:
- .TP
- .BI mvstate " state1 state2 " [ platter ]
- States are
- .BR none ,
- .BR dirty ,
- .BR dump ,
- .BR dump1 ,
- .BR error ,
- .BR read ,
- and
- .BR write .
- A
- .B mvstate
- .B dump1
- .B dump
- will cause I/O errors in the last dump to be retried.
- A
- .B mvstate
- .B dump1
- .B write
- will cause I/O errors in the last dump to be retried in
- reallocated slots in the next dump.
- A
- .B mvstate
- .B read
- .B none
- will flush the cache associated with the WORM.
- A
- .B mvstate
- .B dump
- .B write
- aborts the background process dumping to WORM; as a consequence it
- leaves holes in the dump file system.
- Other uses are possible but arcane.
- The optional
- .I platter
- limits affected blocks to those on that platter.
- .TP
- .BR prchain " [\fIstart\fP] [\fIback-flag\fP]
- Print the chain of superblocks for the directory containing the
- roots of the dumped file systems, starting at block number
- .I start
- (default 0) going forward (backwards if
- .I back-flag
- is supplied and is non-zero).
- .TP
- .BR searchtag " [\fIstart\fP] [\fItag\fP] [\fIblocks\fP]
- Reads the WORM device starting at block
- .I start
- and proceeding for
- .I blocks
- blocks (default 1000)
- until it finds a block with numeric tag
- .IR tag .
- .TP
- .BR savecache " [\fIpercent\fP]
- Copy the block numbers, in native endian longwords, of blocks in the
- .B read
- state to the file
- .BR /adm/cache
- for use by
- .BR disk/exsort .
- If an argument is given,
- then that percent (most recently used) of each cache bucket
- is copied.
- .TP
- .BR loadcache " [\fIdskno\fP]
- Read
- .B /adm/cache
- and for every block there on WORM disk side
- .I dskno
- (zero-origin),
- read the block from WORM to the cache.
- If
- .I dskno
- is not supplied, all blocks in
- .B /adm/cache
- are read.
- .TP
- .BR morecache " dskno [\fIcount\fP]
- Read
- .I count
- blocks from the beginning of WORM disk side
- .I dskno
- to the cache.
- If no count is given,
- read all of side
- .IR dskno
- into the cache.
- .TP
- .BR startdump \ [ 01 ]
- Suspend
- .RB ( 0 )
- or restart
- .RB ( 1 )
- the background dump process.
- .TP
- .B touchsb
- Verify that the superblock on the WORM is readable, ignoring the cached copy.
- .TP
- .BR blockcmp " [\fIwbno\fP] [\fIcbno\fP]
- Compares the WORM block
- .I wbno
- with the cache block
- .I cbno
- and prints the first 10 differences, if any.
- .TP
- .B acct
- Prints how many times each user has caused the system to allocate new space on the WORM;
- the units are megabytes.
- .TP
- .B clearacct
- Clears the accounting records for
- .BR acct .
- .PP
- .I Date
- prints the current date. It may be adjusted
- using
- .BI +- seconds\f1.
- With no sign, it sets the date to the absolute number of seconds
- since 00:00 Jan 1, 1970 GMT; with a sign it trims the current
- time.
- .PP
- .I Disallow
- restores permission checking back to normal after a file system
- has been initialized.
- .PP
- .I Duallow
- sets permissions such that
- the named
- .I user
- can read and search any directories.
- This is the permission necessary to do a
- .IR du (1)
- command anywhere in the file system to discover disk usage.
- .PP
- .I Dump
- starts a dump to WORM immediately for
- the named filesystem,
- or the current filesystem if none is named.
- File service is suspended while the cache is scanned;
- service resumes when the copy to WORM starts.
- .PP
- .I Files
- prints for every connection the number of allocated fids.
- .PP
- .I Fstat
- prints the current status of each named
- .IR file ,
- including uid, gid, wuid (uid of the last user to modify the file),
- size, qid, and disk addresses.
- .PP
- .I Flag
- toggles flags, initially all off:
- .TF authdisablexx
- .TP
- .B allchans
- Print channels in
- .I who
- output.
- .TP
- .B arp
- Report ARP activity.
- .TP
- .B attach
- Report as connections are made to the file server.
- .TP
- .B authdebug
- Report authentications.
- .TP
- .B authdisable
- Disable authentication.
- .TP
- .B chat
- (Very noisy.) Print all 9P messages to and from the server.
- .TP
- .B error
- Report 9P errors.
- .TP
- .B il
- Report IL errors.
- .TP
- .B route
- Report received RIP packets.
- .TP
- .B ro
- Report I/O on the WORM device.
- .TP
- .B sntp
- Report SNTP activity.
- .PD
- .PP
- If given a second numeric
- .I channel
- argument,
- as reported by
- .IR who ,
- the flag is altered only on that connection.
- .PP
- .I Halt
- does a
- .B sync
- and halts the machine, returning to the boot ROM.
- .PP
- .I Hangup
- clunks all the fids on the named
- .IR channel ,
- which has the same format as in the output of the
- .I who
- command.
- .PP
- .I Newuser
- requires a
- .I name
- argument.
- With no options it adds user
- .IR name ,
- with group leader
- .IR name ,
- to
- .B /adm/users
- and makes the directory
- .BI /usr/ name
- owned by user and group
- .IR name .
- The options are
- .TF =leaderxx
- .TP
- .B ?
- Print the entry for
- .IR name .
- .TP
- .B :
- Add a group: add the name to
- .B /adm/users
- but don't create the directory.
- By convention, groups are numbered starting from 10000, users from 0.
- .TP
- .I newname
- Rename existing user
- .I name
- to
- .IR newname .
- .TP
- .BI = leader
- Change the leader of
- .I name
- to
- .IR leader .
- If
- .I leader
- is missing, remove the existing leader.
- .TP
- .BI + member
- Add
- .I member
- to the member list of
- .IR name .
- .TP
- .BI - member
- Remove existing
- .I member
- from the member list of
- .IR name .
- .PD
- .PP
- After a successful
- .I newuser
- command the file server overwrites
- .B /adm/users
- to reflect the internal state of the user table.
- .PP
- .I Noattach
- disables
- .IR attach (5)
- messages, in particular for system maintenance.
- Previously attached connections are unaffected.
- Another
- .I noattach
- will enable normal behavior.
- .PP
- .I Passwd
- sets the machine's password and writes it in non-volatile RAM.
- .PP
- .I Printconf
- prints the system configuration information.
- .PP
- .I Profile
- .B 1
- clears the profiling buffer and enables profiling;
- .I profile
- .B 0
- stops profiling and writes the data to
- .B /adm/kprofdata
- for use by
- .B kprof
- (see
- .IR prof (1)).
- If a number is not specified, the profiling state toggles.
- .PP
- .I Remove
- removes
- .IR files .
- .PP
- .I Route
- maintains an IP routing table. The
- .I subcommands
- are:
- .TF "add dest gate mask"
- .TP
- .B add \f2dest gate \fP[\f2mask\fP]
- Add a static route from IP address
- .I dest
- using gateway
- .I gate
- with an optional subnet
- .IR mask .
- .TP
- .B delete \f2dest\fP
- Delete an entry from the routing table.
- .TP
- .B print
- Display the contents of the routing table.
- .TP
- .B ripon
- Enables the table to be filled from RIP packets.
- .TP
- .B ripoff
- Disables the table from being updated by RIP packets.
- .PD
- .PP
- .I Sntp
- .I kick
- queries the SNTP server
- (see
- .IR fsconfig (8))
- and sets the time with its response.
- .PP
- The
- .I stat
- commands are connected with a service or device identified by the
- last character of the name:
- .BR d ,
- SCSI targets;
- .BR e ,
- Ethernet controllers;
- .BR i ,
- IDE/ATA targets;
- .BR m ,
- Marvell SATA targets;
- .BR w ,
- cached WORM.
- The
- .I stata
- command prints overall statistics about the file system.
- The
- .I stats
- command takes an optional argument identifying the characters
- of
- .I stat
- commands to run. The option is remembered and becomes the
- default for subsequent
- .I stats
- commands if it begins with a minus sign.
- .PP
- .I Sync
- writes dirty blocks in memory to the magnetic disk cache.
- .PP
- .I Time
- reports the time required to execute the
- .IR command .
- .PP
- .I Trace
- with no options prints the set of queue-locks held by each process in
- the file server. If things are quiescent, there should be no output.
- With an argument
- .I number
- it prints a stack traceback of that process.
- .PP
- .I Users
- uses the contents of
- .I file
- (default
- .BR /adm/users )
- to initialize the file server's internal representation of the users
- structure.
- Incorrectly formatted entries in
- .I file
- will be ignored.
- If file is explicitly
- .BR default ,
- the system builds a minimal functional users table internally;
- this can help recover from disasters.
- If the
- .I file
- cannot be read, you
- .I must
- run
- .IP
- .EX
- users default
- .EE
- .PP
- for the system to function. The
- .B default
- table looks like this:
- .IP
- .EX
- -1:adm:adm:
- 0:none:adm:
- 1:tor:tor:
- 10000:sys::
- 10001:map:map:
- 10002:doc::
- 10003:upas:upas:
- 10004:font::
- 10005:bootes:bootes:
- .EE
- .PP
- .I Version
- reports when the file server was last compiled and last rebooted.
- .PP
- .I Who
- reports, one per line, the names of users connected to the file server and the
- status of their connections.
- The first number printed on each line is the channel number of the connection.
- If
- .I users
- are given the output selects connections owned by those users.
- .PP
- .I Wormeject
- moves the WORM disk in slot
- .I tunit
- of the first jukebox to the output shelf.
- .PP
- .I Wormingest
- moves the WORM disk from the input shelf of the first jukebox to slot
- .IR tunit .
- .PP
- .I Wormoffline
- takes
- .I drive
- of the first jukebox out of service;
- .I wormonline
- puts it back in service.
- .PP
- .I Wormreset
- put discs back where the jukebox thinks they belong,
- and does this for all jukeboxes.
- .PP
- When the file server boots, it prints the message
- .IP
- .EX
- for config mode hit a key within 5 seconds
- .EE
- .PP
- If a character is typed within 5 seconds of the message appearing,
- the server will enter config mode.
- See
- .IR fsconfig (8)
- for the commands available in config mode.
- The system also enters config mode if, at boot time,
- the non-volatile RAM does not appear to contain a valid configuration.
- .PP
- .I Exsort
- is a regular command to be run on a CPU server, not on the file server
- console.
- It reads the named
- .I file
- (default
- .BR /adm/cache )
- and sorts the cache disk block numbers contained therein.
- It assumes the numbers are 4-byte integers and guesses the
- endianness by looking at the data.
- It then prints statistics about the cache.
- With option
- .B -w
- it writes the sorted data back to
- .IR file .
- .SH SEE ALSO
- .IR fs (4)
- .br
- Ken Thompson,
- ``The Plan 9 File Server''.
- .SH SOURCE
- .B /sys/src/fs
- .br
- .B /sys/src/cmd/disk/exsort.c
- .SH BUGS
- The
- .B worm*
- commands should accept an argument identifying a jukebox.
|