Содержание

Ключевые слова: Х-терминал, linux, LTSP, Linux Terminal Server Project, терминальный linux-сервер, бездисковая станция, ПК без жесткого диска, использование старых компьютеров, diskless workstation, thin client, asplinux, использование Linux в офисе, X-terminal

Устранение проблем с NFS

Файловая система NFS нужна Х-терминалу для монтирования корневой файловой системы сервера, а также для обеспечения доступа к файлам подкачки через локальную сеть. При работе сервера NFS возникает довольно большое количество ошибок, связанных с неправильной настройкой данной сетевой файловой системы. Более того, иногда проблемы связаны не с самой NFS, а с ошибочной работой других сетевых служб. В подтверждение этих слов вы лично можете искусственно воссоздать неработающий Х-терминал сервер, если неправильно настроите маршрутизацию, фильтрацию пакетов или попросту присвоите противоречивые параметры сетевым интерфейсам. Поэтому в этом разделе содержатся советы по ликвидации проблем, которые непосредственно связаны с использованием сетевой файловой системы NFS.

Мне доводилось сталкиваться с ситуацией, когда при попытке запуска демонов NFS останавливалась загрузка сервера Х-терминалов. При этом на экране отображалась такие строки:

...
Starting xinitd                                              [  OK  ]
Starting NFS services

На этом загрузка сервера благополучно останавливалась и идти дальше отказывалась. Если вы столкнетесь с подобной проблемой, то в первую очередь проверьте значение файла /etc/resolv.conf, так как возможно причина именно в его содержимом. В моем случае, там был указан адрес сервера имен (DNS-сервера провайдера), доступ к которому был временно недоступен. Если это не поможет, то для выяснения причин проанализируйте вывод команды, которая показывает направление маршрутизации сервера Х-терминалов, например:

$ netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
0.0.0.0         192.168.0.22    0.0.0.0         UG        0 0          0 eth1

Если на экране Х-терминала при загрузке вы увидели сообщение типа:

Kernel panic: No init found.  Try passing init= option to kernel.

Это означает, что вы пытаетесь примонтировать неправильную корневую директорию, или что каталог /opt/ltsp/i386/ - пуст.

При запуске Х-терминала на экране появилось сообщение такого содержания:

Root-NFS: Server returned error -13 while mounting /opt/ltsp/i386

Его смысл означает, что директория /opt/ltsp/i386 не описана в файле параметров экспортирования /etc/exports. Если этот так, то сейчас самое время ее туда вписать. Об ошибках такого рода могут свидетельствовать сообщения в системном журнале, похожие на:

Feb  1 08:15:49 xtserver rpc.mountd: refused mount request from ws001 for /opt/ltsp/i386 (/): no export entry

Сетевая файловая система NFS использует для своих нужд три вспомогательные программы: nfsd, mountd и portmap (иногда еще и rquotad). Поэтому при возникновении исключительных ситуаций, в первую очередь следует проверить наличие их в памяти сервера Х-терминалов. Воспользуемся для этих целей такими командами:

$ ps aux | grep nfsd
root      7556  0.0  0.0     0    0 ?        SW    2004   0:27 [nfsd]
root      7557  0.0  0.0     0    0 ?        SW    2004   0:24 [nfsd]
root      7558  0.0  0.0     0    0 ?        SW    2004   0:24 [nfsd]
root      7559  0.0  0.0     0    0 ?        SW    2004   0:26 [nfsd]
root      7560  0.0  0.0     0    0 ?        SW    2004   0:28 [nfsd]
root      7561  0.0  0.0     0    0 ?        SW    2004   0:25 [nfsd]
root      7562  0.0  0.0     0    0 ?        SW    2004   0:23 [nfsd]
root      7563  0.0  0.0     0    0 ?        SW    2004   0:24 [nfsd]
mikola   28403  0.0  0.0  3764  596 pts/0    S    16:09   0:00 grep nfsd

Если результат работы команды похож на вывод, что представлен выше, то демон nfsd запущен.

$ ps aux | grep mountd
root      7571  0.0  0.0  1768  316 ?        S     2004   0:00 rpc.mountd
mikola   28414  0.0  0.0  3768  600 pts/0    S    16:11   0:00 grep mountd

С запуском mountd также все в порядке. Проверить работу демонов NFS-сервера можно и таким способом:

$ /sbin/service nfs status
rpc.mountd (pid 7571) running...
nfsd (pid 7563 7562 7561 7560 7559 7558 7557 7556) running...
rpc.rquotad (pid 7552) running...

Для portmap применяем стандартную команду:

$ ps aux | grep portmap
rpc        640  0.0  0.0  1556  164 ?        S     2004   0:00 portmap
mikola   28445  0.0  0.0  3764  596 pts/0    S    16:12   0:00 grep portmap

Как видно по ее ответу, программа portmap также работает. Проверить работу portmap можно еще и следующим образом:

$ netstat -an | grep ":111 "
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      
udp        0      0 0.0.0.0:111             0.0.0.0:*

Если вы обнаружите, что один из демонов NFS не запущен, то его следует запустить одной из следующих команд:

# /sbin/service portmap start
Starting portmapper:                                       [  OK  ]
# /sbin/service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]

На отсутствие в оперативной памяти сервера процесса portmap может в частности свидетельствовать такие строки на экране Х-терминала:

Looking up port of RPC 100003/2 on 192.168.1.1
portmap: server 192.168.1.1 not responding, timed out
Root-NFS: Unable to get nfsd port number from server, using default
Looking up port of RPC 100005/2 on 192.168.1.1
portmap: server 192.168.1.1 not responding, timed out
Root-NFS: Unable to get mountd port number from server, using default
mount: server 192.168.1.1 not responding, timed out
Root-NFS: Server returned error -5 while mounting /opt/ltsp/i386
VFS: unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or 02:00
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on 02:00

Бывают ситуации, когда все необходимые сетевой файловой системе NFS демоны запущены, а Х-терминал все равно не запускается. В таком случае нужно проверить зарегистрированы ли демоны NFS в службе portmap. Поможет нам в этом такая команда:

$ /usr/sbin/rpcinfo -p localhost
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  32768  status
    100024    1   tcp  32768  status
    391002    2   tcp  37614  sgi_fam
    100011    1   udp    807  rquotad
    100011    2   udp    807  rquotad
    100011    1   tcp    810  rquotad
    100011    2   tcp    810  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100021    1   udp  39135  nlockmgr
    100021    3   udp  39135  nlockmgr
    100021    4   udp  39135  nlockmgr
    100005    1   udp  39136  mountd
    100005    1   tcp  44446  mountd
    100005    2   udp  39136  mountd
    100005    2   tcp  44446  mountd
    100005    3   udp  39136  mountd
    100005    3   tcp  44446  mountd

Как и было обещано, проблем с использованием NFS-сервера хватает. Но следует отметить, что один раз правильно настроенная сетевая файловая система в дальнейшем работает, как правило, без сбоев.

Пока интересно, читаем дальше!

Авторское право © Сеник Николай, 2004-2006