Интеграция операционных систем Windows и FreeBSD в бездисковых сетях для обеспечения учебного процесса
lexx
🕛 12.07.2006, 15:32
1. Постановка проблемы"Интеграция операционных систем Windows и FreeBSD в бездисковых сетях для обеспечения учебного процесса" Или "Выкидыване чертей в окошко"
Обеспечение участия в учебном процессе всех имеющихся компьютеров, в том числе с неустановленными жесткими дисками, то есть поддержки приложений необходимых по учебному плану (Microsoft Word, Excel, Access, Visual Basic, Quick или Turbo Basic, а так же обучающие программы, такие, как, например Open Physics) из чего следует, что на всех машинах должны выполняться Windows-нриложения, то есть должна быть загружена Windows или любая другая ОС, поддерживающая вышеназванные приложения.
2. Аннотация
В данной практической работе описывается процесс построения сети между бездисковыми компьютерами. Такая ситуация сложилась в связи с отсутствием финансов на полное обеспечение компьютеров необходимыми комплектующими (а именно - жёсткими дисками). Подобная ситуация может складываться при построении сети с наименьшими затратами на постройку (так, например, отпадает надобность обеспечивать все рабочие станции винчестерами, что существенно снижает затраты). Практическая часть работы была проведена в компьютерном классе Лицея #8, где была построена сеть из 15 компьютеров, из которых жесткими дисками были оснащены только 6. В работе предлагается довольно необычный и оригинальный способ построения бездисковых сетей на базе сетевой операционной системы FreeBSD и способ организации выполнения Windows-приложений под ней.
3. Введение
В настоящее время данную проблему можно решить несколькими способами:
Обеспечить все компьютеры жёсткими дисками емкостью не менее 2 Гб и установкой Windows 98/2000
Установить програмное обеспечение от Microsoft, позволяющее загружать ОС на бездисковых компьютерах по сети.
Поскольку оба пути решения проблемы предполагают большие материальные затраты, а в распоряжении Лицея имеются 15 машин из которых жёсткими дисками оснащено только 6, а так же минимальное количество денежных средств на покупку комплектующих и программного обеспечения, то необходимо найти альтернативной путь решения поставленной проблемы.
Выделенные средства (предыстория)
Изначально в классе Лицея #8 стояло 9 морально устаревших рабочих станций. После того, как по президентской программе были поставлены 6 новых машин (один сервер и пять рабочих станций) было принято решение обновить компьютерный класс. Фондом 'Одарённые дети' были выделены средства на покупку ещё 8 машин, но в связи с ограниченным финансированием на данных компьютерах отсутствовали средства для ввода информации (floppy, cd-rom) кроме интегрированной сетевой платы, а так же жёсткие диски (прочие устройства по мере необходимости снимались со стоявших ранее компьютеров). Так же был приобретён switch и сетевые шнуры.
Наличие
Таким образом, в компьютерном классе находилось 15 компьютеров в соответствующей конфигурации (распределены в соответствии с позже присвоенными им номерами):
Pentium 4 - 2400, SDRAM 256 Mb DIMM, HDD - 40 Gb, CD-RW, floppy, lan
Сeleron - 850, SDRAM 128 Mb DIMM, lan (интегрированная), HDD/floppy/CD-ROM отсутствуют - в числе восьми штук
Celeron - 1200, SDRAM 128 Mb DIMM, HDD - 40 Gb, CD-ROM, floppy, lan - в числе пяти штук
AMD K-6, SDRAM 64 Mb DIMM, HDD - 2 Gb, CD-ROM, floppy, lan - ушло как print-сервер
4. Решение проблемы
Изначально было предложено несколько путей решения поставленной проблемы, но они постепенно, один за другим, показывали свою несостоятельность и неработоспособность. Так, например, оказалось невозможным загружать Windows-систему с сервера, так как не удалось найти продукт Windows-DHCP и другие продукты, позволяющие реализовать загрузку по сети в связи с их стоимостью (около $300), а как сказано в постановлении проблемы, затраты на организацию постройки сети должны быть минимальными. Идея загрузки удаленного терминала родилась, когда вспомнили утилиту, которая позволяла, загрузившись с дискет открывать удаленный рабочий стол Windows 2000 Terminal Server (Network Desktop Driver), но тут же была так же забракована в связи с относительной дороговизной установки 3"5 приводов на все 8 компьютеров. Так же всплыла утилита, позволяющая открывать удалённый рабочий стол Windows из под Unix -систем. В качестве таковой системы была избрана, как наиболее простая и надежная операционная система FreeBSD 4.6, которая была установлена на двухгигабайтный жесткий диск, снятый с машины, которая принт сервер. Так как решилась проблема с местом на диске, в конфигурацию системы были включены: пакет isc-dhcp, сервер X-Window, небольшой оконный менеджер afterstep). Далее одна из машин (Цел 850) была сконфигурирована как DHCP- сервер в созданном домене lyceum. После данных настроек для обеспечения рабочего процесса с каждой машины с установленной системой Windows 2000 открывает терминал одна или две бездисковые машины. Чем мощнее и менее загружена машина, тем больше удалённых клиентов к ней подключены.
Настройка машин, работающих под FreeBSD.
Конфигурирование DHCP-ссрвера
DHCP (Dynamic Host Configuration Protocol) как следует из названия протокол позволяющий автоматически настраивать сетевую конфигурация подключаемых к сети компьютеров. В соответствии с поставленной задачей DHCP- сервер будем настраивать так, чтобы каждой машине всё время выдавался постоянный IP адрес, а так же чтобы можно было подключить к сети постороннюю машину (например если кто-нибудь приносит с собой ноутбук) Конфигурирование dhcp-сервера и dhcp-клиснта производится редактированием файла конфигурации /etc/dhcpd.conf. Поскольку графические интерфейсы администрирования системы не установлены (например webmin) , конфигурируем из командной строки:
# # хосты, которые мы не знаем, создаётся на случай # если будем подключать на короткое время ещё компьютеры # subnet 192.168.0.0 netmask 255.255.0.0 { option subnet-mask 255.255.255.0; option routers 192.168.0.2; range 192.168.0.101 192.168.0.199; } # # настройка адресов для каждого компьютера сети # host bis { option subnet-mask 255.255.255.0; option routers 192.168.0.2; hardware ethernet 00:00:b4:38:cf:6a; #MAC-адрес #каждой станции fixed-address 192.168.0.4; }Данная конфигурация прописывается для каждого узла сети для каждого узла сети. Дальнейшая задача - наладить работу остальных машин, на которых отсутствует жёсткий диск.
Настройка сервера удаленной загрузки
Запуск сервера tftp (Trivial File Transfer Protocol)
Для реализации возможности загрузки по сети нам потребуется на сервере запустить демон tftpd, который был установлен с базовой системой и автоматически запускается при загрузке. Протокол tftp (Trivial Hie Transfer Protocol - простой протокол пересылки файлов) необходим для получения начального загрузчика бездисковым клиентом.
Для запуска tftpd добавляем в файл /etc/inetd.conf следующую строку:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot:
После этого создаём каталог /tftpboot, затем переписываем в пего начальный загрузчик FreeBSD для загрузки по стандарту РХE - /boot/pxeboot и перезапускаем inetd.
# mkdir /tftpboot # ар /boot/pxeboot /tftpboot/ # kill -HUP 'cat /var/rwi/inetd.pid' Если демон inetd не запущен, надо добавить строку в файл /etc/rc.conf inetd_enable="YES"и при следующей загрузке он запустится автоматически
Построение специального ядра для бездисковых станций
Необходимо собрать специальное ядро для бездисковых станций, чтобы они могли загружаться по сети. В каталоге
/usr/src/sys/1386/conf, создаём файл конфигурации DISKLESS и добавляем в него следующие опции: options BOOTP # Use BOOTP to obtain IP #address/hostname options BOOTP_NFSROOT # NFS mount root filesystem #using BOOTP info options BOOTP_NFSV3 # Use NFS v3 to NFS mount #rootoptions options BOOTP_COMPAT #Workaround for broken bootp #daemons.
Удостоверяемся, что в ядре присутствуют следующие опции:
options MFS #Memory Filesystem
options NFS # Network Filesystem
options NFS_ROOT # NFS usable as root device,
# NFS required
options NULLFS # nullfs
Создание корневой файловой системы
Для бездисковых клиентов необходимо создать корневую файловую систему и основные файлы конфигурации. В каталоге /usr/share/examples/diskless есть скрипт clone_root, который автоматически создает корневую файловую систему для бездисковых станций. Перед тем, как запускать скрипт clone_root, нужно создать каталог /conf/default/etc и создать в нем основные файлы конфигурации системы rc.conf, fstab, ttys, hosts, а также по желанию и потребностям любые другие файлы из каталога /etc которые требуется переопределить. В противном случае clone_root перенесет файлы конфигурации вашей системы, что может создать определенные проблемы. Необходимо внести некоторые изменения в файл rc.conf, в первую очередь стоит определить пути для запуска локальных скриптов во время загрузки системы local_startup="/etc/rc.d", соответственно необходимо создать каталог /conf/default/etc/rc.d. Так как IP адрес, адрес шлюза по умолчанию и имя хоста будут выдаваться DHCP сервером автоматически, нужно удалить соответствующие строки из файла конфигурации. Все остальное остается как обычно. Ниже приведен примерный файл конфигурации:
local_startup="/etc/rc.d"
sendmail_enable="NONE"
sshd_enable="YES"
keymap=ru.koi8-r
scrnmap=koi8-r2cp866
font8x16=cp866b-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8
keyrate="fast"
Кусочек файла fstab для каждой станции будет выглядит так:
192.168.0.х: /usr /usr nfs ro 0 0
192.168.0.х:/diskless_root / nfs rw 0 0
proc /proc procfs rw 0 0
Теперь можно создать файлы конфигурации для конкретных бездисковых машин. Для этого нужно создать каталог с именем машины, или с IP адресом, /conf/192.168.0.х/etc, и создать в нем необходимые конфигурационные файлы. После того, как были созданы базовые конфигурационные файлы, можно запустить скрипт для создания корневой файловой системы:
#sh /usr/share/example/diskless/clone_root all
Скрипт создаст каталог /diskless_root, в котором будет находиться корневая файловая система для бездисковых клиентов, ядро он скопирует из каталога /usr/src/sys/compile/DISKLESS (ядро diskless-конфигурации перед данным этапом необходимо собрать) Oбщие файлы конфигурации, и файлы для конкретных бездисковых машин будут скопированы в каталог /diskless_root/conf.
Создание файлов подкачки для бездисковых станций
Не смотря на то, что на машинах с отсутствующим жёстким диском установлено 128Мб оперативной памяти не лишним будет создать файл подкачки. Для этого нужно создать каталог, например /home/swap, и для каждой станции создать свой файл подкачки. Ниже приведен пример по созданию swap файла для бездискового клиента с IP адресом 192.168.0.4 размером 128Мб:
#mkdir /home/swap
#dd if=/dev/zero bs=1024 count=128000 of=/home/swap/swap.192.168.0.4
#chmod 0600 /home/swap/swap.192.168.0.4
Так как у нас несколько бездисковых терминалов, то проделываем тоже самое для каждого из них. Размер файла делаем равному оперативной памяти (128 Мб, а не 310 как полагается - [размер памяти] х 2 + 50), так как свободного пространства у нас чуть больше 1,5 Гб.
Экспорт файловых систем (демон nfsd)
Демон nfsd потребуется для экспорта файловых систем для бездисковых станций.
Для автоматического запуска nfsd во время загрузки ОС добавляем следующие строки в /etc/rc.conf:
portmap_enable="YES"
nfs_server_enable="YES"
Создаём файл /etc/exports и добавьте в него описание файловых систем, которые вы хотите экспортировать. В данном случае это будет выглядеть так:
/diskless_root -alldirs -maproot=0 192.168.0.х
/usr -alldirs -ro 192.168.0.х
/home/swap -alldirs -maproot=0:10 192.168.0.х
Для того чтобы изменения вступили в силу, необходимо перезапустить демон mountd
# kill -HUP `cat /var/run/mountd.pid`
Настройка пакета isc-dhcp
Теперь нам необходимо добавить в файл конфигурации /etc/dhcpd.conf следующие строки:
default-lease-time 600; max-lease-time 7200; authoritative; ddns-update-style none; option domain-name "computer2.lyceum"; option domain-name-servers 192.168.0.2; option routers 192.168.0.2; option swap-path code 128 = string; option swap-size code 129 = integer 32; subnet 192.168.0.1 netmask 255.255.255.0 { range 192.168.0.1 192.168.16.; use-host-decl-names on; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; host test1 { hardware ethernet 00:01:02:f9:e2:c1; fixed-address 192.168.0.10; next-server 192.168.0.2; filename "pxeboot"; option root-path "192.168.0.2:/diskless_root"; option swap-path "192.168.0.2:/home/swap"; option swap-size 128000; } host test2 { hardware ethernet 00:01:02:f9:e2:ce; fixed-address 192.168.0.2; next-server 192.168.0.2; filename "pxeboot"; option root-path "192.168.0.2:/diskless_root"; option swap-path "192.168.0.2:/home/swap"; option swap-size 128000; } }
После выставления соответствующих значений, получается, что каждой из машин в кабинете будет при подключении выдаваться индивидуальный IP-адрес, который закреплён за каждой машиной индивидуальным MAC-адресом сетевой карты каждого компьютера.
Теперь запускаем демон dhcpd:
# /usr/local/etc/rc.d/isc-dhcpd.sh start
Internet Software Consortium DHCP Server V3.0.1rc9
Copyright 1995-2001 Internet Software Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 1 leases to leases file.
Listening on BPF/rl0/00:c0:26:ac:1d:7a/192.168.0.2/24
Sending on BPF/rl0/00:c0:26:ac:1d:7a/192.168.0.2/24
Sending on Socket/fallback/fallback-net
После проведённых настроек каждому компьютеру присвоен адрес, на каждом загружена FreeBSD в режиме командной строки, что неприемлемо для запуска визуальных приложений, поэтому следующий шаг - конфигурирования сервера X-Window - для всех машин вообще и для каждой индивидуальные настройки в частности.
Настройка Х - Window System
Одним из свойств X-Window является то, что сервер может быть запущен только на одном компьютере, но он может выдавать изображение на мониторы компьютеров, подключённых к этому компьютеру по сети. Это свойство и будет использоваться для разгрузки машин, операционная система на которые загружается по сети и находится в оперативной памяти.
Х - сервер на бездисковой станции настраивается обычным способом. Можно воспользоваться для этого программой xf86cfg. Конфигурационный файл сохраняем в каталоге /etc/X11. Так как файловая система /etc размещается в оперативной памяти (MFS), переписываем конфигурационный файл /etc/X11/XF86Config в каталог на сервере бездисковой загрузки, где хранится конфигурация бездисковой станции /conf/192.168.0.4/etc/X11, для того, чтобы он не был утерян при следующей загрузке. Создаём файл ~/.xinitrc, добавляем в него оконный менеджер afterstep, X - сервер запускается командой startx. Так же для облегчения работы в XF86Config нужно дописать загрузку rdesktop, о которой будет сказано ниже.
Настройка удалённой загрузки на станциях
Для удалённой загрузки сетевым картам, которым и укомплектованы рабочие станции, необходим Boot-ROM. Далее в настройках BIOS ставим очередность загрузки операционной системы так, чтобы первым ресурсом для поиска загрузочного сектора была сеть (LAN).
При загрузке машины активируется сетевой загрузчик и станция проверяет сеть на наличие DHCP- и proxy-сервера и, получив назначенный DHCP-сервером адрес проверяет сеть на наличие возможности загрузки по сети. Найдя соответствующее предложение на машине загружается FreeBSD с заранее подготовленными установками (описано выше).
После загрузки мы имеем полноценную FreeBSD-систему запущенную на 9 компьютерах. Следующая задача - выполнять с данных машин Windows-приложения.
Существует такой проект, как Remote Desktop (www.rdesktop.org), которая позволяет открывать удалённый рабочий стол Windows семейства NT 5.х и выше из-под UNIX-систем, которая впоследствии будет использоваться для загрузки программ, необходимых учебному процессу.
Настройка Windows-части сети
Общий момент
На все машины, оснащённые жесткими дисками,, устанавливаем Windows 2000 Server. Выбор именно варианта Server объясняется тем, что эта система может намного лучше распределять ресурсы компьютера при работе по сети. Единственный минус данной системы это то, что при одновременной работе с одним и тем же приложением в память загружается не один вариант данного приложения (как в UNIX-системах), а столько, сколько раз приложения запущено, что затрудняет работу из-за падения быстродействия.
Настройка системы
Так как Windows в нашем случае будет работать на многопользовательский режим (то есть фактически одна машина будет тащить на себе ещё парочку), то вполне очевидно что ресурсов будет катастрофически не хватать, поэтому постараемся их как можно более увеличить. Очевидно, что первым пунктом данной программы будет увеличение фалов подкачки (виртуальной памяти). Находится данная функция в свойствах 'Моего компьютера' во вкладке 'Дополнительно' за кнопочкой 'Настройки быстродействия'. Далее - 'настройка файла подкачки'. Так как каждая машина в среднем будет работать за троих, то и размер файла подкачки надо увеличить раза в три. Очевидно, что 500 Мб будет вполне достаточно, так как остальные компьютеры будут использовать данную память через сеть, что не требует уж очень хорошего большого быстродействия. (проблема с тормозами будет оговорена в соответствующем пункте)
Настройка сети
IP-адрес, как уже было неоднократно сказано выше, ставится на автоматической получение от DHCP-сервера. Выставляется эта функция по адресу 'Панель управления' -> 'Сеть и удалённый доступ к сети' -> 'Подключение к локальной сети' -> 'Протокол TCP/IP' -> Свойсвтва -> выбрать 'Получать IP-адрес автоматически' - таким образом каждая машина будет получать адрес, который назначен для неё на DHCP-сервере.
В поле 'DNS-сервер' вводим адрес нашего DNS-сервера (компьютер N2) - 192.168.0.2.
Настройку сети можно упростить, сделав копию необходимых изменений в реестре Windows и распространять среди машин с одинаковой конфигурацией - это сэкономит довольно большое количество времени.
Следующий шаг - создание домена (домен создавался при помощи мастера создания домена Active Directory). Далее в разделе 'Политика локальной безопасности' в вкладке 'Клиент (только ответ)' необходимо разрешить доступ к ресурсам домена поставив в свойствах галочку на пункте 'Динамический IP'. Так же в домене Active Directory lyceum нужно создать записи для всех компьютеров с Windows 2000, которые будут входить в этот домен (в консоли 'Компьютеры и домены Active Directory' -> кнопка 'Действие' -> 'Создать компьютер'
Затем каждый их компьютеров с Windows 2000 необходимо включить в домен: 'Мой компьютер' -> 'Свойства' -> вкладка 'Сетевая идентификация' -> 'Свойства' -> поставить переключатель на 'Является членом домена' и написать название домена 'lyceum' после чего по требованию ввести название домена, имя компьютера и пароль для входа в домен.
Альтернативный вариант - отредактировать smb.conf следующим образом:
[global]
log file = /usr/local/samba/var/log.%m
domain group map = /usr/local/samba/lib/group.map
max log size = 100
domain master = yes
dns proxy = no
logon home = \\%L\%u
domain logons = yes
encrypt passwords = yes
logon path = \\%L\%u\profiles
server string = Windows 2000 Server
nt acl support = no
hosts allow = 192.168.0.
workgroup = lyceum
logon script = login.bat
netbios name = main
socket options = IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192 TCP_NODELAY
local master = no
client code page = 866
security = user
logon drive = Z:
os level = 64
log level = 0
admin users = root
name resolve order = lmhosts hosts dns
wins support = true
username map = /usr/local/samba/lib/user.map
[netlogon]
path = /usr/local/samba/lib/netlogon
browseable = no
[Comput]
path = /arch/Comput
writable = yes
valid users = @adm,@comput
[homes]
writable = yes
Необходимо создать в сервере samba пользователя root и под этим пользователем регистрировать машины в сети. Каждая машина с установленной ОС Windows 2000 должна быть прописана в домене следующим образом:
useradd -d /dev/null -s /bin/false -g mashines MY_COMP$
smbpasswd -a -m MY_COMP
Как видно выше - создаётся группа mashines, с целью упростить управление ресурсами, используемыми с данных машин.
Плюс альтернативного варианта - контроллером домена является компьютер под управлением операционной системы, более адаптированной для работы в роли сервера.
Плюс основного варианта - контроллером домена является более мощная машина.
Организация доступа к файлам
В операционных системах Windows семейства NT, в том числе и 2000 есть возможность изменить адрес папки 'Мои Документы' что позволяет грузить данную папку с одного жесткого диска специально выделенного для этого компьютера. Данная папка, в силу стечения обстоятельств, оказалась на компьютере #1. В данной папке создаются папки, названием которых служат имена лицеистов, которые будут свои файлы в этих папках хранить - очевидно, что сохранность файлов зависит только от порядочности учеников.
Данная система не намного отличается от системы безопасности, построенной в компьютерном центре 'Диалог' когда каждому человеку выдаётся свой собственный логин и своя собственная папка 'Мои документы'. Такая система требует либо титанического труда, либо довольно интересных скриптов по созданию пользователей и генерации настроек для них, но такая система себя не оправдывает из-за своего количества дыр и недоделок, что сводит её суть к тому, что построено в нашем случае. Следующее, что необходимо сделать, чтобы файлы не терялись - это организовать синхронизацию файлов, создаваемых и редактируемых на каждом компьютере с удалённым хранилищем файлов.
Не лишним так же будет в настройках локального диска, на котором все документы хранятся, поставить режим кэширования 'Автоматическое кэширование для документов' - при этом открываемые документы автоматически загружаются и становятся доступны при автономной работе, старые файлы удаляются, освобождая место для новых версий документов и чтобы обеспечить надлежащий совместный доступ всегда используется версия файла с сервера.
Альтернативный вариант - синхронизация содержимого локальных дисков, точнее папок, в которых хранятся пользовательские документы. Способ синхронизации - при помощи программы Total Commander. Для реализации необходимо создать задание, чтобы к концу дня данная программа запускалась в режим синхронизации (если вручную - то во вкладке 'Команды' -> 'Синхронизировать папки') После чего обновляются все измененные файлы и удаляются отсутствующие, чем обеспечивается то, что набор рабочих документов на каждом компьютере одинаков.
Плюс - альтернативного метода: меньшая загрузка сети и нагрузка на сервер.
Очевидный минус: наличие задействованности человеческого фактора - для осуществления необходим человек, который будет управлять процессом синхронизации.
Организация доступа в Internet
Так как доступом в Internet через модем оснащена только одна машина, то необходимо локализовать данную машину, как proxy-сервер нашей сети. Как было сказано - соединение модемное, но как получается соединение задействовано, как правило, только для одного человека, и всё сводится к тому, чтобы организовать соединение с любой другой машины.
Для решения была использована программа User Gate, которая позволяла использовать компьютер как роутер. Данная программа поддерживает график работы (можно сделать соединение недоступным в любое время - например в выходные), осуществляет слежение за трафиком соединения - можно вставить такие настройки, что невозможно будет намного превысить предельный дневной трафик (который в свою очередь так же строго регламентирован - не более 5 Мб в день). Кроме того, осуществляется фильтрация рекламы, что сокращает трафик, фильтрация опасных пакетов (что предотвращает атаку на построенную сеть по Internet). Так как происходит кэширование данных в памяти подключённого через модем компьютера, то производительность соединения несколько возрастает. Так же можно запретить посещение запрещённых страниц (по условиям пользования услугами Internet запрещено посещение сайтов, содержимое которых связанно с сексом, насилием и ненормативной лексикой). Из плюсов данного решения можно отметить полный контроль над трафиком соединения. Минус один - программа платная.
5. Заключение
По окончании работы в компьютерном классе Лицея находятся 15 компьютеров, 6 из которых не оснащены жёстким диском, объединённых в сеть, поддерживающих все необходимые для обеспечения учебного процесса приложения. Финансовые затраты на организацию класса были сведены к минимуму, что отвечает поставленной задаче.
Интеграция операционных систем FreeBSD и Windows в бездисковых сетях позволяет удешевить организацию компьютерных классов на основе сетевой работы бездисковых компьютеров.
Народ, ногами не пинайте. Я на этой галиматье получил первое место на конкурсе "шаг в будущее" в номинации "системное програмирование" :)