Відмінності між версіями «2 Системи НФС»

Матеріал з Wiki TNEU
Перейти до: навігація, пошук
м (Захист на 2 Системи НФС встановлено (‎[edit=sysop] (безстроково) ‎[move=sysop] (безстроково)))
Рядок 1: Рядок 1:
 
Network File System (NFS) - мережева файлова система. Дозволяє експортувати файлові системи через мережу. Часто використовується для обслуговування бездискових робочих станцій, організації спільного використання файлів та програм.  
 
Network File System (NFS) - мережева файлова система. Дозволяє експортувати файлові системи через мережу. Часто використовується для обслуговування бездискових робочих станцій, організації спільного використання файлів та програм.  
 
 
NFS була розроблена, щоб дозволити монтувати розділи дисків віддалених комп'ютерів, так ніби вони знаходяться на локальному жорсткому диску. Це забезпечує швидке, прозоре спільне використання файлів через мережу. Ви зможете зберігати документи і програми в одному місці та зробити його доступним тільки для визначених користувачів.  
 
NFS була розроблена, щоб дозволити монтувати розділи дисків віддалених комп'ютерів, так ніби вони знаходяться на локальному жорсткому диску. Це забезпечує швидке, прозоре спільне використання файлів через мережу. Ви зможете зберігати документи і програми в одному місці та зробити його доступним тільки для визначених користувачів.  
 
 
При не коректному встановленню NFS також створює потенційну небезпеку несанкціонованого доступу до диску через мережу і як наслідок розголошення і псування інформації. Тому значний наголос, при використанні мережевих файлових систем, потрібно робити на безпеку та контроль доступу.  
 
При не коректному встановленню NFS також створює потенційну небезпеку несанкціонованого доступу до диску через мережу і як наслідок розголошення і псування інформації. Тому значний наголос, при використанні мережевих файлових систем, потрібно робити на безпеку та контроль доступу.  
 
 
Існують також інші мережеві файлові системи:  
 
Існують також інші мережеві файлові системи:  
 
 
Samba файлова система для оффтопікових (ТМ) клієнтів.  
 
Samba файлова система для оффтопікових (ТМ) клієнтів.  
 
 
Andrew файлова система для IBM, надає спільне використання файлів з додатковою безпекою та покращенню продуктивністю.  
 
Andrew файлова система для IBM, надає спільне використання файлів з додатковою безпекою та покращенню продуктивністю.  
 
 
Coda файлова система розроблена для роботи з від'єднаними клієнтами.  
 
Coda файлова система розроблена для роботи з від'єднаними клієнтами.  
 
 
Більшість властивостей файлових систем Andrew і Coda реалізовані в NFS4.  
 
Більшість властивостей файлових систем Andrew і Coda реалізовані в NFS4.  
 +
Основною перевагою NFS є готовність, стандартність, зрозумілість та широка підтримка на багатьох платформах. Віддалений виклик процедур RPC
 +
Remote Procedure Calls (RPC) - віддалений виклик процедур. Багато клієнт-серверних програм не прослуховують мережу на своєму порті, а замість того користуються технологією RPC. Коли сервіс ініціалізується він прослуховує будь-який порт і тоді регіструє цей порт з допомогою утиліти Portmapper. NFS відноситься саме до RPC сервісів тому вимагає утиліти Portmapper перед її запуском. Встановлення NFS утиліт
 +
Для роботи NFS додатково потрібні http://nfs.sourceforge.net/ (http://www.nfsv4.org) утиліти, які для Gentoo можна встановити командою:
 +
emerge net-fs/nfs-utils
 +
Цей пакет встановить утиліти для portmapping, nfs серверні і клієнтські та автоматично вирішить всі залежності. Встановлення NFS сервера
  
Основною перевагою NFS є готовність, стандартність, зрозумілість та широка підтримка на багатьох платформах.  
+
Щоб встановити NFS сервер потрібно: включити підтримку NFS сервера в ядро, налаштувати файл /etc/exports та файли безпеки: /etc/hosts.allow і /etc/hosts.deny. Для забезпечення надійної роботи сервісу NFS в мережі його потрібно встановлювати на drbd - кластер дисків. Компіляція ядра Лінукс з підтримкою NFS для сервера
Віддалений виклик процедур RPC
+
  
Remote Procedure Calls (RPC) - віддалений виклик процедур. Багато клієнт-серверних програм не прослуховують мережу на своєму порті, а замість того користуються технологією RPC. Коли сервіс ініціалізується він прослуховує будь-який порт і тоді регіструє цей порт з допомогою утиліти Portmapper. NFS відноситься саме до RPC сервісів тому вимагає утиліти Portmapper перед її запуском.  
+
NFS сервер та станція потребують включення відповідної підтримки NFS в ядро Лінукса. Якщо у Ваше ядро така підтримка не входить, потрібно його перезібрати. По зсиці наведена детальна документація про компіляцію ядра GNU/Linux. Додатково потрібно додати: Networking --->
Встановлення NFS утиліт
+
  [*] Networking support
 +
          Networking options  --->
 +
                <*> Packet socket
 +
                [*]  Packet socket: mmapped IO
 +
                <*> Unix domain sockets
 +
                <*> IPsec user configuration interface
 +
                <*> PF_KEY sockets
 +
                [*] TCP/IP networking
 +
                ..........
  
Для роботи NFS додатково потрібні http://nfs.sourceforge.net/ (http://www.nfsv4.org) утиліти, які для Gentoo можна встановити командою:
+
File systems ---> .........
# emerge net-fs/nfs-utils
+
    Network File Systems  --->
 +
        <*> NFS file system support
 +
        ............
 +
        [ ]  Allow direct I/O on NFS files (EXPERIMENTAL)
 +
        <*> NFS server support
 +
        [*]  Provide NFSv3 server support
 +
        [*]    Provide server support for the NFSv3 ACL protocol extension
 +
        [*]    Provide NFSv4 server support (EXPERIMENTAL)
 +
        ---  Provide NFS server over TCP support
 +
        --- Secure RPC: Kerberos V mechanism (EXPERIMENTAL)
 +
        ..........
  
Цей пакет встановить утиліти для portmapping, nfs серверні і клієнтські та автоматично вирішить всі залежності.
+
Налаштування NFS сервера  
Встановлення NFS сервера
+
  
Щоб встановити NFS сервер потрібно: включити підтримку NFS сервера в ядро, налаштувати файл /etc/exports та файли безпеки: /etc/hosts.allow і /etc/hosts.deny. Для забезпечення надійної роботи сервісу NFS в мережі його потрібно встановлювати на drbd - кластер дисків.
+
Зараз потрібно відредагувати конфіґураційний файл /etc/exports  
Компіляція ядра Лінукс з підтримкою NFS для сервера
+
  
NFS сервер та станція потребують включення відповідної підтримки NFS в ядро Лінукса. Якщо у Ваше ядро така підтримка не входить, потрібно його перезібрати. По зсиці наведена детальна документація про компіляцію ядра GNU/Linux. Додатково потрібно додати:  
+
Файл /etc/exports вказує як, що і до кого експортувати через NFS. Типовий /etc/exports для серверу, що обслуговує бездискові станції, виглядає так: $ cat /etc/exports
Networking  --->
+
  one line like this for each slave
  [*] Networking support
+
          Networking options  --->
+
                <*> Packet socket
+
                [*]  Packet socket: mmapped IO
+
                <*> Unix domain sockets
+
                <*> IPsec user configuration interface
+
                <*> PF_KEY sockets
+
                [*] TCP/IP networking
+
                ..........
+
File systems --->
+
.........
+
    Network File Systems  --->
+
          <*> NFS file system support
+
          ............
+
          [ ]  Allow direct I/O on NFS files (EXPERIMENTAL)
+
          <*> NFS server support
+
          [*]  Provide NFSv3 server support
+
          [*]    Provide server support for the NFSv3 ACL protocol extension
+
          [*]    Provide NFSv4 server support (EXPERIMENTAL)
+
          ---  Provide NFS server over TCP support
+
          --- Secure RPC: Kerberos V mechanism (EXPERIMENTAL)
+
          ..........
+
Налаштування NFS сервера
+
  
Зараз потрібно відредагувати конфіґураційний файл /etc/exports
+
/diskless/10.0.0.101 10.0.0.101(sync,rw,no_root_squash,no_all_squash)
 +
common to all slaves
  
Файл /etc/exports вказує як, що і до кого експортувати через NFS. Типовий /etc/exports для серверу, що обслуговує бездискові станції, виглядає так:
+
/opt 10.0.0.0/24(sync,ro,no_root_squash,no_all_squash) /usr 10.0.0.0/24(sync,ro,no_root_squash,no_all_squash) /home 10.0.0.0/24(sync,rw,no_root_squash,no_all_squash)  
$ cat /etc/exports
+
if you want to have a shared log  
# one line like this for each slave
+
 
/diskless/10.0.0.101  10.0.0.101(sync,rw,no_root_squash,no_all_squash)
+
/var/log 10.0.0.0/24(sync,rw,no_root_squash,no_all_squash)  
# common to all slaves
+
 
/opt                   10.0.0.0/24(sync,ro,no_root_squash,no_all_squash)
+
Перше поле визначає директорію яка експортується друге кому і як. Останнє поле розділене на дві частини перша саме кому дозволено монтувати дану директорію і друга що він може з цією файловою системою робити: ro
/usr                   10.0.0.0/24(sync,ro,no_root_squash,no_all_squash)
+
дозволяється тільки читати,
/home                 10.0.0.0/24(sync,rw,no_root_squash,no_all_squash)
+
# if you want to have a shared log
+
/var/log               10.0.0.0/24(sync,rw,no_root_squash,no_all_squash)
+
  
Перше поле визначає директорію яка експортується друге кому і як. Останнє поле розділене на дві частини перша саме кому дозволено монтувати дану директорію і друга що він може з цією файловою системою робити:
 
ro
 
дозволяється тільки читати,
 
 
rw  
 
rw  
дозволяється читати і писати,  
+
дозволяється читати і писати,  
 +
 
 
noaccess  
 
noaccess  
всі файли і директорії нище вказаної будуть не доступні,  
+
всі файли і директорії нище вказаної будуть не доступні,  
 +
 
 
link_relative  
 
link_relative  
якщо зустрічається абсолютне символічне посилання його змінювати на відносне (../../),  
+
якщо зустрічається абсолютне символічне посилання його змінювати на відносне (../../),  
 +
 
 
link_absolute  
 
link_absolute  
не змінювати символічні посилання.  
+
не змінювати символічні посилання.  
 +
 
 
no_root_squash  
 
no_root_squash  
дозволяє root доступ до сервера, по замовчуванню клієнтський користувач root прив'язується до anonymous. Важлива для бездискових станцій що пишуть на диск, так що вони не будуть "squashed" коли робитимуть I/O запит,  
+
дозволяє root доступ до сервера, по замовчуванню клієнтський користувач root прив'язується до anonymous. Важлива для бездискових станцій що пишуть на диск, так що вони не будуть "squashed" коли робитимуть I/O запит,  
 +
 
 
no_all_squash  
 
no_all_squash  
важлива для бездискових станцій що пишуть на диск, так що вони не будуть "squashed" коли робитимуть I/O запит,  
+
важлива для бездискових станцій що пишуть на диск, так що вони не будуть "squashed" коли робитимуть I/O запит,  
 +
 
 
all_squash  
 
all_squash  
прив'язує всіх віддалених користувачів до anonymous. Тобто маютимуть допуск тільки до файлів з публічним допуском, а файли що створюватимуть будуть доступні всім з anonymous користувач/група. Тобто всі користувачі є nobody, так, як 2 не присвоюється для UID i GID використовується 65534. Щоб змінити потрібно явно вказати anonuid=1111 i anongid=1111.  
+
прив'язує всіх віддалених користувачів до anonymous. Тобто маютимуть допуск тільки до файлів з публічним допуском, а файли що створюватимуть будуть доступні всім з anonymous користувач/група. Тобто всі користувачі є nobody, так, як 2 не присвоюється для UID i GID використовується 65534. Щоб змінити потрібно явно вказати anonuid=1111 i anongid=1111.  
 +
 
 
map_static  
 
map_static  
по замовчуванню, допуски в NFS, для ідентичних користувачів, що мають однакові UID на сервері та клієнтській машині будуть прив'язані автоматично. Тобто користувачі будуть мати такі ж допуски до файлів на віддаленому сервері, якби вони знаходились локально.  
+
по замовчуванню, допуски в NFS, для ідентичних користувачів, що мають однакові UID на сервері та клієнтській машині будуть прив'язані автоматично. Тобто користувачі будуть мати такі ж допуски до файлів на віддаленому сервері, якби вони знаходились локально.  
  
Погана ідея експортувати /var/log вірне рішення описане тут: Syslog-ng - записувач подій в UNIX!  
+
Погана ідея експортувати /var/log вірне рішення описане тут: Syslog-ng - записувач подій в UNIX! Безпека NFS  
Безпека NFS
+
  
Є декілька рівнів безпеки NFS. Рівень безпеки при монтуванні дозволяє вказати котрим комп'ютерам дозволено монтувати систему і з якими правами (читання/запис). Користувацький рівень безпеки дозволяє зв'язати користувача локальної системи з користувачем на NFS сервері, тоді користувач буде мати стандартні права і допуски в UNIX. Також можна використовувати політики SELinux(8).  
+
Є декілька рівнів безпеки NFS. Рівень безпеки при монтуванні дозволяє вказати котрим комп'ютерам дозволено монтувати систему і з якими правами (читання/запис). Користувацький рівень безпеки дозволяє зв'язати користувача локальної системи з користувачем на NFS сервері, тоді користувач буде мати стандартні права і допуски в UNIX. Також можна використовувати політики SELinux(8).  
  
Варто скористатись і TCP обоями.  
+
Варто скористатись і TCP обоями. Старт NFS сервера  
Старт NFS сервера
+
  
І нарешті останній файл, який прийдеться відредагувати для сервера: /etc/conf.d/nfs котрий визначає декілька ініціалізаційних опцій, ось його вигляд у Gentoo:  
+
І нарешті останній файл, який прийдеться відредагувати для сервера: /etc/conf.d/nfs котрий визначає декілька ініціалізаційних опцій, ось його вигляд у Gentoo: $ cat /etc/conf.d/nfs  
$ cat /etc/conf.d/nfs
+
Config file for /etc/init.d/nfs  
# Config file for /etc/init.d/nfs
+
Number of servers to be started up by default  
# Number of servers to be started up by default
+
RPCNFSDCOUNT=16
+
  
# Options to pass to rpc.mountd
+
RPCNFSDCOUNT=16
RPCMOUNTDOPTS=""
+
Options to pass to rpc.mountd  
 +
 
 +
RPCMOUNTDOPTS=""  
  
 
RPCNFSDCOUNT - рівне кількості клієнтських машин, можливо потрібно змінити.  
 
RPCNFSDCOUNT - рівне кількості клієнтських машин, можливо потрібно змінити.  
  
 
Далі, як звично:  
 
Далі, як звично:  
# /etc/init.d/nfs start
+
/etc/init.d/nfs start  
  
 
І щоб цей скрипт стартував при включенні системи виконуємо:  
 
І щоб цей скрипт стартував при включенні системи виконуємо:  
# rc-update add nfs default
+
rc-update add nfs default  
  
Для інших потрібно пам'ятати, що nfs запускається після portmap чи rpc.portmap. Тобто порядок запуску в ручну такий:  
+
Для інших потрібно пам'ятати, що nfs запускається після portmap чи rpc.portmap. Тобто порядок запуску в ручну такий: rpc.portmap rpc.mountd rpc.nfsd rpc.statd rpc.lockd (якщо потрібно) rpc.rquotad Встановлення клієнтів NFS  
rpc.portmap
+
rpc.mountd
+
rpc.nfsd
+
rpc.statd
+
rpc.lockd (якщо потрібно)
+
rpc.rquotad
+
Встановлення клієнтів NFS
+
  
Можна перевірити чи встановлене ядро підтримує NFS, для цього виконуємо:  
+
Можна перевірити чи встановлене ядро підтримує NFS, для цього виконуємо: $ cat /proc/filesystems  
$ cat /proc/filesystems
+
  
якщо є стрічка:  
+
якщо є стрічка: nodev nfs  
nodev   nfs
+
  
значить ядро зібране з підтримкою NFS і наступний пункт можна пропустити.  
+
значить ядро зібране з підтримкою NFS і наступний пункт можна пропустити. Компіляція ядра Лінукс з підтримкою NFS для клієнтів  
Компіляція ядра Лінукс з підтримкою NFS для клієнтів
+
  
Детальна документація про компіляцію ядра Лінукса. Додатково потрібно додати:  
+
Детальна документація про компіляцію ядра Лінукса. Додатково потрібно додати: Networking --->  
Networking --->
+
  [*] Networking support
  [*] Networking support
+
          Networking options  --->
          Networking options  --->
+
                <*> Packet socket
                <*> Packet socket
+
                [*]  Packet socket: mmapped IO
                [*]  Packet socket: mmapped IO
+
                <*> Unix domain sockets
                <*> Unix domain sockets
+
                <*> IPsec user configuration interface
                <*> IPsec user configuration interface
+
                <*> PF_KEY sockets
                <*> PF_KEY sockets
+
                [*] TCP/IP networking
                [*] TCP/IP networking
+
                ..........
                ..........
+
File systems  --->
+
.........
+
    Network File Systems  --->
+
          <*> NFS file system support
+
          [*]  Provide NFSv3 client support
+
          [*]    Provide client support for the NFSv3 ACL protocol extension
+
          [*]  Provide NFSv4 client support (EXPERIMENTAL)
+
          [ ]  Allow direct I/O on NFS files (EXPERIMENTAL)
+
          ............
+
          [*]  Root file system on NFS                                        Для бездискових станцій
+
          --- Secure RPC: Kerberos V mechanism (EXPERIMENTAL)
+
          ..........
+
Налаштування клієнтських /etc/fstab
+
  
Файл /etc/fstab на клієнтських комп'ютерах вказує що експортує сервер і що клієнти можуть змонтувати в себе. Клієнтський fstab файл, для бездискових станцій знаходиться в /diskless/10.0.0.101/etc/fstab та повинен виглядати приблизно так:
+
File systems ---> .........
# these entries are essential
+
    Network File Systems  --->
10.0.0.10:/diskless/10.0.0.101    /            nfs        sync,hard,intr,rw,nolock,rsize=8192,wsize=8192  0 0
+
        <*> NFS file system support
10.0.0.10:/opt                    /opt        nfs        sync,hard,intr,ro,nolock,rsize=8192,wsize=8192  0 0
+
        [*]  Provide NFSv3 client support
10.0.0.10:/usr                    /usr        nfs        sync,hard,intr,ro,nolock,rsize=8192,wsize=8192  0 0
+
        [*]    Provide client support for the NFSv3 ACL protocol extension
10.0.0.10:/home                  /home        nfs        sync,hard,intr,rw,nolock,rsize=8192,wsize=8192  0 0
+
        [*]  Provide NFSv4 client support (EXPERIMENTAL)
none                              /proc        proc      defaults                                        0 0
+
        [ ]  Allow direct I/O on NFS files (EXPERIMENTAL)
10.0.0.10:/var/log                /var/log    nfs        hard,intr,rw                                    0 0
+
        ............
# для підтримки SELinux
+
        [*]  Root file system on NFS                                        Для бездискових станцій
none                              /selinux    selinuxfs  defaults                                        0 0
+
        --- Secure RPC: Kerberos V mechanism (EXPERIMENTAL)
#Тільки для кластерів openMosix
+
        ..........
none                              /mnt/mfs    mfs        dfsa=1                                          0 0
+
  
В цьому прикладі 10.0.0.10 - ІР адрес NFS сервера. Перше поле визначає директорію на сервері що експортується, друге точку монтування на бездисковій станції, третє файлову систему і для NFS розділів повинна бути nfs. В четвертому полі визначаються різні опції які використовуються при монтуванні розділу, щоб побачити всі можливі опції, дивіться mount(8). Для спрощення приведено жорсткі точки монтування, але використовуючи різноманітні опції з /etc/fstab можна зробити кластер більш ефективним. Особливо не рекомендується вести системні журнали через nfs краще скористатись: Syslog-ng - записувач подій в UNIX
+
Налаштування клієнтських /etc/fstab  
Можливі проблеми та шляхи їх розв'язання
+
  
Гарна ідея після зміни файлу /etc/exports виконувати команду:  
+
Файл /etc/fstab на клієнтських комп'ютерах вказує що експортує сервер і що клієнти можуть змонтувати в себе. Клієнтський fstab файл, для бездискових станцій знаходиться в /diskless/10.0.0.101/etc/fstab та повинен виглядати приблизно так:  
# exportfs -a -v
+
these entries are essential
  
це дасть змогу перевірити файл /etc/exports, зробити всі (-а) спільні ресурси моментально доступними, якщо щось не так, то (-v) дозволить отримати більше інформації.  
+
10.0.0.10:/diskless/10.0.0.101 / nfs sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0 10.0.0.10:/opt /opt nfs sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0 10.0.0.10:/usr /usr nfs sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0 10.0.0.10:/home /home nfs sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0 none /proc proc defaults 0 0 10.0.0.10:/var/log /var/log nfs hard,intr,rw 0 0
 +
для підтримки SELinux
  
Для перевірки запущених сервісів portmapper виконуємо:
+
none /selinux selinuxfs defaults 0 0
# rpcinfo -p
+
Тільки для кластерів openMosix
  
Щоб переконатись вірну роботу portmapper з TCP обоями запускаємо:
+
none /mnt/mfs mfs dfsa=1 0 0
# strings /sbin/portmap | grep hosts
+
  
Уважно читаємо та аналізуємо логи :-)
+
В цьому прикладі 10.0.0.10 - ІР адрес NFS сервера. Перше поле визначає директорію на сервері що експортується, друге точку монтування на бездисковій станції, третє файлову систему і для NFS розділів повинна бути nfs. В четвертому полі визначаються різні опції які використовуються при монтуванні розділу, щоб побачити всі можливі опції, дивіться mount(8). Для спрощення приведено жорсткі точки монтування, але використовуючи різноманітні опції з /etc/fstab можна зробити кластер більш ефективним. Особливо не рекомендується вести системні журнали через nfs краще скористатись: Syslog-ng - записувач подій в UNIX

Версія за 23:12, 26 червня 2013

Network File System (NFS) - мережева файлова система. Дозволяє експортувати файлові системи через мережу. Часто використовується для обслуговування бездискових робочих станцій, організації спільного використання файлів та програм. NFS була розроблена, щоб дозволити монтувати розділи дисків віддалених комп'ютерів, так ніби вони знаходяться на локальному жорсткому диску. Це забезпечує швидке, прозоре спільне використання файлів через мережу. Ви зможете зберігати документи і програми в одному місці та зробити його доступним тільки для визначених користувачів. При не коректному встановленню NFS також створює потенційну небезпеку несанкціонованого доступу до диску через мережу і як наслідок розголошення і псування інформації. Тому значний наголос, при використанні мережевих файлових систем, потрібно робити на безпеку та контроль доступу. Існують також інші мережеві файлові системи: Samba файлова система для оффтопікових (ТМ) клієнтів. Andrew файлова система для IBM, надає спільне використання файлів з додатковою безпекою та покращенню продуктивністю. Coda файлова система розроблена для роботи з від'єднаними клієнтами. Більшість властивостей файлових систем Andrew і Coda реалізовані в NFS4. Основною перевагою NFS є готовність, стандартність, зрозумілість та широка підтримка на багатьох платформах. Віддалений виклик процедур RPC Remote Procedure Calls (RPC) - віддалений виклик процедур. Багато клієнт-серверних програм не прослуховують мережу на своєму порті, а замість того користуються технологією RPC. Коли сервіс ініціалізується він прослуховує будь-який порт і тоді регіструє цей порт з допомогою утиліти Portmapper. NFS відноситься саме до RPC сервісів тому вимагає утиліти Portmapper перед її запуском. Встановлення NFS утиліт Для роботи NFS додатково потрібні http://nfs.sourceforge.net/ (http://www.nfsv4.org) утиліти, які для Gentoo можна встановити командою:

emerge net-fs/nfs-utils 

Цей пакет встановить утиліти для portmapping, nfs серверні і клієнтські та автоматично вирішить всі залежності. Встановлення NFS сервера

Щоб встановити NFS сервер потрібно: включити підтримку NFS сервера в ядро, налаштувати файл /etc/exports та файли безпеки: /etc/hosts.allow і /etc/hosts.deny. Для забезпечення надійної роботи сервісу NFS в мережі його потрібно встановлювати на drbd - кластер дисків. Компіляція ядра Лінукс з підтримкою NFS для сервера

NFS сервер та станція потребують включення відповідної підтримки NFS в ядро Лінукса. Якщо у Ваше ядро така підтримка не входить, потрібно його перезібрати. По зсиці наведена детальна документація про компіляцію ядра GNU/Linux. Додатково потрібно додати: Networking --->

 [*] Networking support
         Networking options  --->
               <*> Packet socket
               [*]   Packet socket: mmapped IO
               <*> Unix domain sockets
               <*> IPsec user configuration interface
               <*> PF_KEY sockets
               [*] TCP/IP networking
               ..........

File systems ---> .........

   Network File Systems  --->
        <*> NFS file system support
        ............
        [ ]   Allow direct I/O on NFS files (EXPERIMENTAL)
        <*> NFS server support
        [*]   Provide NFSv3 server support
        [*]     Provide server support for the NFSv3 ACL protocol extension
        [*]     Provide NFSv4 server support (EXPERIMENTAL)
        ---   Provide NFS server over TCP support
        --- Secure RPC: Kerberos V mechanism (EXPERIMENTAL)
        ..........

Налаштування NFS сервера

Зараз потрібно відредагувати конфіґураційний файл /etc/exports

Файл /etc/exports вказує як, що і до кого експортувати через NFS. Типовий /etc/exports для серверу, що обслуговує бездискові станції, виглядає так: $ cat /etc/exports

one line like this for each slave 

/diskless/10.0.0.101 10.0.0.101(sync,rw,no_root_squash,no_all_squash)

common to all slaves 

/opt 10.0.0.0/24(sync,ro,no_root_squash,no_all_squash) /usr 10.0.0.0/24(sync,ro,no_root_squash,no_all_squash) /home 10.0.0.0/24(sync,rw,no_root_squash,no_all_squash)

if you want to have a shared log 

/var/log 10.0.0.0/24(sync,rw,no_root_squash,no_all_squash)

Перше поле визначає директорію яка експортується друге кому і як. Останнє поле розділене на дві частини перша саме кому дозволено монтувати дану директорію і друга що він може з цією файловою системою робити: ro дозволяється тільки читати,

rw дозволяється читати і писати,

noaccess всі файли і директорії нище вказаної будуть не доступні,

link_relative якщо зустрічається абсолютне символічне посилання його змінювати на відносне (../../),

link_absolute не змінювати символічні посилання.

no_root_squash дозволяє root доступ до сервера, по замовчуванню клієнтський користувач root прив'язується до anonymous. Важлива для бездискових станцій що пишуть на диск, так що вони не будуть "squashed" коли робитимуть I/O запит,

no_all_squash важлива для бездискових станцій що пишуть на диск, так що вони не будуть "squashed" коли робитимуть I/O запит,

all_squash прив'язує всіх віддалених користувачів до anonymous. Тобто маютимуть допуск тільки до файлів з публічним допуском, а файли що створюватимуть будуть доступні всім з anonymous користувач/група. Тобто всі користувачі є nobody, так, як 2 не присвоюється для UID i GID використовується 65534. Щоб змінити потрібно явно вказати anonuid=1111 i anongid=1111.

map_static по замовчуванню, допуски в NFS, для ідентичних користувачів, що мають однакові UID на сервері та клієнтській машині будуть прив'язані автоматично. Тобто користувачі будуть мати такі ж допуски до файлів на віддаленому сервері, якби вони знаходились локально.

Погана ідея експортувати /var/log вірне рішення описане тут: Syslog-ng - записувач подій в UNIX! Безпека NFS

Є декілька рівнів безпеки NFS. Рівень безпеки при монтуванні дозволяє вказати котрим комп'ютерам дозволено монтувати систему і з якими правами (читання/запис). Користувацький рівень безпеки дозволяє зв'язати користувача локальної системи з користувачем на NFS сервері, тоді користувач буде мати стандартні права і допуски в UNIX. Також можна використовувати політики SELinux(8).

Варто скористатись і TCP обоями. Старт NFS сервера

І нарешті останній файл, який прийдеться відредагувати для сервера: /etc/conf.d/nfs котрий визначає декілька ініціалізаційних опцій, ось його вигляд у Gentoo: $ cat /etc/conf.d/nfs

Config file for /etc/init.d/nfs 
Number of servers to be started up by default 

RPCNFSDCOUNT=16

Options to pass to rpc.mountd 

RPCMOUNTDOPTS=""

RPCNFSDCOUNT - рівне кількості клієнтських машин, можливо потрібно змінити.

Далі, як звично:

/etc/init.d/nfs start 

І щоб цей скрипт стартував при включенні системи виконуємо:

rc-update add nfs default 

Для інших потрібно пам'ятати, що nfs запускається після portmap чи rpc.portmap. Тобто порядок запуску в ручну такий: rpc.portmap rpc.mountd rpc.nfsd rpc.statd rpc.lockd (якщо потрібно) rpc.rquotad Встановлення клієнтів NFS

Можна перевірити чи встановлене ядро підтримує NFS, для цього виконуємо: $ cat /proc/filesystems

якщо є стрічка: nodev nfs

значить ядро зібране з підтримкою NFS і наступний пункт можна пропустити. Компіляція ядра Лінукс з підтримкою NFS для клієнтів

Детальна документація про компіляцію ядра Лінукса. Додатково потрібно додати: Networking --->

 [*] Networking support
         Networking options  --->
               <*> Packet socket
               [*]   Packet socket: mmapped IO
               <*> Unix domain sockets
               <*> IPsec user configuration interface
               <*> PF_KEY sockets
               [*] TCP/IP networking
               ..........

File systems ---> .........

   Network File Systems  --->
        <*> NFS file system support
        [*]   Provide NFSv3 client support
        [*]     Provide client support for the NFSv3 ACL protocol extension
        [*]   Provide NFSv4 client support (EXPERIMENTAL)
        [ ]   Allow direct I/O on NFS files (EXPERIMENTAL)
        ............
        [*]   Root file system on NFS                                         Для бездискових станцій
        --- Secure RPC: Kerberos V mechanism (EXPERIMENTAL)
        ..........

Налаштування клієнтських /etc/fstab

Файл /etc/fstab на клієнтських комп'ютерах вказує що експортує сервер і що клієнти можуть змонтувати в себе. Клієнтський fstab файл, для бездискових станцій знаходиться в /diskless/10.0.0.101/etc/fstab та повинен виглядати приблизно так:

these entries are essential 

10.0.0.10:/diskless/10.0.0.101 / nfs sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0 10.0.0.10:/opt /opt nfs sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0 10.0.0.10:/usr /usr nfs sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0 10.0.0.10:/home /home nfs sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0 none /proc proc defaults 0 0 10.0.0.10:/var/log /var/log nfs hard,intr,rw 0 0

для підтримки SELinux 

none /selinux selinuxfs defaults 0 0 Тільки для кластерів openMosix

none /mnt/mfs mfs dfsa=1 0 0

В цьому прикладі 10.0.0.10 - ІР адрес NFS сервера. Перше поле визначає директорію на сервері що експортується, друге точку монтування на бездисковій станції, третє файлову систему і для NFS розділів повинна бути nfs. В четвертому полі визначаються різні опції які використовуються при монтуванні розділу, щоб побачити всі можливі опції, дивіться mount(8). Для спрощення приведено жорсткі точки монтування, але використовуючи різноманітні опції з /etc/fstab можна зробити кластер більш ефективним. Особливо не рекомендується вести системні журнали через nfs краще скористатись: Syslog-ng - записувач подій в UNIX

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти