Ключевые слова: Х-терминал, linux, LTSP, Linux Terminal Server Project, терминальный linux-сервер, бездисковая станция, ПК без жесткого диска, использование старых компьютеров, diskless workstation, thin client, asplinux, использование Linux в офисе, X-terminal
Файловая система 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-сервера хватает. Но следует отметить, что один раз правильно настроенная сетевая файловая система в дальнейшем работает, как правило, без сбоев.