Глава 3. Совместное использование наборов данных — Мастерство FreeBSD: ZFS для профессионалов
OpenZFS интегрировала совместное использование наборов данных посредством Server Message Block (SMB), Network File System (NFS) и Internet Small Computer System Interface (iSCSI). Комплект FreeBSD, однако, подерживает только NFS и iSCSI. Данная глава проведёт вас по реализациям iSCSI и NFS в FreeBSD и их тоношению к ZFS, плюс несколько замечаний по применению SMB в ZFS.
Вы можете совместно использовать наборы данных ZFS поверх SMB, с применением программ, аналогичных
Samba (https://www.samba.org) Это будет
работать в точности как Samba в любой другой файловой системе. ZFS накладывает буквально нулевые ограничения
или требования на Samba, хотя вы, возможно, захотите установить свойство casesensitivity
в значение mixed для набора данных с клиентами Windows через
SMB. {Прим. пер.: за подробностями о прочих подводных камнях в именах файловоой
системы отсылаем к нашему переводу Исправление имён файлов Unix/Linux/POSIX.
Однако, совместно используемый набор данных ZFS может выглядеть чудным для клиентов SMB. По мере заполнения пула клиент видит сокращение размера набора данных. Мы подробно обсуждали это в книге Мастерство FreeBSD: ZFS, однако не будет плохо повторить здесь: если вы наблюдаете за свободным пространством средствами SMB, вы получите ужасно странные результаты. FreeNAS содержит специальную поддержку для отображения используемого пространства для Windows корректным образом.
Вы можете усилить Samba с ZFS для реплицирования многих функций, которые можно найти в файловых серверах Windows. Например, после небольшой работы, снимки ZFS могут быть доступны через Windows Volume Shadow Copy. FreeNAS применяет многие подобные трюки для поддержки клиентов Windows.
Если главная цель для ZFS состоит в поддержке клиентов Windows через SMB, авторы настоятельно рекомендуют использовать FreeNAS.
iSCSI
Вы можете совместно использовать zvol посредством любого предпочитаемого вами программного обеспечения
iSCSI таргегов. FreeBSD 10 и последующие версии содержат демон Cam Target Layer
ctld(8)
, который выступает в качестве службы iSCSI таргета.
Программное обеспечение ctld(8)
обычно имеет более высокую
производительность, чем пакет istgt
, применяемый в более
ранних версиях FreeBSD.
Однако, пока инструментарий администрирования ZFS не встроен ни в какое программное обеспечение таргета
iSCSI FreeBSD. Управляйте совместным использованием zvol в рамках ctld
,
а не при помощи zfs(8)
. Мы рассмотрим настройку таргета iSCSI на
основе zvol и некоторые вопросы производительности для устрйств iSCSI на основе ZFS.
Для получения более подробной информации по iSCSI и тому как их применять возьмите книгу Лукаса FreeBSD Mastery: Specialty Filesystems {Прим. пер.: ищем спонсоров на перевод Специализированные файловые системы.}
Настройка таргета
Таргет iSCSI предоставляет службы хранения в стиле SCSI в сетевой среде. Вы можете представлять себе их
как некий iSCSI сервер, однако таргет тонко отличается от сервера. Таргет iSCSI никогда не является сам
по себе инициатором активности. Все запросы должны поступать от клиента, или, инициатора.
Основным службам iSCSI необходимы группа портала, таргет и адрес дискового устройства, или LUN (Logical Unit Number). Группа портала является именем, определяемым для специальной комбинации адреса IP и порта TCP. («Все IP адреса на данном хосте» является допустимой компонентой группы портала.) Таргет является особой группой устройств хранения, экспортируемой через iSCSI. Одна группа портала может иметь любое число таргетов. LUN является отдельным устройством хранения в пределах одного таргета.
Вот часть /etc/ctl.conf
, которая определяет отдельную
группу портала.
portal-group group0 { discovery-auth-group no-authentication listen 0.0.0.0 listen [::] }
Группа портала имеет имя group0. Хотя мы можем (и должны)
настраивать аутентификацию для промышленного таргета iSCSI, для начала работы нам не требуется
аутентификация. Данная группа портала доступна всем адресам IPv4 и IPv6 на данной машине.
Далее мы определяем таргет для данной группы портала. Этот таргет содержит один LUN.
target iqn.2013-11.org.mwlucas:target0 { auth-group no-authentication portal-group group0 lun 0 { path /dev/zvol/vm/db1 size 1T } }
Имена для таргета iSCSI основаны на имени домена организации, предоставляющей это таргет. Теоретически вы можете присваивать имя своим таргетам iSCSI почти любым способом, кактм вы пожелаете, однпко некоторое программное обеспечение инициатора пытается применять это имя для установки оптимизации. Будет лучше не копировать имена таргетов ваших коммерческих поставщиков SAN.
Схема именования для устройств SCSI всегда начинается со строки iqn.
Затем у вас идут год и месяц регистрации имени домена с последующим именем домена в обратном порядке. В нашем случае, mwlucas.org был зарегистрирован в ноябре 2013, поэтому имя таргета начинается с
Как и группа портала, данный таргет не требует аутентификации. Ключевое слово portal-group привязывает нас к группе потала group0 созданной ранее.
Данный таргет имеет единственный LUN, номер 0. Мы определяем путь к файлу или устройству и размер
этого таргета. Отметим, что здесь мы используем узел устройства /dev/zvol/vm/db1. Хотя zvol может иметь множество узлов устройства,
всегда осуществляйте доступ к узлу устройства для iSCSI экспортируя zvol из /dev/zvol {Прим. пер.: подробнее
Узлы устройств множества путей}.
Было бы лучше создавать такие zvol при помощи свойства volmode
dev так, чтобы
уровень GEOM сервера не пробовал и не настраивал предварительно этот zvol.
Если /etc/ctl.conf существует, запустите ctld(8)
.
# service ctld start
Состояние и сообщения об ошибках появятся в /var/log/messages.
Если ctld(8)
не отвечает вашим потребностям, применяйте любое
предпочитаемое вами программное обеспечение таргета. Воспользуйтесь узлом устройства zvol для того, чтобы
предложить его вашему инициатору. {Прим. пер.: повторим, подробнее о множественности
путей и связанных с именованием проблем в разделе Узлы устройств множества путей.}
Network File System
Про Network File System, или NFS, были написаны целые книги. Много различных операционных систем
поддерживает NFS либо в качестве сервера, либо в качестве клиента, либо оба варианта сразу. Для данной
книги мы сосредоточимся на предложении совместных ресурсов NFS посредством инструментария интегрированного
с ZFS.
Типы настроек NFS
Вы можете управлять экспортом NFS на основе ZFS при помощи традиционного файла /etc/exports FreeBSD и ничего ужасного с вами не случится. Если вы
придерживаетесь старого стиля FreeBSD, /etc/exports может даже
ощущаться более комфортным. Однако zfs(8)
обрабатывает много
аспектов управления NFS для вас, и к тому же работает одинаково на всех платформах ZFS.
Однако поскольку вы управляете NFS на своём хосте, мы настоятельно рекомендуем вам выбрать один метод и придерживаться его. Не применяйте одновременно оба, и /etc/exports
Хост FreeBSD должен иметь файл /etc/exports для обслуживания
совместных ресурсов NFS, даже если вы управляете NFS целиком из ZFS. Простейший способ получить его состоит в
выполнении touch /etc/exports, хотя вы можете захотеть экспортировать
файл, который содержит только комментарии, отправляющие прочих системных администраторов к
zfs(8)
.
Как и в случае с iSCSI, мы не собираемся полностью охватывать NFS. Мы обсудим управление NFS с точки зрения ZFS, отображая, где это полезно, сравнивая с традиционным NFS.
Разрешение NFSv2/v3
Разрешение NFS на уровне ZFS не даст ничего если хост не выполняет необходимые для NFS службы. Установите приводимые ниже строки в /etc/rc.conf для запуска процессов необходимых для обслуживания NFS при загрузке.
nfs_server_enable=YES rpcbind_enable=YES mountd_enable=YES rpc_lockd_enable=YES rpc_statd_enable=YES
Не все среды требуют все из этих служб, однако их включение потребляет не очень много ресурсов системы и
предложит самый широкий диапазон совместимости и приличную производительность.
Вы также можете разрешить хостам в вашей сетевой среде доступ к rpcbind(8)
при помощи записи /etc/hosts.allow. Вот, например, сетевая среда
203.0.113.0.24 доступ к моим службам NFS.
rpcbind: 203.0.113.0/255.255.255.0 : allow
Без этой записи
Настройка NFSv2/v3 через ZFS
ZFS настраивает NFS базируясь на установках для каждого набора данных. Свойство ZFS sharenfs
предписывает то, как
совместно использовать набор данных. Это свойство может быть установлено в значения on, off или в параметр
совместного использования NFS для этого набора данных.
Если она установлена в off, ZFS не настраивает совместные ресурсы для этого набора данных. Этот набор данных, однако, всё ещё может совместно использоваться с применением /etc/exports
Установка данного свойства в значение on делает доступным этого
набора данных для совместного применения через NFS. Это эквивалентно перечислению файловой системой себя в
сприске /etc/exports. Установка
sharenfs
в значение on для zroot/home будет
аналогично приводимой ниже записи в /etc/exports.
/home
Любой хост по всему миру может быть доступным и NFS смонтирует этот хост.
Это может быть гораздо более понятно установить доступ только для тех хостов, к которым мы хотим сделать это.
# zfs set sharenfs="203.0.113.208" zroot/home
Данная команда создаст /etc/zfs/exports подобный такому.
/home 203.0.113.208
Вы можете ввести более сложные значения в свои свойства, заключая их в кавычки или экранируя (escape) их прочим образом.
# zfs set sharenfs="-network 203.0.113.0 -mask 255.255.255.0" zroot/home
Любые записи, которые делают допустимые записи /etc/exports могут применяться в качестве значений для sharenfs
.
Свойство sharenfs
не может поддерживать никакйю настройку NFS, которая требует множества строк в /etc/exports. Для подобных сред вы должны применять традиционный
файл exports.
Разрешение NFSv4
NFSv4 является совершенно отличным протоколом от NFSv2 или v3. Не делайте доступным NFSv4, пока не разберётесь с его пониманием. Этот раздел посвящён тем людям, которые уже имеют некое ноу-хау NFSv4 и работы с ним.
Чтобы сделать доступным NFSv4, в /etc/rc.conf установите следующее.
nfs_server_enable=YES mountd_enable=YES nfsv4_server_enable=YES nfsuserd_enable=YES
Вам также понадобится одна строка в /etc/exports, определяющая корень вашего дерева NFS. Это обычный корень файловой системы.
V4: /
Разрешайте и запрещайте совместное применение NFS при помощи свойства sharenfs
для каждого
индивидуального набора данных.
Настройка NFSv4 через ZFS
Как и в случае более ранних версий NFS, для настройки экспорта отдельного набора данных применяйте
свойство sharenfs
. Однако, NFSv4
экспортирует всё в дереве каталога, поэтому наследование играет чудесно большое значение.
{Прим. пер.: подробности данного подхода в нашем переводе книги Ли Р. Сюрбера
Полная
виртуализация.}
Установка sharenfs
в значение on сообщает NFS о необходимости совместно использовать этот набор
данных с каждым, без ограничений. Вы целиком полагаетесь на межсетевые экраны или фильтры пакетов для
предотвращения не авторизованного доступа к к этому набору данных и его дочерним наборам данных.
{Прим. пер.: подробнее в нашем переводе раздела Наследование и переименование первой книги авторов по ZFS.} Как и прочие свойства ZFS, sharenfs
наследуемое свойство. Если вы устанавливаете совместное применение для zroot/home,
вы делаете доступными для совместного применения все домашние каталоги входящие в данный.
Установка sharenfs
в
значение off сообщает NFS не использовать совместно этот набор данных. Его
применение намеренно переписывает установки sharenfs
родительского набора данных.
Установка данного свойства в значение IP адреса или выражение маски делает доступным совместное применение этого набора данных в точности как это делается при экспортах NFSv2/v3.
Отладка NFS ZFS
FreeBSD собирает свойства sharenfs
в файл экспортов, /etc/zfs/exports. Если вы знакомы с NFS,
проверка этого файла может снабдить вас внутренним пониманием того, почему совместное применение файлов
работает именно так.
Проверьте /var/log/messages на клиенте и сервере для получения
намёков почему не прошло монтирование. Большинство общих ошибок которые мы наблюдаем, в ряду сразу после hosts.allow и проблем с межсетевым маршрутизатором, это неверные
свойства
sharenfs
. После
десятилетий практики, Лукас всё ещё определяет разрешение сетевых сред
как блоки CIDR вместо того,
чтобы делать это в дружественном для NFS формате.
FreeNAS [АйТи бубен]
FreeNAS — свободная операционная система для сетевого хранилища (англ. Network-Attached Storage). FreeNAS основан на ОС FreeBSD с использованием Samba и PHP, поддерживает software RAID; к нему можно получить доступ по протоколам CIFS (SMB), Apple Mac AFP, FTP, SSH, iSCSI и NFS. Для работы FreeNAS необходим компьютер с возможностью загрузки с привода компакт-дисков с минимум 96 Мб оперативной памяти.
Домашняя страница: FreeNAS.
Дистрибутив имеет размер ~ 16Mb. Образ ISO дистрибутива имеет размер 60 Mb, и позволяет как разворачивать, так и работать с системой прямо с CD с возможностью инсталлировать её на жёсткий диск. Аутентификация осуществляется на основе локальной базы пользователей. Указывается возможность аутентифицироваться на основе внешнего LDAP каталога, например, Microsoft Active Directory. FreeNAS сервер может быть включён в домен Microsoft AD. Но, как указывает автор, пока нет возможности предоставлять доступ к папкам сервера на основе учетных записей пользователей Microsoft AD. Можно выполнить подключение FreeNAS сервера к домену Microsoft AD от имени доменной учётной записи, и потом под этой же учётной записью работать с сервером по протоколу CIFS (SMB).
Компания iXsystems также выпускает готовые решения на базе TrueNAS
Homepage: TrueNAS Core
Долгое время дистрибутив FreeNAS служил основой для простого и быстрого развёртывания систем хранения данных на базе обычного, неспециализированного аппаратного обеспечения. Некоторое время бесплатный FreeNAS и коммерческий вариант под названием TrueNAS существовали параллельно.
Но последний, двенадцатый релиз подтвердил сделанное разработчиком ещё в марте этого года заявление — iXsystems полностью отказалась от бренда FreeNAS и теперь обе ветки, коммерческая и некоммерческая, будут базироваться на единой платформе.
Среди причин такого объединения разработчики называют то, что содержание двух платформ и разработка двух наборов ПО требует много ресурсов и не позволяет выпускать обновления так часто, как этого хотелось бы и создателям, и пользователям. Существовала временная задержка между появлением какого-либо драйвера в составе FreeBSD, операционной системы, лежащей в основе FreeNAS, и его появлением в составе самой FreeNAS.
Новая модель разработки должна устранить этот недостаток. Коммерческая версия сохранит название TrueNAS Enterprise, бесплатная теперь будет выпускаться под именем TrueNAS Core. Главным нововведением двенадцатой ветки является расширенная поддержка процессоров AMD — как EPYC, так и Ryzen/Threadripper. Есть и масса других нововведений.
Так, TrueNAS теперь поддерживает нативное шифрование ZFS, двухфакторную аутентификацию и серверы паролей и ключей KMIP. Реализована поддержка так называемых Fusion Pools, позволяющая создавать отдельные флеш-массивы для метаданных и мелкоблочных данных в то время, как основной массив данных по-прежнему может храниться на жёстких дисках. Также появилась поддержка VPN — в составе дистрибутива есть ПО OpenVPN, как клиентская, так и серверная части.
Старая версия API теперь не поддерживается, но полностью реализована поддержка TrueNAS API 2.0; также появилась возможность облачной интеграции в TrueCommand Cloud, что упрощает масштабирование СХД и управление ими. Помимо усовершенствований и новых функций iXsystems уделила серьёзное внимание вопросам производительности и TrueNAS может похвастаться более быстрой и стабильной работой OpenZFS, iSCSI, SMB и других компонентов.
Конфигурация FreeNAS iSCSI для MPIO
Хранение
В последнем посте, Установка и настройка iSCSI MPIO кластера Hyper-V, мы рассмотрели настройку многопутевого подключения MPIO на узле Hyper-V, подключенном к хранилищу iSCSI. В домашней тестовой среде вы можете поиграться с хранилищем iSCSI для тестирования подключений Hyper-V MPIO, как я делал в последнем посте. Вы можете легко подготовить себе действительно отличное устройство iSCSI SAN с помощью FreeNAS, загруженного на виртуальную машину. Вы можете добавить несколько сетевых карт, хранилище и иметь массу опций и конфигураций, с которыми можно поиграть. В этом посте мы рассмотрим, как настроить FreeNAS для включения подключения хостов Hyper-V к целям iSCSI и включения многопутевого подключения MPIO. Давайте посмотрим на конфигурацию FreeNAS iSCSI для MPIO, чтобы увидеть настройки, на которые нужно обратить внимание при включении нескольких путей для Hyper-V.
Что такое FreeNAS?
Если вы не слышали о FreeNAS, то это отличное программное решение для хранения данных, которое можно загружать как на аппаратные, так и на виртуальные платформы. Для моих целей тестирования это отличное решение, позволяющее легко работать с решениями для хранения данных, которые обычно используются на предприятии, такими как сети хранения данных iSCSI, хранилища данных NFS, конфигурации MPIO и т. д. FreeNAS основан на FreeBSD, который является сервером на базе UNIX. операционная система, разработанная в Беркли. Однако FreeNAS — это специализированная версия FreeBSD, предназначенная для конкретных хранилищ и оптимизированная для решений хранения, поддерживающих технологии SMB, NFS и блочного хранения, такие как iSCSI.
Конфигурация iSCSI FreeNAS для MPIO
Шаги по настройке FreeNAS для соединений MPIO для целей iSCSI включают очень короткий список вещей. Вам необходимо сделать следующее:
- Добавить дополнительные сетевые адаптеры к устройству
- После добавления дополнительных сетевых адаптеров настройте сетевую адресацию
- Добавить несколько порталов, поддерживаемых отдельными сетевыми картами
- Добавить дополнительную группу iSCSI для каждой цели iSCSI
- Проверить подключение
Я использую программу установки FreeNAS с виртуальной машиной vSphere 6.7. Добавление сетевых адаптеров так же просто, как добавление оборудования к виртуальной машине и перезагрузка. Для тестирования iSCSI я добавил два сетевых адаптера для передачи трафика iSCSI.
Ниже, в разделе Сеть >> Интерфейсы , вы увидите подключения к сетевому интерфейсу. Их можно редактировать, а имена iSCSI1 и iSCSI2 являются пользовательскими именами, которые я настроил.
Добавление нескольких сетевых адаптеров с разными IP-адресами и подсетямиКак вы можете видеть ниже, вы можете изменить имена и настроить сетевую адресацию. Примечание FreeNAS ожидает, что на каждом сетевом адаптере будут настроены разные подсети, и выдаст ошибку, если у вас настроены перекрывающиеся адреса.
Информация о сетевом адресе первого интерфейса iSCSIНастройка второго сетевого адаптера для трафика iSCSI.
Информация о сетевом адресе второго интерфейса iSCSI Теперь, когда на вашем устройстве FreeNAS настроено несколько сетевых адаптеров iSCSI, вы можете настроить несколько порталов . Обратите внимание, что каждый портал использует IP-адреса для соответствующего сетевого адаптера. В качестве теста здесь я предпочитаю использовать telnet для проверки сетевого подключения к порту 3260 , который используется для iSCSI. Это позволяет проверить подключение, прежде чем идти дальше.
Краткий обзор шага, который вы не хотите делать. При первоначальной настройке MPIO я использовал Добавить дополнительную опцию Portal IP . Однако это поместит два IP-адреса в один и тот же идентификатор портала и не будет правильно отвечать на запросы iSCSI MPIO. Вместо этого вы хотите настроить несколько идентификаторов групп.
Теперь, когда у вас есть несколько идентификаторов порталов/групп, сконфигурированных с разными IP-адресами, их можно добавить к целям.
Редактирование существующих целей для добавления идентификаторов групп iSCSI После определения цели вы можете нажать кнопку Добавить дополнительную группу iSCSI , чтобы добавить несколько резервных копий идентификатора группы портов.
. Убедитесь, что у вас запущена служба iSCSI . В этот момент действительно больно отказываться от службы, чтобы убедиться, что все считывает последнюю конфигурацию, однако с FreeNAS конфигурация должна вступить в силу немедленно.
Убедитесь, что служба iSCSI запущена в FreeNAS. Это позволяет легко экспериментировать с MPIO с Hyper-V и другими интересными конфигурациями. FreeNAS — отличное решение для хранения, особенно для лабораторных сред, но также и для нескольких производственных случаев, которые я видел. Это, безусловно, стоит проверить и поиграть. Это, безусловно, отличная цель для сред vSphere и Hyper-V для меня в домашней лаборатории, и я уверен, что другие также нашли интересные решения с использованием FreeNAS.Reddit — Погрузитесь во что угодно
Перейти на фринас р/фринаср/фринас
FreeNAS теперь TrueNAS. Для получения дополнительной информации используйте вкладки навигации в этом подразделе и не забудьте присоединиться к r/TrueNAS!
Члены Онлайн
к
аберрант0ne