Ні фор спід не запускається. Гра Need For Speed: Payback не запускається - наочний приклад боротьби з помилками

Доброго часу, читачі та гості. Дуже велика перерва між постами була, але я знову в бою). У сьогоднішній статті розгляну роботу протоколу NFS, а так само налаштування сервера NFS та клієнта NFS на Linux.

Вступ до NFS

NFS (Network File System - мережна файлова система) на мою думку - ідеальне рішення в локальної мережі, де необхідний швидкий (швидший у порівнянні з SAMBA і менш ресурсомісткий в порівнянні з віддаленими файловими системами з шифруванням - sshfs, SFTP, etc ...) обмін даними і на чолі кута не стоїть безпека інформації, що передається. Протокол NFSдозволяє монтувати видалені файлові системи через мережу в локальне дерево каталогів, ніби це була примонтована дискова файлова система. Тим самим локальні програми можуть працювати з віддаленою файловою системою, як з локальною. Але потрібно бути обережним (!) з налаштуванням NFS, бо за певної конфігурації можна підвісити операційну систему клієнта в очікуванні нескінченного вводу/вывода. Протокол NFSзаснований на роботі протоколу RPC, який поки що не піддається моєму розумінню)) тому матеріал у статті буде трохи розпливчатим... Перш ніж Ви зможете використовувати NFS, будь то сервер або клієнт, Ви повинні переконатися, що Ваше ядро ​​має підтримку файлової системи NFS. Перевірити чи підтримує ядро ​​файлову систему NFS можна, переглянувши наявність відповідних рядків у файлі /proc/filesystems:

ARCHIV ~ # grep nfs /proc/filesystems nodev nfs nodev nfs4 nodev nfsd

Якщо вказаних рядків у файлі /proc/filesystemsне виявиться, необхідно встановити описані нижче пакети. Це, швидше за все, дозволить встановити залежні модулі ядра для підтримки потрібних файлових систем. Якщо після інсталяції пакетів, підтримка NFS не буде відображена у вказаному файлі, то необхідно буде , з увімкненням цієї функції.

Історія Network File System

Протокол NFSрозроблений компанією Sun Microsystems і має у своїй історії 4 версії. NFSv1була розроблена в 1989 році і була експериментальною, працювала на протоколі UDP. Версія 1 описана у . NFSv2була випущена в тому ж 1989, описувалася тим же RFC1094 і так само базувалася на протоколі UDP, при цьому дозволяла читати не більше 2Гб з файлу. NFSv3доопрацьована в 1995 р. та описана в . Основними нововведеннями третьої версії стала підтримка файлів великого розміру, додана підтримка протоколу TCP та TCP-пакетів великого розміру, що суттєво прискорило працездатність технології. NFSv4доопрацьована в 2000 р. і описана в RFC 3010, в 2003 р. переглянута та описана в . Четверта версія включила поліпшення продуктивності, підтримку різних засобів аутентифікації (зокрема, Kerberos і LIPKEY з використанням протоколу RPCSEC GSS) і списків контролю доступу (як POSIX, так і Windows-типів). NFS версії v4.1була схвалена IESG у 2010 р., та отримала номер . Важливим нововведенням версії 4.1 є специфікація pNFS - Parallel NFS, механізму паралельного доступу NFS-клієнта до даних безлічі розподілених NFS-серверів. Наявність такого механізму у стандарті мережевої файлової системи допоможе будувати розподілені «хмарні» (cloud) сховища та інформаційні системи.

NFS сервер

Бо в нас NFS- це мережевафайлова система, то необхідно. (Так само можна почитати статтю). Далі необхідно. У Debian це пакет nfs-kernel-serverі nfs-common, у RedHat це пакет nfs-utils. Також необхідно дозволити запуск демона на необхідних рівнях виконання ОС (команда в RedHat - /sbin/chkconfig nfs onу Debian - /usr/sbin/update-rc.d nfs-kernel-server defaults).

Установлені пакети в Debian запускаються в наступному порядку:

ARCHIV ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx 1 root root 20 Жов 18 15:02 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 root root 27 Жов 22 01:23 S16n. /nfs-kernel-server

Тобто спочатку запускається nfs-commonпотім сам сервер nfs-kernel-server. У RedHat ситуація аналогічна, за тим лише винятком, що перший скрипт називається nfslock, а сервер називається просто nfs. Про nfs-common нам сайт debian дослівно каже наступне: спільні файли для клієнта та сервера NFS, цей пакет потрібно встановлювати на машину, яка буде працювати як клієнт або сервер NFS. У пакет включені програми: lockd, statd, showmount, nfsstat, gssd та idmapd. Переглянувши вміст скрипту запуску /etc/init.d/nfs-commonможна відстежити наступну послідовність роботи: скрипт перевіряє наявність виконуваного бінарного файлу /sbin/rpc.statd, перевіряє наявність у файлах /etc/default/nfs-common, /etc/fstabі /etc/exportsпараметрів, що вимагають запуск демонів idmapd і gssd , запускає демона /sbin/rpc.statd , далі перед запуском /usr/sbin/rpc.idmapdі /usr/sbin/rpc.gssdперевіряє наявність цих виконуваних бінарних файлів, далі для демона /usr/sbin/rpc.idmapdперевіряє наявність sunrpc, nfsі nfsd, а також підтримку файлової системи rpc_pipefsу ядрі (тобто наявність її у файлі /proc/filesystems), якщо все вдало, то запускає /usr/sbin/rpc.idmapd . Додатково для демона /usr/sbin/rpc.gssd перевіряє модуль ядра rpcsec_gss_krb5та запускає демон.

Якщо переглянути вміст скрипта запуску NFS-серверана Debian ( /etc/init.d/nfs-kernel-server), можна простежити таку послідовність: при старті, скрипт перевіряє існування файлу /etc/exports, наявність nfsd, наявність підтримки файлової системи NFSв (тобто у файлі /proc/filesystems), якщо все на місці, то запускається демон /usr/sbin/rpc.nfsd , далі перевіряє заданий параметр NEED_SVCGSSD(задається у файлі налаштувань сервера /etc/default/nfs-kernel-server) і, якщо заданий - запускає демона /usr/sbin/rpc.svcgssd , останнім запускає демона /usr/sbin/rpc.mountd . З цього скрипта видно, що робота сервера NFS складається здемонів rpc.nfsd, rpc.mountd і якщо використовується Kerberos-автентифікація, то демон rcp.svcgssd. У червоному капелюсі ще запускається демон rpc.rquotad і nfslogd.

З цього стає зрозуміло, що сервер Network File System складається з наступних процесів (читай – демонів), розташованих у каталогах /sbin та /usr/sbin:

У NFSv4 при використанні Kerberos додатково запускаються демони:

  • rpc.gssd- Демон NFSv4 забезпечує методи аутентифікації через GSS-API (Kerberos-аутентифікація). Працює на клієнті та сервері.
  • rpc.svcgssd- Демон сервера NFSv4, який забезпечує автентифікацію клієнта на стороні сервера.

portmap та протокол RPC (Sun RPC)

Крім зазначених вище пакетів, для коректної роботи NFSv2 та v3 потрібен додатковий пакет portmap(у новіших дистрибутивах замінений на перейменований на rpcbind). Цей пакет зазвичай встановлюється автоматично з NFS як залежний і реалізує роботу сервера RPC, тобто відповідає за динамічне призначення портів для деяких служб, зареєстрованих на сервері RPC. Дослівно, згідно з документацією - це сервер, який перетворює номери програм RPC (Remote Procedure Call) у номери портів TCP/UDP. portmap оперує кількома сутностями: RPC-дзвінками або запитами, TCP/UDP портами,версією протоколу(tcp або udp), номерами програмі версіями програм. Демон portmap запускається скриптом /etc/init.d/portmap до старту NFS-сервісів.

Коротко кажучи, робота сервера RPC (Remote Procedure Call) полягає в обробці RPC-дзвінків (т.зв. RPC-процедур) від локальних та віддалених процесів. Використовуючи RPC-дзвінки, сервіси реєструють або видаляють себе в/з перетворювача портів (він же відображає порти, він же portmap, він же portmapper, він же, в нових версіях, rpcbind), а клієнти за допомогою RPC-дзвінків надсилаючи запити до portmapper одержують необхідну інформацію. Користувач-френдлі назви сервісів програм та відповідні їм номери визначені у файлі /etc/rpc. Як тільки будь-який сервіс відправив відповідний запит і зареєстрував себе на сервері RPC в відображачі портів, RPC-сервер присвоює зіставляє сервісу TCP і UDP порти на яких запустився сервіс і зберігає в собі ядрі відповідну інформацію про працюючий сервіс (про ім'я), унікальний номер сервісу (відповідно до /etc/rpc) , про протокол та порт на якому працює сервіс та про версію сервісу та надає зазначену інформацію клієнтам на запит. Сам перетворювач портів має номер програми (100000), номер версії - 2, TCP порт 111 та UDP порт 111. Вище, при вказівці складу демонів сервера NFS я вказав основні RPC номери програм. Я, напевно, трохи заплутав Вас даним абзацом, тому вимовлю основну фразу, яка повинна внести ясність: основна функція відображувача портів полягає в тому, щоб на запит клієнта, який надав номер RPC-програми (або RPC-номер програми) і версію, повернути йому (клієнту) порт, у якому працює запитана програма . Відповідно, якщо клієнту потрібно звернутися до RPC з конкретним номером програми, він спочатку повинен увійти в контакт із процесом portmap на серверній машині та визначити номер порту зв'язку з необхідним сервісом RPC.

Роботу RPC-сервера можна представити такими кроками:

  1. Перетворювач портів повинен стартувати першим, зазвичай під час завантаження системи. При цьому створюється кінцева точка TCP і здійснюється відкриття TCP порту 111. Також створюється кінцева точка UDP, яка чекає, коли на UDP порт 111 прибуде датаграма UDP.
  2. При старті програма, що працює через сервер RPC, створює кінцеву точку TCP і кінцеву точку UDP для кожної підтримуваної версії програми. (Сервер RPC може підтримувати кілька версій. Клієнт вказує необхідну версію при надсиланні RPC-дзвінка.) Номер порту, що динамічно призначається, закріплюється за кожною версією сервісу. Сервер реєструє кожну програму, версію, протокол і номер порту, здійснюючи відповідний RPC-виклик.
  3. Коли програмі клієнта RPC необхідно отримати необхідну інформацію, вона викликає виклик процедуру перетворювача портів, щоб отримати номер порту, що динамічно призначається, для заданої програми, версії і протоколу.
  4. У відповідь цей запит північ повертає номер порту.
  5. Клієнт відправляє повідомлення RPC-запит на номер порту, отриманий у пункті 4. Якщо використовується UDP, клієнт просто надсилає UDP датаграму, що містить повідомлення RPC-дзвінка, на номер UDP порту, на якому працює сервіс, що запитує. У відповідь сервіс надсилає UDP датаграму, що містить повідомлення RPC відгуку. Якщо використовується TCP, клієнт здійснює активне відкриття на номер TCP порту необхідного сервісу, а потім надсилає повідомлення виклику RPC за встановленим з'єднанням. Сервер відповідає повідомленням відгуку RPC з'єднання.

Для отримання інформації від RPC-сервера використовується утиліта rpcinfo. При вказанні параметрів -p hostПрограма виводить список всіх зареєстрованих RPC програм на хості host. Без вказівки хоста програма виведе послуги на localhost. Приклад:

ARCHIV ~ # rpcinfo -p прог-ма верс прото порт 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 59451 status 100024 1 t0 nlockmgr 100021 3 udp 44310 nlockmgr 100021 4 udp 44310 nlockmgr 100021 1 tcp 44851 nlockmgr 100021 3 tcp 4080 nlockmgr 100021 4 tcp 44851 nlockmgr 100003 2 tcp 2049 fs 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100005 1 udp 51306 mountd 100005 1 t 41405 mountd 100005 2 udp 51306 mountd 100005 2 tcp 41405 mountd 100005 3 udp 51306 mountd 100005 3 tcp 41405 mou

Як видно, rpcinfo відображає (у стовпчиках зліва направо) номер зареєстрованої програми, версію, протокол, порт та назву. За допомогою rpcinfo можна видалити реєстрацію програми або отримати інформацію про окремий сервіс RPC (більше опцій у man rpcinfo). Як видно, зареєстровані демони portmapper версії 2 на udp і tcp портах, rpc.statd версії 1 на udp і tcp портах, NFS lock manager версій 1,3,4, демон nfs сервера версії 2,3,4, а також демон монтування версій 1,2,3.

NFS сервер (точніше демон rpc.nfsd) отримує запити від клієнта у вигляді UDP датаграм на порт 2049. Незважаючи на те, що NFS працює з перетворювачем портів, що дозволяє серверу використовувати порти, що динамічно призначаються, UDP порт 2049 жорстко закріплений за NFS в більшості реалізацій .

Робота протоколу Network File System

Монтування віддаленої NFS

Процес монтування віддаленої файлової системи NFS можна представити такою схемою:

Опис протоколу NFS при монтуванні віддаленого каталогу:

  1. На сервері та клієнті запускається сервер RPC (зазвичай при завантаженні), обслуговуванням якого займається процес portmapper і реєструється на порту tcp/111 і udp/111.
  2. Запускаються сервіси (rpc.nfsd, rpc.statd та ін.), які реєструються на сервері RPC і реєструються на довільних мережевих портах (якщо в налаштуваннях сервісу не заданий статичний порт).
  3. команда mount на комп'ютері клієнта відправляє ядру запит на монтування мережевого каталогу із зазначенням типу файлової системи, хоста та власне - каталогу, ядро ​​відправляє формує RPC-запит процесу portmap на NFS сервері на порт udp/111 (якщо на клієнті не задана опція працювати через tcp )
  4. Ядро сервера NFS опитує RPC про наявність демона rpc.mountd і повертає ядру клієнта мережевий порт, де працює демон.
  5. mount надсилає запит RPC на порт, на якому працює rpc.mountd. Тепер NFS сервер може перевірити достовірність клієнта ґрунтуючись на його IP-адресі та номері порту, щоб переконатися, чи можна цьому клієнту змонтувати вказану файлову систему.
  6. Демон монтування повертає опис запитаної файлової системи.
  7. Команда mount клієнта видає системний виклик mount, щоб зв'язати описувач файлу, отриманий за кроком 5, з локальною точкою монтування на хості клієнта. Описувач файлу зберігається в коді NFS клієнта, і з цього моменту будь-яке звернення процесів користувача до файлів на файловій системі сервера використовуватиме описувач файлу як стартову точку.

Обмін даними між клієнтом та сервером NFS

Типовий доступ до віддаленої файлової системи можна описати такою схемою:

Опис процесу звернення до файлу на сервері NFS:

  1. Клієнту (процесу користувача) байдуже, чи отримує він доступ до локального файлу або до NFS файл. Ядро займається взаємодією із залізом через модулі ядра або вбудовані системні виклики.
  2. Модуль ядра kernel/fs/nfs/nfs.ko,який виконує функції NFS клієнта, відправляє RPC запити NFS серверу через модуль TCP/IP. NFS зазвичай використовує UDP, проте нові реалізації можуть використовувати TCP.
  3. NFS сервер отримує запити від клієнта у вигляді UDP датаграм на порт 2049. Незважаючи на те, що NFS може працювати з перетворювачем портів, що дозволяє серверу використовувати порти, що динамічно призначаються, UDP порт 2049 жорстко закріплений за NFS в більшості реалізацій.
  4. Коли сервер NFS отримує запит від клієнта, він передається локальній підпрограмі доступу до файлу, яка забезпечує доступ до локального диска на сервері.
  5. Результат обігу диска повертається клієнту.

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

Налаштування серверав цілому полягає у завданні локальних каталогів, дозволених для монтування віддаленими системами у файлі /etc/exports. Ця дія називається експорт ієрархії каталогів. Основними джерелами інформації про експортовані каталоги є такі файли:

  • /etc/exports- Основний конфігураційний файл, що містить у собі конфігурацію експортованих каталогів. Використовується при запуску NFSта утилітою exportfs.
  • /var/lib/nfs/xtab- Містить список каталогів, монтованих віддаленими клієнтами. Використовується демоном rpc.mountd, коли клієнт намагається змонтувати ієрархію (створюється запис про монтування).
  • /var/lib/nfs/etab- список каталогів, які можуть бути змонтовані віддаленими системами із зазначенням усіх параметрів експортованих каталогів.
  • /var/lib/nfs/rmtab- Список каталогів, які не розекспортовані в даний момент.
  • /proc/fs/nfsd- Спеціальна файлова система (ядро 2.6) для управління NFS сервером.
    • exports- Список активних експортованих ієрархій та клієнтів, яким їх експортували, а також параметри. Ядро отримує цю інформацію з /var/lib/nfs/xtab.
    • threads- Містить кількість потоків (також можна змінювати)
    • за допомогою filehandle можна отримати покажчик на файл
    • та ін...
  • /proc/net/rpc- Містить "сиру" (raw) статистику, яку можна отримати за допомогою nfsstat, а також різні кеші.
  • /var/run/portmap_mapping- інформація про зареєстровані в RPC сервіси

Прим: взагалі, в інтернеті купа трактувань та формулювань призначення файлів xtab, etab, rmtab, кому вірити – не знаю Навіть на http://nfs.sourceforge.net/ трактування не однозначне.

Налаштування файлу /etc/exports

У найпростішому випадку файл /etc/exports є єдиним файлом, який вимагає редагування для налаштування сервера NFS. Цей файл керує такими аспектами:

  • Які клієнтиможуть звертатися до файлів на сервері
  • До яких ієрархійкаталогів на сервері може звертатися кожен клієнт
  • Як імена користувача користувача будуть відображатисьна локальні імена користувачів

Кожен рядок файлу exports має такий формат:

точка_експорта клієнт1 (опції) [клієнт2 (опції) ...]

Де точка_експорту абсолютний шлях експортованої ієрархії каталогів, клієнт1 - n ім'я однієї або більше клієнтів або IP-адрес, розділені пробілами, яким дозволено монтувати точку_експорту . Опції описують правила монтування для клієнта, зазначеного перед опціями .

Ось типовий приклад конфігурації файлу exports:

ARCHIV ~ # cat /etc/exports /archiv1 files(rw,sync) 10.0.0.1(ro,sync) 10.0.230.1/24(ro,sync)

У цьому прикладі комп'ютерам files і 10.0.0.1 дозволено доступ до точки експорту /archiv1, при цьому, хосту files на читання/запис, а для хоста 10.0.0.1 та підмережі 10.0.230.1/24 доступ тільки на читання.

Опис хостів /etc/exports допускається в наступному форматі:

  • Імена окремих вузлів описуються як files або files.DOMAIN.local.
  • Опис маски доменів здійснюється в наступному форматі: * DOMAIN.local включає всі вузли домену DOMAIN.local.
  • Підмережі задаються у вигляді пар адрес IP/маска. Наприклад: 10.0.0.0/255.255.255.0 містить усі вузли, адреси яких починаються з 10.0.0.
  • Завдання імені мережної групи @myclients, яка має доступ до ресурсу (при використанні сервера NIS)

Загальні опції експорту ієрархій каталогів

У файлі exports використовуються такі загальні опції(спочатку вказані опції, що застосовуються за замовчуванням у більшості систем, у дужках - не за замовчуванням):

  • auth_nlm (no_auth_nlm)або secure_locks (insecure_locks)- Вказує, що сервер повинен вимагати автентифікацію запитів на блокування (за допомогою протоколу NFS Lock Manager (диспетчер блокування NFS)).
  • nohide (hide)- якщо сервер експортує дві ієрархії каталогів, при цьому одна вкладена (примонтована) до іншої. Клієнту необхідно явно змонтувати другу (дочірню) ієрархію, інакше точка монтування дочірньої ієрархії виглядатиме як порожній каталог. Опція nohide призводить до появи другої ієрархії каталогів без явного монтування. ( прим:я цю опцію так і не зміг змусити працювати...)
  • ro (rw)- Дозволяє лише запити на читання (запис). (зрештою - можливо прочитати/записати чи ні визначається на підставі прав файлової системи, при цьому сервер не здатний відрізнити запит на читання файлу від запиту на виконання, тому дозволяє читання, якщо у користувача є права на читання або виконання.)
  • secure (insecure)- вимагає, щоб запити NFS надходили із захищених портів (< 1024), чтобы программа без прав root не могла монтировать иерархию каталогов.
  • subtree_check (no_subtree_check)- Якщо експортується підкаталог фалової системи, але не вся файлова система, сервер перевіряє, чи файл, який ви запитали, в експортованому підкаталозі. Вимкнення перевірки зменшує безпеку, але збільшує швидкість передачі даних.
  • sync (async)- вказує, що сервер повинен відповідати запити лише після запису на диск змін, виконаних цими запитами. Опція async показує серверу не чекати запису інформації на диск, що підвищує продуктивність, але знижує надійність, т.к. у разі обриву з'єднання або відмови обладнання можлива втрата інформації.
  • wdelay (no_wdelay)- вказує серверу затримувати виконання запитів запис, якщо очікується наступний запит запис, записуючи дані більшими блоками. Це підвищує продуктивність при надсиланні великих черг команд на запис. no_wdelay вказує не відкладати виконання команди на запис, що може бути корисно, якщо сервер отримує велику кількість команд, не пов'язаних один з одним.

Експорт символічних посилань та файлів пристроїв.При експорті ієрархії каталогів, що містять символічні посилання, необхідно, щоб об'єкт посилання був доступний клієнтській (віддаленій) системі, тобто має виконуватися одне з таких правил:

Файл пристрою відноситься до інтерфейсу. Під час експорту файлу пристрою експортується цей інтерфейс. Якщо клієнтська система не має пристрою такого самого типу, то експортований пристрій не працюватиме. У клієнтській системі, при монтуванні NFS об'єктів можна використовувати опцію nodev, щоб файли пристроїв в каталогах, що монтуються, не використовувалися.

Параметри за замовчуванням у різних системах можуть відрізнятися, їх можна переглянути у файлі /var/lib/nfs/etab. Після опису експортованого каталогу в /etc/exports і перезапуску сервера NFS всі опції, які не вистачає (читай: опції за замовчуванням) будуть відображені у файлі /var/lib/nfs/etab.

Опції відображення (відповідності) ідентифікаторів користувачів

Для більшого розуміння сказаного нижче я б порадив ознайомитися зі статтею . Кожен користувач Linux має свої UID та головний GID, які описані у файлах /etc/passwdі /etc/group. Сервер NFS вважає, що операційна система віддаленого вузла виконала автентифікацію користувачів і призначила їм коректні ідентифікатори UID і GID. Експортування файлів дає користувачам системи клієнта такий самий доступ до цих файлів, якби вони реєструвалися безпосередньо на сервері. Відповідно, коли клієнт NFS надсилає запит серверу, сервер використовує UID та GID для ідентифікації користувача в локальній системі, що може призводити до деяких проблем:

  • користувач може не мати одні і ті ж ідентифікатори в обох системах і, відповідно, може отримати доступ до файлів іншого користувача.
  • т.к. у користувача root ідентифікатор завжди 0, цей користувач відображається на локального користувача в залежності від заданих опцій.

Наступні опції задають правила відображення віддалених користувачів локальних:

  • root_squash (no_root_squash)- При заданій опції root_squash, запити від користувача root відображаються на анонімного uid/gid, або користувача, заданого в параметрі anonuid/anongid.
  • no_all_squash (all_squash)- Не змінює UID/GID користувача, що підключається. Опція all_squashзадає відображення ВСІХ користувачів (не тільки root), як анонімних чи заданих у параметрі anonuid/anongid.
  • anonuid= UID і anongid= GID - Явно задає UID/GID для анонімного користувача.
  • map_static= /etc/file_maps_users - Задає файл, у якому можна задати зіставлення віддалених UID/GID – локального UID/GID.

Приклад використання файлу мапінгу користувачів:

ARCHIV ~ # cat /etc/file_maps_users # Мапінг користувачів # remote local comment uid 0-50 1002 # зіставлення користувачів з віддаленим UID 0-50 до локального UID 1002 gid 0-50 1002 # зіставлення користувачів з/span віддаленим GID 0-5 локальному GID 1002

Керування сервером NFS

Керування сервером NFS здійснюється за допомогою наступних утиліт:

  • nfsstat
  • showmsecure (insecure)ount

nfsstat: статистика NFS та RPC

Утиліта nfsstat дозволяє переглянути статистику RPC і NFS серверів. Опції команди можна переглянути в man nfsstat.

showmount: виведення інформації про стан NFS

Утиліта showmountзапитує демон rpc.mountd на віддаленому хості про змонтовані файлові системи. За промовчанням видається відсортований список клієнтів. Ключі:

  • --all- Видається список клієнтів та точок монтування із зазначенням куди клієнт примонтував каталог. Ця інформація може бути ненадійною.
  • --directories- Видається список точок монтування
  • --exports- видається список експортованих файлових систем з погляду nfsd

При запуску showmount без аргументів на консоль буде виведена інформація про системи, яким дозволено монтувати локальнікаталоги. Наприклад, хост ARCHIV нам надає список експортованих каталогів з IP-адресами хостів, яким дозволено монтувати зазначені каталоги:

FILES ~ # showmount --exports archiv Export list for archiv: /archiv-big 10.0.0.2 /archiv-small 10.0.0.2

Якщо вказати в аргументі ім'я хоста/IP, то буде виведена інформація про цей хост:

ARCHIV ~ # showmount files clnt_create: RPC: Program not registered # це повідомлення каже нам, що на хості FILES демон NFSd не запущений

exportfs: керування експортованими каталогами

Ця команда обслуговує експортовані каталоги, задані у файлі /etc/exports, точніше написати не обслуговує, а синхронізує з файлом /var/lib/nfs/xtabта видаляє з xtab неіснуючі. exportfs виконується під час запуску демона nfsd з аргументом -r. Утиліта exportfs в режимі ядра 2.6 спілкується з демоном rpc.mountd через файли каталогу /var/lib/nfs/ і не спілкується безпосередньо з ядром. Без параметрів видає список поточних файлових систем, що експортуються.

Параметри exportfs:

  • [клієнт:ім'я-каталогу] - додати або видалити вказану файлову систему для вказаного клієнта)
  • -v - виводити більше інформації
  • -r - переекспортувати всі каталоги (синхронізувати /etc/exports та /var/lib/nfs/xtab)
  • -u - видалити зі списку експортованих
  • -a - додати або видалити всі файлові системи
  • -o - опції через кому (аналогічний опціям застосовуваним в / etc / exports; т.ч. можна змінювати опції вже змонтованих файлових систем)
  • -i - не використовувати /etc/exports при додаванні тільки параметри поточного командного рядка
  • -f - скинути список експортованих систем у ядрі 2.6;

Клієнт NFS

Перш ніж звернутися до файлу на віддаленій файловій системі клієнт (ОС клієнта) повинен змонтувати їїта отримати від сервера покажчик на неї. Монтування NFSможе проводитися за допомогою або за допомогою одного з автоматичних монтувальників, що розплодилися (amd, autofs, automount, supermount, superpupermount). Процес монтування добре продемонстровано вище на ілюстрації.

на клієнтів NFSніяких демонів запускати не потрібно, функції клієнтавиконує модуль ядра kernel/fs/nfs/nfs.ko, який використовується для монтування віддаленої файлової системи. Експортовані каталоги з сервера можуть монтуватися на клієнта такими способами:

  • вручну, за допомогою команди mount
  • автоматично під час завантаження, при монтуванні файлових систем, описаних у /etc/fstab
  • автоматично за допомогою демона autofs

Третій спосіб з autofs у цій статті я розглядати не буду, зважаючи на його об'ємну інформацію. Можливо, у наступних статтях буде окремий опис.

Монтування файлової системи Network Files System командою mount

Приклад використання команди mount представлений у пості. Тут я розгляну приклад команди mount для монтування файлової системи NFS:

FILES ~ # mount -t nfs archiv:/archiv-small /archivs/archiv-small FILES ~ # mount -t nfs -o ro archiv:/archiv-big /archivs/archiv-big FILES ~ # mount ..... .. archiv:/archiv-small on /archivs/archiv-small type nfs (rw,addr=10.0.0.6) archiv:/archiv-big on /archivs/archiv-big type nfs (ro,addr=10.0.0.6)

Перша команда монтує експортований каталог /archiv-smallна сервері archivу локальну точку монтування /archivs/archiv-smallз параметрами за промовчанням (тобто для читання та запису). Хоча команда mountв останніх дистрибутивах вміє розуміти який тип файлової системи використовується і без вказівки типу, все ж таки вказувати параметр -t nfsбажано. Друга команда монтує експортований каталог /archiv-bigна сервері archivу локальний каталог /archivs/archiv-bigз опцією лише для читання ( ro). Команда mountбез параметрів наочно відображає результат монтування. Крім опції лише читання (ro), можна задати інші основні опції при монтуванні NFS:

  • nosuid- Ця опція забороняє виконувати програми зі змонтованого каталогу.
  • nodev(no device - не пристрій) - Дана опція забороняє використовувати як пристрої символьні та блокові спеціальні файли.
  • lock (nolock)- Дозволяє блокувати NFS (за замовчуванням). nolock вимикає блокування NFS (не запускає демон lockd) та зручна при роботі зі старими серверами, що не підтримують блокування NFS.
  • mounthost=ім'я- Ім'я хоста, на якому запущено демон монтування NFS – mountd.
  • mountport=n -Порт, який використовується демоном mountd.
  • port=n- порт, який використовується для підключення до NFS сервера (за замовчуванням 2049, якщо демон rpc.nfsd не зареєстрований на сервері RPC). Якщо n=0 (за замовчуванням), NFS надсилає запит до portmap на сервері, щоб визначити порт.
  • rsize=n(read block size – розмір блоку читання) – Кількість байтів, що читаються за один раз з NFS-сервера. Стандартно – 4096.
  • wsize=n(write block size – розмір блоку запису) – Кількість байтів, що записуються за один раз на NFS-сервер. Стандартно – 4096.
  • tcpабо udp- Для встановлення NFS використовувати протокол TCP або UDP відповідно.
  • bg- У разі втрати доступу до сервера, повторювати спроби у фоновому режимі, щоб не блокувати процес завантаження системи.
  • fg- У разі втрати доступу до сервера, повторювати спроби в пріоритетному режимі. Цей параметр може заблокувати процес завантаження системи повторення спроб монтування. З цієї причини параметр fg використовується переважно при налагодженні.

Опції, що впливають на кешування атрибутів при монтуванні NFS

Атрибути файлів, що зберігаються в (індексних дескрипторах), такі як час модифікації, розмір, жорсткі посилання, власник зазвичай змінюються не часто для звичайних файлів і ще рідше - для каталогів. Багато програм, наприклад ls, звертаються до файлів тільки для читання і не змінюють атрибути файлів або вмісту, але витрачають ресурси системи на дорогі мережеві операції. Щоб уникнути непотрібних витрат ресурсів, можна кешувати дані атрибути. Ядро використовує час модифікації файлу, щоб визначити чи застарів кеш, порівнюючи час модифікації в кеші та час модифікації самого файлу. Кеш атрибутів періодично оновлюється відповідно до заданих параметрів:

  • ac (noac) (attrebute cache- кешування атрибутів) - Дозволяє кешування атрибутів (за замовчуванням). Хоча опція noac уповільнює роботу сервера, вона дозволяє уникнути старіння атрибутів, коли кілька клієнтів активно записують інформацію у загальну ієрархію.
  • acdirmax=n (attribute cache directory file maximum- кешування атрибута максимум для файлу каталогу) - Максимальна кількість секунд, що NFS очікує до оновлення атрибутів каталогу (за замовчуванням 60 сек.)
  • acdirmin=n (attribute cache directory file minimum- кешування атрибута мінімум для файлу каталогу) - Мінімальна кількість секунд, що NFS очікує до оновлення атрибутів каталогу (за замовчуванням 30 сек.)
  • acregmax=n (attribute cache regular file maximum- кешування атрибуту максимум для звичайного файлу) - Максимальна кількість секунд, що NFS очікує до оновлення атрибутів звичайного файлу (за замовчуванням 60 сек.)
  • acregmin=n (attribute cache regular file minimum- кешування атрибута мінімум для звичайного файлу) - Мінімальна кількість секунд, що NFS очікує до оновлення атрибутів звичайного файлу (за замовчуванням 3 сек.)
  • actimeo=n (attribute cache timeout- тайм кешування атрибутів) - Замінює значення для всіх наведених опцій. Якщо actimeo не заданий, вищезазначені значення набувають значення за замовчуванням.

Опції обробки помилок NFS

Наступні опції керують діями NFS за відсутності відповіді від сервера або у разі виникнення помилок вводу/виводу:

  • fg (bg) (foreground- Передній план, background- задній план) - Виконувати спроби монтування відмови NFS на передньому плані/у фоні.
  • hard (soft)- виводить на консоль повідомлення "server not responding" при досягненні таймауту та продовжує спроби монтування. При заданій опції soft- при таймауті повідомляє програму про помилку введення/виводу, що викликала операцію. (опцію soft радять не використовувати)
  • nointr (intr) (no interrupt- не переривати) - Не дозволяє сигналам переривати файлові операції у жорстко змонтованій ієрархії каталогів при досягненні великого таймууту. intr- дозволяє переривання.
  • retrans=n (retransmission value- значення повторної передачі) - Після n малих таймаутів NFS генерує великий таймаут (за замовчуванням 3). Великий тайм-аут припиняє виконання операцій або виводить на консоль повідомлення "server not responding", залежно від вказівки опції hard/soft.
  • retry=n (retry value- значення повторно спроби) - Кількість хвилин повторень служби NFS операцій монтування, перш ніж здатися (за замовчуванням 10000).
  • timeo=n (timeout value- значення таймуута) - Кількість десятих часток секунди очікування службою NFS до повторної передачі у разі RPC або малого таймууту (за замовчуванням 7). Це значення збільшується при кожному таймуті до максимального значення 60 секунд або до великого таймууту. У разі зайнятої мережі, повільного сервера або при проходженні запиту через кілька маршрутизаторів або шлюзів, збільшення цього значення може підвищити продуктивність.

Автоматичне монтування NFS при завантаженні (опис файлових систем /etc/fstab)

Підібрати оптимальний timeo для певного значення пакета, що передається (значень rsize/wsize), можна за допомогою команди ping:

FILES ~ # ping -s 32768 archiv PING archiv.DOMAIN.local (10.0.0.6) 32768(32796) bytes of data. 32776 bytes від archiv.domain.local (10.0.0.6): icmp_req=1 ttl=64 time=0.931 ms 32776 bytes від archiv.domain.local (10.0.0.6): icmp_req=2 t0=2 t0= від archiv.domain.local (10.0.0.6): icmp_req=3 ttl=64 time=1.03 ms 32776 bytes від archiv.domain.local (10.0.0.6): icmp_req=4 ttl=64 time=1.00 .domain.local (10.0.0.6): icmp_req=5 ttl=64 time=1.08 ms ^C --- archiv.DOMAIN.local ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rt min/avg/max/mdev = 0.931/1.002/1.083/0.061 ms

Як видно, при відправленні пакета розміром 32768 (32Kb) час його подорожі від клієнта до сервера і назад плаває близько 1 мілісекунди. Якщо цей час зашкалюватиме за 200 мс, варто задуматися про підвищення значення timeo, щоб він перевищувало значення обміну втричі-вчетверо. Відповідно, цей тест бажано робити під час сильного завантаження мережі

Запуск NFS та налаштування Firewall

Нотатка скопіпсована з блогу http://bog.pp.ru/work/NFS.html, за що йому велике спасибі!

Запуск сервера NFS, монтування, блокування, квотування та статусу з "правильними" портами (для мережного екрана)

  • бажано попередньо розмонтувати всі ресурси на клієнтах
  • зупинити та заборонити запуск rpcidmapd, якщо не планується використання NFSv4: chkconfig --level 345 rpcidmapd off service rpcidmapd stop
  • якщо потрібно, то дозволити запуск сервісів portmap, nfs і nfslock: chkconfig --levels 345 portmap/rpcbind on chkconfig --levels 345 nfs on chkconfig --levels 345 nfslock on
  • якщо потрібно, то зупинити сервіси nfslock і nfs, запустити portmap/rpcbind, вивантажити модулі service nfslock stop service nfs stop service portmap start # service rpcbind start umount /proc/fs/nfsd service rpcidmapd stops його треба запустити rmmod nfs rmmod nfs_acl rmmod lockd
  • відкрити порти в
    • для RPC: UDP/111, TCP/111
    • для NFS: UDP/2049, TCP/2049
    • для rpc.statd: UDP/4000, TCP/4000
    • для lockd: UDP/4001, TCP/4001
    • для mountd: UDP/4002, TCP/4002
    • для rpc.rquota: UDP/4003, TCP/4003
  • для сервера rpc.nfsd додати до /etc/sysconfig/nfs рядок RPCNFSDARGS="--port 2049"
  • для сервера монтування додати до /etc/sysconfig/nfs рядок MOUNTD_PORT=4002
  • для налаштування rpc.rquota для нових версій необхідно додати в /etc/sysconfig/nfs рядок RQUOTAD_PORT=4003
  • для налаштування rpc.rquota необхідно для старих версій (проте, треба мати пакет quota 3.08 або свіже) додати в /etc/services rquotad 4003/tcp rquotad 4003/udp
  • перевірить адекватність /etc/exports
  • запустити сервіси rpc.nfsd, mountd та rpc.rquota (заодно запускаються rpcsvcgssd та rpc.idmapd, якщо не забули їх видалити) service nfsd start або в нових версіях service nfs start
  • для сервера блокування для нових систем додати /etc/sysconfig/nfs рядки LOCKD_TCPPORT=4001 LOCKD_UDPPORT=4001
  • для сервера блокування для старих систем додати безпосередньо до /etc/modprobe[.conf]: options lockd nlm_udpport=4001 nlm_tcpport=4001
  • прив'язати сервер статусу rpc.statd до порту 4000 (для старих систем /etc/init.d/nfslock запускати rpc.statd з ключем -p 4000) STATD_PORT=4000
  • запустити сервіси lockd та rpc.statd service nfslock start
  • переконатися, що всі порти прив'язалися нормально за допомогою "lsof -i -n -P" та "netstat -a -n" (частина портів використовується модулями ядра, які lsof не бачить)
  • якщо перед "перебудовою" сервером користувалися клієнти та їх не вдалося розмонтувати, то доведеться перезапустити на клієнтах сервіси автоматичного монтування (am-utils, autofs)

Приклад конфігурації NFS сервера та клієнта

Конфігурація сервера

Якщо ви хочете зробити ваш розділений NFS каталог відкритим і з правом запису, ви можете використовувати опцію all_squashу комбінації з опціями anonuidі anongid. Наприклад, щоб встановити права користувача "nobody" у групі "nobody", ви можете зробити таке:

ARCHIV ~ # cat /etc/exports # Доступ на читання та запис для клієнта на 192.168.0.100, з доступом rw для користувача 99 з gid 99 /files 192.168.0.100(rw,sync,all_squash,anongid=9 ) # Доступ на читання та запис для клієнта на 192.168.0.100, з доступом rw для користувача 99 з gid 99 /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99)))

Це також означає, що якщо ви хочете дозволити доступ до зазначеної директорії, nobody.nobody має бути власником розділеної директорії:

man mount
man exports
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm - продуктивність NFS від IBM.

З повагою, Mc.Sim!

У цьому матеріалі ми допоможемо вам запустити Need For Speed ​​Rivals, а також допоможемо уникнути вильотів гри. З новою частиною NFS у плані технічної стабільності трохи невдалося розробникам зробити, як треба. У багатьох гравців NFS Rivalsне запускається і вилітає, що не обіцяє хороших емоцій геймерів.

Отже, розберемося з цими проблемами.

Не працює NFS Rivals

Якщо у вас з'являється чорний екран при запуску Need For Speed Rivals, тоді вам сюди. У матеріалі за посиланням - об'єктивне освітлення та вирішення проблеми з чорним екраном у NFS Rivals, а також нескінченним завантаженням. Також перелічені на цій сторінці поради допоможуть вам запустити NFS Rivals.

1. Перевірте, чи відповідає ваш комп'ютер мінімальним системним вимогамігри:

ОС: Windows Vista/7
Процесор: Intel Core 2 Duo @ 2.4 Ghz / AMD Athlon 64 X2 5400+
Оперативна пам'ять: 2 Гб
Жорсткий диск: 20 Gb
Відео карта: nVidia GeForce 9800 (512Мб) / ATI Radeon HD 4870 (512Мб)
DirectX: 10

Для гри потрібні останні версіїдрайверів для відеокарти, особливо стосується карт AMD з якими у Rivals суцільні неприємності.

3. Встановіть додаткове ігрове програмне забезпечення:

4. Переконайтеся, що на диску куди встановлена ​​гра є вільне місце.

5. Якщо ви використовуєте піратську копію гри, можливо вам потрібен працюючий Origin (Залежно від кряка)

6. Встановити патч, змінити кряк:

7. Якщо ви використовуєте піратську копію гри, можливо справа в ріпаку - скачайте інший, попередньо прочитавши коментарі до нього.

Якщо ви використовуєте ліцензію - оновіть Origin (видалити старий і завантажити з оф сайту новий).

Якщо Need for Speed ​​Rivals посеред ігрового процесувилетіла з помилкою DirectX (Тобто запустити у вас її вдалося), проблема може вирішитися зміною кряка або спробою змінити дозвіл у грі. Це має виправити патч.

З проблемою коли вилітає Need for Speed ​​Rivals після інтро-відео або після навчання, допоможе сейв . Розпакуйте та скопіюйте його в C:\Users\ІМ'Я_КОРИСТУВАЧА\Documents\Ghost Games\Need for Speed(TM) Rivals\settings\із заміною.

Не запускається гра з помилкою

1.MSVCR110.dll is missing (Відсутня MSVCR110.dll)

MSVCR100.dll is missing (Відсутня MSVCR100.dll)

Помилка такого плану виникає насамперед через неправильно встановлений компонент Microsoft Visual C++. Перевстановіть його і проблема має піти. Якщо проблема залишиться, перевірте наявність файлів у папці з exe файлами гри.

2. Помилка в тексті, яке одне зі слів: dx, directX, dx_diag_d3_d11, dx11

Помилка вказує на проблему з компонентом DirectX - встановіть його знову. Також помилка з таким змістом може виникнути, якщо ви запускаєте NFS Rivals на Windows XP або на старій відеокарті.

Поради:

Якщо ви запускаєте на ноутбуці Need For Speed ​​Rivals з двома відеокартами, переконайтеся, що запускається дискретна відеокарта, а не вбудована.

Перевірте, чи час на вашому комп'ютері відповідав дійсності. Дуже часто через неправильний час з'являється багато проблем з іграми.

Запускайте гру від імені системного адміністратора

Якщо у вас x64-бітна система, спробуйте запустити ярлик x86.

Якщо ви граєте на телевізорі, змініть спосіб підключення телевізора до комп'ютера, наприклад, на DVI/VGA.

Ще трохи корисних матеріалів.

Зараз у цій нотатці ми зможемо перерахувати головні рішення всіх неприємностей, пов'язаних із популярною відеогрою Need for Speed: Payback. Багато геймерів у тому чи іншому випадку стикалися з масою недоробок, серед яких вильоти в грі, невисокий ФПС, різні помилки, завислі ігри або т.д. Однак не варто турбуватися - можливо, в нашій публікації ви здатні розшукати відповіді на питання, що виникли у вас.

Вичерпний список більшості труднощів та їх рішень стане регулярно поповнюватися, так що впевнено задайте цікаві теми у відгуках. Крім цього нам самим буде цікаво, якщо ви можете розповісти те, яке саме рішення могло допомогти Вам у тій чи іншій ситуації.

NFS Payback: зависає під час завантаження

Найчастішим приводом зависаючих ігор під час завантаження визнається застосування графічної карти, яка не відповідає вимогам операційної системи. Коли це не у вашому випадку, тоді потрібно забезпечити оновлення драйверів.

Need for Speed ​​Payback: чорний екран

Єдиним рішенням у разі цієї проблеми вважається переведення відеоігри в режим вікна і назад, при цьому натискаючи комбінацію із двох клавіш Alt+Enter. У випадку, якщо ця дія не змогла допомогти, перевірте наявність у вас свіжих драйверів відеоадаптера. Найчастіше виходить, що ваша відеокарта не відповідає мінімальним вимогамвідеоігри, тому що справжня проблема зустрічається саме з цієї причини.

NFS Payback: гальмує, фризиться, кладе, низький FPS

Тут спочатку переконайтеся в тому, що на вашому комп'ютері оновлені необхідні драйвера відеокарти. Якщо з цим все в повному порядку, значить, у налаштуваннях гри варто вимкнути згладжування та знизити опції, що належать до Post-обробки. Зміна їх не сильно вплине на погіршення якості графіки, проте добре позначиться на продуктивності.

Need for Speed ​​Payback: вилітає

У цьому випадку насамперед спробуйте зменшити графічний дозвіл. У певних випадках подібних дій вистачає, щоби вирішити таку помилку. Якщо проблема не зникає, перевірте оновлення для такого програмного забезпечення VCRedst, Microsoft Visual C++, DirectX, Microsoft. NetFramework.

NFS Payback: не працює керування

Переконайтеся, що у вас функціонує лише один пристрій введення (у разі потреби – вимкніть непотрібні). Крім цього, якщо ви користуєтеся геймпадом і він у вас абсолютно не реагує на натискання клавіатури у відеогрі, спробуйте використовувати емулятор джойстика Xbox (припустимо, x360ce).

Need for Speed ​​Payback: помилка 0xc000007b

Часто ця проблема дозволяється простою переустановкою цих програм DirectX, VCRedst, Microsoft. NetFramework, Visual C++.

Need for Speed ​​Payback: не зберігається

Спочатку переконайтеся, що шлях до папки із збереженням відеоігри не має кириличних символів. Далі спробуйте перевірити, чи не варто властивість "Тільки для читання" для цієї папки. При необхідності – прибирайте.

Ця помилка при цьому може виникнути через причини несумісності. Спробуйте запустити відеогру в режимі сумісності з іншою OS. Для цього можна використовувати інструмент «Виправлення неполадок сумісності».

NFS Payback: немає російської мови

Труднощі з локалізацією досить нескладно призвести до позитивного рішення. Все, що тут потрібно зробити, це простим текстовим редактором відкрити певний файл Engine. Ini за адресою C: \Users\Ім'я_користувача\AppData\Local\NeedForSpeedPayback або OriginsGame\Saved\Config\WindowsNoEditor\ (залежно від того, піратська або ліцензійна відеограу вас), вибрати рядок Culture=en_US та замінити англійську розкладку en_US на російську ru_RU.

Need for Speed ​​Payback: не запускається

На першому етапі потрібно перевірити, чи не присутні в дорозі до гри російські знаки - з їх наявністю відеогра не запускатиметься на ПК.

Другим етапом спробуйте запустити відеогри від імені адміністратора.

Крім того, занадто часто така помилка може утворитися лише в тому випадку, якщо під час встановлення відбувалися деякі помилки. За умови, що ваш комп'ютер відповідає вимогам OS, тоді, ймовірно, переустановка відеоігри допоможе розібратися зі справжньою проблемою. Для найбільшої ймовірності не забудьте вимикати антивірусну програмупід час встановлення.

NFS Payback: вимикається комп'ютер після запуску або під час гри

Найчастіше дана проблемавідбувається через недостатнє охолодження системи. Слід систему охолодження вашого ПК на запорошеність і здійсніть прочищення його у разі потреби.

Need for Speed ​​Payback: немає звуку

Для початку треба переконатися, що у вас стоять актуальні драйвера звукової карти. Для цього треба зайти "Мій комп'ютер" - "Властивості системи" - "Диспетчер пристроїв". Шукаємо звук, давимо на кнопку правою кнопкоюмиші та робимо оновлення.

Якщо оновлення драйверів пристрою відтворення звуку не допомогло, то спробуйте на час відеоігри вимкнути програму Realtek, якщо у вас вбудована відюха.

В останню чергу перевірте, чи ви вибрали в опціях гри пристрій відтворення звуку. Якщо з налаштуваннями все гаразд, можете згорнути гру, відкрити мікшер і перевірити тут звукові налаштування.

NFS Payback: помилка initialization error 4

Проблеми зможе допомогти переустановка додатків зазначених вище, причому переустановка останніх драйверів графічного прискорювача.



Індійський пасьянс