ZFS

NFS-сервер с поддержкой OpenZFS. Часть 1 - Создание сервера

NFS-сервер с поддержкой OpenZFS. Часть 1 - Создание сервера
Если вы знакомы с OpenZFS, вы знаете все о его многофункциональном интерфейсе, гибкой архитектуре, надежных контрольных суммах и механизмах COW. Может быть, вы также хотите, чтобы он был на вашем рабочем столе, но вы не хотите переформатировать существующие диски и разделы. Возможно, вы используете Windows 10, которая еще не поддерживает OpenZFS. В этом сообщении в блоге я расскажу, как создать сетевую файловую систему или NFS, работающую на отдельном сервере. Затем это устройство NFS можно установить на настольную рабочую станцию. Таким образом, вы можете получить надежность и надежность ZFS с удобством использования вашей любимой настольной ОС, поскольку NFS доступна на всех платформах.

Я подробно расскажу о создании точки монтирования NFS на клиенте Windows 10 во второй части этой серии. А пока давайте сосредоточимся на сервере Ubuntu, предлагающем хранилище NFS, и на клиенте Ubuntu, пытающемся подключиться к нему.

Установка

Мой сервер NFS будет основан на Ubuntu 18.04 LTS. Вы можете использовать свой любимый дистрибутив Linux или FreeBSD, или любую другую ОС, поддерживающую OpenZFS. Моя причина использовать Ubuntu 18.04 в том, что он довольно популярен и значительно снизит входной барьер.

Предполагается, что NFS будет доступен только в моей локальной сети с маской подсети 255.255.255.0 и 192.168.0.1 в качестве шлюза по умолчанию. Проще говоря, это означает, что все устройства, подключенные к моей домашней сети (Wi-Fi, Ethernet и др.), Будут иметь IP-адреса в диапазоне от 192.168.0.От 2 до 192.168.0.254.

Сервер NFS будет настроен так, чтобы разрешить доступ к серверу NFS только устройствам с указанным выше IP-адресом. Это гарантирует, что только устройства, подключенные к моей локальной сети, будут иметь доступ к моим файлам, а внешний мир не сможет получить к ним доступ. Если у вас настроен «открытый Wi-Fi» или если безопасность конечной точки вашего маршрутизатора сомнительна, это не гарантирует никакой безопасности.

Я бы не рекомендовал запускать NFS через общедоступный Интернет без дополнительных мер безопасности.

Наконец, команды, выполняемые на сервере NFS, имеют подсказку, server $ и команды, которые будут запускаться на стороне клиента, имеют подсказку client $

Создание пула OpenZFS и набора данных

1. Создание zpool

Если у вас уже есть запущенный zpool, пропустите этот шаг. На моем сервере NFS, на котором работает Ubuntu 18.04 LTS сервер, сначала устанавливаю OpenZFS.

сервер $ sudo apt установить zfsutils-linux

Затем мы перечислим все доступные блочные устройства, чтобы увидеть новые диски (и разделы), ожидающие форматирования с помощью zfs.

$ lsblk
НАЗВАНИЕ ГЛАВНОЕ: МИН.РМ РАЗМЕР RO ТИП ГОРКА
цикл0 7: 0 0 89.5М 1 петля / карабин / стержень / 6130
петля 1 7: 1 0 86.9М 1 петля / карабин / стержень / 4917
цикл2 7: 2 0 91.1М 1 петля / карабин / стержень / 6259
sda 8: 0 0 50G 0 диск
├─sda1 8: 1 0 1M 0 часть
└─sda2 8: 2 0 50G 0 часть /
sdb 8:16 0 931G 0 диск
sdc 8:32 0 931G 0 диск
sr0 11: 0 1 1024M 0 rom

Типичный пример показан выше, но ваше соглашение об именах может сильно отличаться. Вам придется использовать собственное суждение и быть с ним очень осторожным. Вы не хотите случайно форматировать диск с ОС. Например, раздел sda1 явно имеет корневую файловую систему в качестве точки монтирования, поэтому неразумно трогать ее. Если вы используете новые диски, скорее всего, у них не будет точки монтирования или каких-либо разделов.

Как только вы узнаете имена своих устройств, мы будем использовать команду zpool create для форматирования пары этих блочных устройств (называемых sdb и sdc) в zpool с одним vdev, который состоит из двух зеркальных дисков.

server $ sudo zpool создать зеркало резервуара sdb sdc
сервер $ sudo zpool status tank
zpool статус бак
бассейн: бак
состояние: ONLINE
сканирование: не запрошено
config:
НАЗВАНИЕ СОСТОЯНИЕ ЧИТАТЬ ЗАПИСАТЬ CKSUM
танк ОНЛАЙН 0 0 0
зеркало-0 ОНЛАЙН 0 0 0
sdb ОНЛАЙН 0 0 0
sdc ОНЛАЙН 0 0 0
ошибки: нет известных ошибок данных

В дальнейшем вы можете добавлять диски наборами по два (называемых vdev), чтобы увеличить размер этого zpool, новые диски будут отображаться как mirror-1, mirror-2 и т. Д. Вам не нужно создавать zpool так, как это сделал я, вы можете использовать зеркалирование с большим количеством дисков, вы можете использовать чередование без избыточности, но с большей производительностью, или вы можете использовать RAIDZ. Вы можете узнать об этом подробнее здесь.

В конце концов, важно то, что мы создали zpool с именем tank. На котором будет жить общий NFS. Давайте создадим набор данных, которым будет делиться. Сначала убедитесь, что бассейн с названием «tank» установлен. Точка монтирования по умолчанию - / tank .

сервер $ sudo zfs mount tank
server $ sudo zfs create tank / nfsshare # создать новый набор данных поверх пула

Установка разрешений

При совместном использовании каталога NFS суперпользователь в клиентской системе не имеет доступа ни к чему на общей папке. Хотя суперпользователь на стороне клиента может делать что угодно на клиентской машине, монтирование NFS технически не является частью клиентской машины. Таким образом, разрешение операций от имени суперпользователя на стороне клиента, отображаемого как суперпользователь на стороне сервера, может привести к проблемам с безопасностью. По умолчанию NFS сопоставляет действия суперпользователя на стороне клиента никому: пользователь nogroup и группа пользователей. Если вы намереваетесь получить доступ к смонтированным файлам как root, то набор данных на нашем сервере NFS также должен иметь такие же разрешения,

сервер $ sudo chown никто: nogroup / tank / nfsshare

Сервер NFS будет запускать любое действие со стороны пользователя root на стороне клиента от имени пользователя nobody, поэтому указанное выше разрешение позволит выполнять операции.

Если вы используете другое (обычное) имя пользователя, часто бывает удобно иметь пользователя с одинаковым точным именем пользователя с обеих сторон.

Создание общего ресурса NFS

После создания Zpool необходимо установить пакет сервера nfs из диспетчера пакетов:

сервер $ sudo apt установить nfs-kernel-server

Традиционно сервер NFS использует файл / etc / exports для получения списка одобренных клиентов и файлов, к которым у них будет доступ. Однако мы будем использовать встроенную функцию ZFS для достижения того же.

Просто используйте команду:

server $ sudo zfs установить sharenfs = "on" / tank / nfsshare

Ранее я упоминал о предоставлении доступа только определенным IP-адресам. Вы можете сделать это следующим образом:

server $ sudo zfs set sharenfs = "[защита электронной почты] / 24" tank / nfsshare

'Rw' обозначает разрешения на чтение и запись, за которым следует диапазон IP-адресов. Убедитесь, что номера портов 111 и 2049 открыты на вашем брандмауэре. Если вы используете ufw, вы можете проверить это, запустив:

статус сервера $ ufw

Запишите IP-адрес вашего сервера в локальной сети, используя команду ifconfig или ip addr. Назовем это сервером.ip

Монтаж на стороне клиента

После создания общего ресурса вы можете смонтировать его на клиентском компьютере, выполнив команду:

клиент $ mount -t сервер NFS.IP: / tank / nfsshare / mnt

Это подключит общий ресурс NFS к папке / mnt, но вы можете так же легко выбрать любую другую точку монтирования по вашему выбору.

Заключение

Совместное использование файлов, вероятно, самый важный аспект системного администрирования. Это улучшает ваше понимание стека хранилища, сети, разрешений и привилегий пользователей. Вы быстро осознаете важность принципа наименьших привилегий - то есть предоставляйте пользователю минимально возможный доступ, необходимый для его работы.

Вы также узнаете о взаимодействии между различными операционными системами. Пользователи Windows могут получить доступ к файлам NFS, а также пользователи Mac и BSD. Вы не можете ограничиться одной ОС, имея дело с сетью машин, каждая из которых имеет свои собственные соглашения и разговорный язык. Так что продолжайте экспериментировать с вашим ресурсом NFS. Я надеюсь ты что-то узнал.

Порты коммерческих игровых движков с открытым исходным кодом
Бесплатные игры с открытым исходным кодом и кроссплатформенные версии игрового движка можно использовать для игры как в старые, так и в некоторые из с...
Лучшие игры с командной строкой для Linux
Командная строка - не только ваш главный союзник при использовании Linux - она ​​также может быть источником развлечений, потому что вы можете использ...
Лучшие приложения для сопоставления геймпадов для Linux
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил...