dCache has a powerful administration interface. It is accessed
with the ssh protocol. The server is part of the
adminDoor domain, which is started on the admin
node. Connect to it with
[user] $ ssh -c blowfish -p 22223 -l admin <adminNode>
The initial password is
“dickerelch” (which is German
for “fat elk”) and you will be greeted by the
prompt
dCache Admin (VII) (user=admin)
(local) admin >The password can now be changed with
(local) admin >cd acm(acm) admin >create user admin(acm) admin >set passwd -user=admin <newPasswd> <newPasswd>(acm) admin >..(local) admin >logoff
This already illustrates how to navigate within the
administration interface: Starting from the local prompt
((local) admin >) the command cd takes you
to the specified cell
(here acm, the access control manager). There
two commands are executed. The escape sequence
.. takes you back to the local prompt and
logoff exits the admin shell.
Note that cd only works from the local
prompt. If the cell you are trying to access does not exist, the
cd command will not complain. However,
trying to execute any command subsequently will result in an
error message “No Route to cell...”. Type
.. to return to the (local) admin > prompt.
All cells know the commands info for general
information about the cell and show pinboard
for listing the last lines of the pinboard of the cell. The
output of these commands contains useful information for solving
problems. It is a good idea to get aquainted with the normal
output in the following cells: PoolManager, PnfsManager,
and the pool cells (e.g., <poolHostname>_1).
There also is the command help for listing all commands the cell knows and their parameters. However, many of the commands are only used for debuging and development purposes. Only commands described in this documentation should be used for the administration of a dCache system.
Instead of using ssh to access the admin interface, the dCache graphical user interface can be used. If it is not included in the dCache distribution, it can be downloaded from the dCache homepage. It is started by
[user] $ java -jar org.pcells.jarFirst, a new session has to be created with → . After giving the session a name of your choice, a login mask appears. The session is configured with the button. The only thing that needs to be configured is the hostname. After clicking and you are ready to log in. Pressing the right mouse button clicking will scan the dCache instance for domains. Cells can be reached by clicking on their name and the same commands can be entered as in the SSH login.
The other tabs of the GUI are very useful for monitoring the dCache system.
The most useful command of the pool cells is rep ls. It lists the files which are stored in the pool
by their pnfs IDs:
000100000000000000001120 <-P---------(0)[0]> 485212 si={myStore:STRING}
000100000000000000001230 <C----------(0)[0]> 1222287360 si={myStore:STRING}
Each file in a pool has one of the 4 primary states:
“cached” (<C---),
“precious” (<-P--),
“from client” (<--C-), and
“from store” (<---S).
Two commands in the pool manager are quite useful: rc ls lists the requests currently handled by the pool manager. A typical line of output for a read request with an error condition is (all in one line):
000100000000000000001230@0.0.0.0/0.0.0.0 m=1 r=1 [<unknown>]
[Waiting 08.28 19:14:16]
{149,No pool candidates available or configured for 'staging'}As the error message at the end of the line indicates, no pool was found containing the file and no pool could be used for staging the file from a tertiary storage system.
Finally, cm ls with the option
-r gives the information about the pools
currently stored in the cost module of the pool manager. A
typical output is:
(PoolManager) admin >cm ls-r<poolName1>={R={a=0;m=2;q=0};S={a=0;m=2;q=0};M={a=0;m=100;q=0};PS={a=0;m=20;q=0};PC={a=0;m=20;q=0}; (...continues...) SP={t=2147483648;f=924711076;p=1222772572;r=0;lru=0;{g=20000000;b=0.5}}} <poolName1>={Tag={{hostname=<hostname>}};size=0;SC=0.16221282938326134;CC=0.0;} <poolName2>={R={a=0;m=2;q=0};S={a=0;m=2;q=0};M={a=0;m=100;q=0};PS={a=0;m=20;q=0};PC={a=0;m=20;q=0}; (...continues...) SP={t=2147483648;f=2147483648;p=0;r=0;lru=0;{g=4294967296;b=250.0}}} <poolName2>microcebus_2={Tag={{hostname=<hostname>}};size=0;SC=2.7939677238464355E-4;CC=0.0;}
While the first line for each pool gives the information stored in the cache of the cost module, the second line gives the costs (SC: space cost, CC: performance cost) calculated for a (hypothetical) file of zero size. For details on how these are calculated and their meaning, see the section called “The Cost Module”.
The ssh admin interface can be used non-interactively by
scripts. For this the dCache-internal ssh server uses
public/private key pairs.
The file config/authorized_keys contains
one line per user. The file has the same format as
~/.ssh/authorized_keys which is used by
sshd. The keys in
config/authorized_keys have to be of type
RSA1 as dCache only supports SSH protocol 1. Such a key is
generated with
[user] $ ssh-keygen -t rsa1 -C 'SSH1 key of <user>'
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/<user>/.ssh/identity):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/<user>/.ssh/identity.
Your public key has been saved in /home/<user>/.ssh/identity.pub.
The key fingerprint is:
c1:95:03:6a:66:21:3c:f3:ee:1b:8d:cb:46:f4:29:6a SSH1 key of <user>
The passphrase is used to encrypt the private key (now stored in
/home/<user>/.ssh/identity). If
you do not want to enter the passphrase every time the private
key is used, you can use ssh-add to add it to
a running ssh-agent. If no agent is running
start it with
[user] $ if [ -S $SSH_AUTH_SOCK ] ; then echo "Already running" ; else eval `ssh-agent` ; fiand add the key to it with
[user] $ ssh-add
Enter passphrase for SSH1 key of <user>:
Identity added: /home/<user>/.ssh/identity (SSH1 key of <user>)
Now, insert the public key
~/.ssh/identity.pub as a separate line into
config/authorized_keys. The comment field
in this line “SSH1 key of
<user>” has to be changed to the
dCache user name. An example file is:
1024 35 141939124(... many more numbers ...)15331 adminThe key manager within dCache will read this file every minute.
Now, the ssh program should not ask for a password anymore. This is still quite secure, since the unencrypted private key is only held in the memory of the ssh-agent. It can be removed from it with
[user] $ ssh-add -d
Identity removed: /home/<user>/.ssh/identity (RSA1 key of <user>)In scripts, one can use a “Here Document” to list the commands, or supply them to ssh as standard-input (stdin). The following demonstrates using a Here Document:
#!/bin/sh
#
# Script to automate dCache administrative activity
outfile=/tmp/$(basename $0).$$.out
ssh -c blowfish -p 22223 admin@<adminNode> > $outfile << EOF
cd PoolManager
cm ls -r
(more commands here)
logoff
EOFor, the equivalient as stdin.
#!/bin/bash
#
# Script to automate dCache administrative activity.
echo -e 'cd <pool_1>\nrep ls\n(more commands here)\nlogoff' \
| ssh -c blowfish -p 22223 admin@<adminNode> \
| tr -d '\r' > rep_ls.out| Copyright dCache.org © 2003 - 2008 |