Надежное хранилище с drbd9 и proxmox (часть 1: nfs)
Содержание:
Установка и настройка NFS сервера и клиента в Ubuntu

дело было вечером – делать было нечего (точнее дело было ночью)
в общем что то я начал подозревать что юзать самбу на линукс машинах есть не очень корректно по сему решил поднять на домашнем сервере вместо самбы (а точнее в дополнение к ней) NFS
конфигурация такова
сервер – ubuntu 9.04 desktop там торрнент клиент крутиться ну и немного софта для просмотра видео ну и много HDD
рабочая станция тут уже как месяц тоже ubuntu 9.04 desktop естественно немного винчестера и опять торрнет только уже для часто меняющихся загрузок ну и торрент естественно скачивает на серверную машину
сеть – 100 мегабит инет и 1G локально (сервер-раб.станции)
немного погуглив нашел немного (гуглил русский сегмент инета), но того что нашел я посчитал будет предостаточно. Так что начинаем (статья писалась в процессе установки-настройки)
СЕРВЕР
Устанавливаем NFS-сервер:
sudo apt-get install nfs-kernel-server nfs-common portmap
Настраиваем, какие именно директории мы хотим открыть для совместного пользования и кому. Все это делается в файле /etc/exports:
sudo nano -w /etc/exports
В приведенном ниже примере я выделил директорию /data (директория с данными на сервере) в совместное пользование всем компьютерам с IP – 192.168.0.1 – 192.168.3.255 с правами чтения и записи:
/hard 192.168.0.1/22(rw,no_root_squash,async)
Или еще пример:
/home/samnick/ 192.168.2.96(ro,async)
домашняя директория пользователя samnick стала доступной в режиме только чтение для компьютера с IP 192.168.2.96. Все остальные компьютеры сети к этому разделу доступа не имеют.
Опции:
- ro – права только на чтение. Можно и не указывать, так как она установлена по умолчанию.
- rw – дает клиентам право на запись.
- no_root_squash – по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать.
- noaccess – запрещает доступ к указанной директории. Может быть полезной, если перед этим вы задали доступ всем пользователям сети к определенной директории, и теперь хотите ограничить доступ в поддиректории лишь некоторым пользователям.
О других опция можно почитать тут:
http://www.toucheatout.net/informatics/linux/nfs-tuning-options
про /22 (маску подсети) читаем тут:
http://ru.wikipedia.org/wiki/CIDR сам оч чясто смотрю (запомнить никак не могу)
Теперь нужно перезапустить дабы все заработало nfs-kernel-server:
sudo /etc/init.d/nfs-kernel-server restart
в дальнейшем при изменении конфигурационного файла будет достаточно перечитать конфигурационный файл тут все просто
sudo exportfs -a
все радуемся сервер подняли и настроили теперь беремся за клиента
КЛИЕНТ
Установка и настройка NFS-клиента.
Установка:
sudo apt-get install portmap nfs-common
Монтирование:
создаем точку монтирования (папку к которой будет монтирована папка с сервера)
я лично предпочитаю все монтировать в каталог /media/
cd /media
так как каталог системный то нам необходимы права root`a
sudo mkdir hard
способов монтирования несколько одн это постоянно вручную (то есть после каждой перезагрузки) а второй это автоматически
первый вариант я допишу чуть позднее
вариант второй
Монтирование NFS ресурса автоматически
для этого отредактируем файл /etc/fstab (в нем описаны файловые системы, что куда и как монтировать)
sudo nano -w /etc/fstab
для прописывания нашего сетевого диска просто допишем в конец файла наши данные
192.168.2.98:/hard /media/hard nfs rw,hard,intr 0
- 192.168.2.98:/hard -адрес_вашего_сервера:папака_на_вашем_сервере
- /media/hard -/папка_куда_будем_монтировать
- nfs rw,hard,intr 0 -опции монтирования (в подробности вдаваться не будем)
подробнее про монтирование можно прочитать тут http://rus-linux.net/lib.php?name=MyLDP/file-sys/fstab.html
после того как записали свои данные сохраняем файл конфигурации монтируем нашу NFS
sudo mount /media/hard
все готово теперь мы можем лицезреть наш диск в проводнике как простой физический диск
более глубже почитать про NFS можно тут http://www.linuxshare.ru/docs/HOWTO/NFS-HOWTO.html
материалы:
Статью написал samnick a.k.a Roman Paschenko
Что такое NFS v4?
Версия 4, разработанная под влиянием Эндрской файловой системы (AFS) и блока сообщений сервера (SMB, также называемая CIFS), включает в себя повышение производительности, обеспечивает лучшую безопасность и вводит протокол с соблюдением установленных условий.

Версия 4 стала первым дистрибутивом, разработанным в Целевой группе Internet Engineering Task Force (IETF) после того, как Sun Microsystems передала разработку протоколов сторонним специалистам.
NFS версия 4.1 направлена на предоставление поддержки протокола для использования кластерных развертываний серверов, включая возможность предоставления масштабируемого параллельного доступа к файлам, распределенным между несколькими серверами (расширение pNFS).
Новейший протокол файловой системы — NFS 4.2 (RFC 7862) – был официально выпущен в ноябре 2016 года.
Игры по категориям:
По жанру:
хоррор
339
шутер
779
экшен
2220
приключения
1486
выживание
449
открытый мир
802
рпг
667
квест
91
головоломка
348
бродилки
485
боевик
453
платформер
279
аркада
1020
драки
123
стратегия
839
комиксы
82
стелс
142
для детей
114
инди
1396
бизнес
89
строительство
374
симулятор
849
градостроительный симулятор
114
тайм менеджмент
118
спорт
254
авиасимулятор
38
песочница
203
симулятор жизни
25
гоночный симулятор
124
гонки
311
развивающие
54
hack and slash
39
мморпг
203
роуглайк
109
MOBA
44
защита замка
70
обучающие
23
симулятор бога
29
жизнь
28
познавательные
17
По типу:
зомби-апокалипсис
67
треш
207
шутер от третьего лица
180
экзотическая местность
417
город
494
фэнтези
838
средневековье
182
наше время
578
открытая местность
691
шутер от первого лица
389
фантастика
539
робототехника
175
научная фантастика
439
прыжки
88
греция
15
слэшер
140
техника
587
логическая
64
арена
290
тактическая
725
онлайн игра
584
безумие
83
дикий запад
29
вестерн
42
готические
44
файтинг
146
мультяшная
363
юмор
268
война
428
военная
583
космическая фантастика
174
футуристика
141
вторжение
51
спасение человечества
51
рыцари
79
историческая
191
пошаговая
278
пошаговая стратегия
205
машины
252
криминал
60
мистика
158
тактический шутер
98
супергерои
76
непрямой контроль
57
баскетбол
36
космос
139
мультфильм
90
стимпанк
58
альтернативная история
72
танки
72
вторая мировая война
132
стратегия в реальном времени
284
киберпанк
64
корабли
71
самолеты
70
рим
23
тайна
248
пустыня
113
эволюция
35
экономическая стратегия
132
машинки
51
зимние
53
автосимулятор
130
с подземельями
92
футбол
56
постапокалипсис
110
сбивание соперников
90
паркур
30
крутые машины
82
тюнинг
50
стритрейсинг
33
путешествия во времени
33
боевые искусства
58
апокалипсис
22
погоня
48
бокс
21
реслинг
19
WWE
24
пираты
54
египет
15
терроризм
25
картинг
10
ралли
29
лего
31
мотоциклы
51
хокей
26
битвы машин
39
джипы 4х4
23
F1
24
болид
26
японская мифология
23
доисторические
29
гольф
16
охота
25
По платформам:
iOS
314
PlayStation 2
266
PlayStation 3
627
Wii
141
на ПК
3844
Xbox 360
655
PlayStation 4
677
Xbox One
535
MacOS
408
WiiU
84
Nintendo DS
86
Xbox
186
PlayStation Vita
141
PlayStation Portable
117
VR
137
NFS v3
Первое предложение по разработке NFS версии 3 в Sun Microsystems было озвучено вскоре после выпуска второго дистрибутива. Главной мотивацией была попытка смягчить проблему производительности синхронной записи. К июлю 1992 года практические доработки позволили решить многие недостатки NFS версии 2, оставив при этом лишь недостаточную поддержку файлов (64-разрядные размеры и смещения файлов).
Версия 3 добавила в себя следующее:
- поддержку 64-битных размеров и смещений файлов для обработки данных размером более 2 гигабайт (ГБ);
- поддержку асинхронной записи на сервере для повышения производительности;
- дополнительные атрибуты файлов во многих ответах, позволяющие избежать необходимости их повторного извлечения;
- операцию READDIRPLUS для получения данных и атрибутов вместе с именами файлов при сканировании каталога;
- многие другие улучшения.
Во время введения версии 3 поддержка TCP как протокола транспортного уровня начала увеличиваться. Использование TCP в качестве средства передачи данных, выполненного с использованием NFS через WAN, стало позволять передавать большие размеры файлов для просмотра и записи. Благодаря этому разработчики смогли преодолеть пределы ограничений в 8 КБ, налагаемые протоколом пользовательских дейтаграмм (UDP).
Архитектура NFS
NFS использует стандартную архитектурную модель «клиент-сервер» (как показано на рисунке 2). Сервер отвечает за реализацию файловой системы совместного доступа и хранилища, к которому подключаются клиенты. Клиент реализует пользовательский интерфейс к общей файловой системе, смонтированной внутри локального файлового пространства клиента.
Рисунок 2. Реализация модели «клиент-сервер» в архитектуре NFS

В ОС Linux виртуальный коммутатор файловой системы (virtual file system switch — VFS) предоставляет средства для одновременной поддержки на одном хосте нескольких файловых систем (например, файловой системы ISO 9660 на CD-ROM и файловой системы ext3fs на локальном жестком диске). Виртуальный коммутатор определяет, к какому накопителю выполняется запрос, и, следовательно, какая файловая система должна использоваться для обработки запроса. Поэтому NFS обладает такой же совместимостью, как и другие файловые системы, применяющиеся в Linux. Единственное отличие NFS состоит в том, что запросы ввода/вывода вместо локальной обработки на хосте могут быть направлены для выполнения в сеть.
VFS определяет, что полученный запрос относится к NFS, и передает его в обработчик NFS, находящийся в ядре. Обработчик NFS обрабатывает запрос ввода/вывода и транслирует его в NFS-процедуру (, , , , , и т.д.). Эти процедуры, описанные в отдельной спецификации RFC, определяют поведение протокола NFS. Необходимая процедура выбирается в зависимости от запроса и выполняется с помощью технологии RPC (вызов удаленной процедуры). Как можно понять по названию, RPC позволяет осуществлять вызовы процедур между различными системами. RPC-служба соединяет NFS-запрос с его аргументами и отправляет результат на соответствующий удаленный хост, а затем следит за получением и обработкой ответа, чтобы вернуть его инициатору запроса.
Также RPC включает в себя важный уровень XDR (external data representation – независимое представление данных), гарантирующий, что все пользователи NFS для одинаковых типов данных используют один и тот же формат. Когда некая платформа отправляет запрос, используемый ею тип данных может отличаться от типа данных, используемого на хосте, обрабатывающего этот запрос. Технология XDR берет на себя работу по преобразованию типов в стандартное представление (XDR), так что платформы, использующие разные архитектуры, могут взаимодействовать и совместно использовать файловые системы. В XDR определен битовый формат для таких типов, как , и порядок байтов для таких типов, как массивы постоянной и переменной длины. Хотя XDR в основном известна благодаря применению в NFS, это спецификация может быть полезна во всех случаях, когда приходится работать в одной среде с различными архитектурами.
После того как XDR переведет данные в стандартное представление, запрос передается по сети с помощью определенного транспортного протокола. В ранних реализациях NFS использовался протокол UDP, но сегодня для обеспечения большей надежности применяется протокол TCP.
На стороне NFS-сервера применяется схожий алгоритм. Запрос поднимается по сетевому стеку через уровень RPC/XDR (для преобразования типов данных в соответствии с архитектурой сервера) и попадает в NFS-сервер, который отвечает за обработку запроса. Там запрос передается NFS-демону для определения целевой файловой системы, которой он адресован, а затем снова поступает в VFS для обращения к этой файловой системе на локальном диске. Полностью схема этого процесса приведена на рисунке 3. При этом локальная файловая система сервера – это стандартная для Linux файловая система, например, ext4fs. По сути NFS – это не файловая система в традиционном понимании этого термина, а протокол удаленного доступа к файловым системам.
Рисунок 3. Схема взаимодействия между NFS-клиентом и NFS-сервером

Для сетей с большим временем ожидания в NFSv4 предлагается специальная составная процедура (compound procedure). Эта процедура позволяет поместить несколько RPC-вызовов внутрь одного запроса, чтобы минимизировать затраты на передачу запросов по сети. Также в этой процедуре реализован механизм callback-функций для получения ответов.
Что такое NFS и зачем это нужно
Каждый знает, что в UNIX-системах файловая система логически представляет собой набор физических файловых систем, подключенных к одной точке. Одна из самых основных прелестей такой организации, на мой взгляд, состоит в возможности динамически модифицировать структуру существующей файловой системы. Также, благодаря усилиям разработчиков, мы на сегодняшний день имеем возможность подключить ФС практически любого типа и любым удобным способом. Говоря «способом», я прежде всего хочу подчеркнуть возможность работы ядра ОС с файловыми системами посредством сетевых соединений.
Множество сетевых протоколов предоставляют нам возможность работы с удаленными файлами, будь то FTP, SMB, Telnet или SSH. Благодаря способности ядра, в конечном итоге, не зависеть от типа подключаемой ФС, мы имеем возможность при помощи программы mount подключать что угодно и как угодно.
Сегодня мне хочется рассказать об NFS — Network File System. Эта технология позволяет подключать отдельные точки ФС на удаленном компьютере к файловой системе локального компьютера. Сам протокол NFS позволяет выполнять операции с файлами достаточно быстро, безопасно и надежно. А что нам еще нужно?
Шаг 3 — Настройка экспорта NFS на хосте
Теперь рассмотрим подробнее файл конфигурации NFS и настроим общий доступ к этим ресурсам.
Откройте на хосте файл в текстовом редакторе с привилегиями root.
Файл содержит комментарии, показывающие общую структуру каждой строки конфигурации. Синтаксис выглядит следующим образом:
/etc/exports
Нам нужно создать строку для каждого каталога, к которым мы планируем предоставить общий доступ. Обязательно замените сокращение своим реальным IP-адресом:
/etc/exports
Здесь мы используем для обоих каталогов одинаковые параметры конфигурации, за исключением . Посмотрим, что означают эти опции:
- : эта опция дает клиенту доступ к чтению и записи на соответствующем томе.
- : эта опция принудительно заставляет NFS записывать изменения на диске, прежде чем отправлять ответ. В результате мы получаем более стабильную и согласованную среду, поскольку в ответе отражается фактическое состояние удаленного тома. Однако при этом снижается скорость операций с файлами.
- : данная опция предотвращает проверку вложенного дерева, когда хост проверяет фактическую доступность файла в экспортированном дереве при каждом запросе. Это может вызвать много проблем в случае переименования файла, когда он открыт на клиентской системе. Проверку вложенного дерева в большинстве случаев лучше отключить.
- : по умолчанию NFS преобразует запросы удаленного пользователя root в запросы пользователя без привилегий на сервере. Это предназначено для обеспечения безопасности, чтобы пользователь root клиентской системы не мог использовать файловую систему хоста с правами root. Опция отключает такое поведение для определенных общих ресурсов.
Когда вы закончите внесение изменений, сохраните и закройте файл. Чтобы сделать общие ресурсы доступными для настроенных клиентов, перезапустите сервер NFS с помощью следующей команды:
Прежде чем вы сможете использовать новые общие ресурсы, вам нужно будет убедиться, что правила брандмауэра разрешают трафик этих общих ресурсов.