Со всеми статьями можно ознакомится по ссылке.
В прошлой статье мы установили TrueNAS на наш домашний ПК, который будет выполнять роль сетевого хранилища (NAS) и оберегать наши семейные фото и видео архивы от различных неприятностей, а так же обеспечивать совмесный доступ к ним с различных устройств.
Теперь давайте организуем, то ради чего это всё задумывалось - совместный доступ к папкам нашего сетевого хранилища. Совместный доступ позволит пользователю любого ПК в нашей домашней сети видеть общие папки, раположенные на дисках сетевого хранилища, и использовать их по своему усмотрению.
RaidZ массив в TrueNAS
Что такое RAID?
RAID — технология виртуализации данных для объединения нескольких физических дисковых устройств в логический модуль для повышения отказоустойчивости и производительности. /Wikipedia/
Если по-простому, то RAID это несколько жестких (чаще физических) дисков объединённых в один виртуальный диск для повышения уровня сохранности наших данных.
Виды дисковых массивов
Для повышения надёжности хранения данных на нашем сетевом хранилище необходимо объединить несколько физических HDD дисков в RAID-массив. RAID-массив дисков для конечного пользователя будет единым диском, но в тоже время информация хранимая на таком массиве из дисков будет дублироваться на нескольких дисках сразу. В случае отказа одного из дисков не произойдёт необратимой потери данных, а данные можно будет восстановить с другого работоспособного диска в RAID-массиве.
При использовании файловой системы ZFS, а в TrueNAS используется именно ZFS, существуют специальные RIAD-массивы, называемые RAIDZ. Существует несколько конфигураций RAIDZ:
- Mirror - он же "зеркало" (аналог RAID 1). Для организации массива понадобится не менее 2 жёстких дисков. Сохранность данных в таком массиве обеспечивается путём дублирования (зеркалирования) данных на каждом из дисков;
- RAIDZ - аналог RAID 5. Для организации такого массива понадобится не менее 3 жёстких дисков. Сохранность данных обеспечивается путём записи контрольных сумм на 1 диск в массиве;
- RAIDZ2 - аналог RAID 6. Для организации массива необходимо не менее 4 жестких дисков. Сохранность данных обеспечивается путём записи контрольных сумм на 2 диска в массиве;
Сохранность данных в RAID и RAIDZ массивах обеспечивается либо дублированием данных, либо хранением специальных контрольных сумм. При этом доступная пользователю ёмкость дискового массива не равна суммарному объёму всех используемых им дисков. В таблице ниже я приведу конфигурации дисковых массивов с указанием минисального количества дисков, необходимых для создания массива: максимального количества дисков, которые могут выйти из строя и при этом не потеряв данные, записанные в массив, а так же эффективную, т.е. доступную пользователю, ёмкость хранилища с учётом того, что для своего NAS мы взяли диски объёмом 1ТБ каждый.
Создание дискового массива
1. В панели управления TrueNAS переходим в "Storage -> Pools" и нажимаем голубую кнопку "ADD" в левой части страницы.
2. Выбираем "Create new pool" и нажимаем кнопку "CREATE POOL"
3. Вводим имя нового пула - пусть будет "mypool". Отмечаем галочками все свободные диски в таблице "Available Disks".
4. Затем нажимаем стрелку вправо и перемещаем диски в область "Data VDevs". Т.к. у нас 4 диска, то можно создать массив RAIDZ2, обладающий самой высокой надёжность. Он сохранит наши данные даже если выйдут из строя 2 диска из 4-х. Хотя за это придётся заплатить двухкратным уменьшением свободного места на нашем сетевом хранилище.
5. Подтверждаем, что согласны с уничтожением всех данных на выбранных дисках - отмечаем "Confirm" и жмём "CREATE POOL".
6. После завершения процедуры создания пула получем дисковый массив общим объёмом 1.87 ТБ. Не много, но зато надёжно :)
7. Далее необходимо создать Dataset'ы для основных данных, которые мы будем хранить на нашем сетевом хранилище.
Dataset'ы в ZFS
Что такое Dataset?
Для конечного пользователя Dataset это обычная папка, в которой он может хранить свои файлы и создавать другие папки. Но на самом деле Dataset в файловой системе ZFS обладает дополнительными возможностями, такими как:
- сжатие хранимых данных;
- установка ограничения предельного размера dataset'a;
- создание снимков состояния (snapshots).
Если со сжатием данных и с установкой ограничения предельного размера, сорее всего, всё понятно, то про снимки состояния (snapshots) рассмотрим подробнее и ещё более подробнее в отдельной статье.
Снимки состояния (snapshots) позволяют моментально (вне зависимости от объёма данных) создавать слепок состояния dataset'a, а затем открывать его по мере необходимости и доставать от туда удалённые файлы или вообще возвращаться к состоянию снимка полностью.
А что с размером этих самых снимков спросите вы? Снимок занимает места столько сколько занимают места изменённые файлы после создания снимка. Т.е. если вы создали снимок на 1 ТБ, а затем изменили файл на 1 МБ, то снимок будет весить 1 МБ.
Снимки можно создавать по расписанию, например каждый день. И если вдруг вы случайно удалили какой-то файл на сетевом хранилище, то его можно будет вернуть из предыдущего снимка.
Создаём dataset
У меня в семье будет два пользователя сетевого хранилища - я и моя жена. Создадим 3 dataset'a: "Foto and Video", "User 1" и "User 2". Первый dataset сделаем доступным двум пользователям, а второй - только мне, а третий наоборот - только жене. Ограничение доступа делается не в целях, что-то скрыть, а в целях показать, как этот самый доступ, разграничивать в случае необходимости :)
1. В панели управления TrueNAS переходим в "Storage -> Pools", нажимаем на пиктограмму с тремя точками справа от пула "mypool" и выбираем "Add Dataset".
2. Вводим имя Dataset'a в первой строке и оставляем остальные настройки по-умолчанию, а затем нажимаем "SUBMIT".
3. Видим созданный dataset "Foto and Video"
4. Повторяем действия с двумя другими dataset'ами и видим в итоге такую картину:
На этом с RAID-массивами, пулами и датасэтами закончили - переходим к настройке совместного доступа.
Настройка SAMBA
Что такое SAMBA?
Samba — пакет программ, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколу SMB/CIFS. /Wikipedia/
Т.е. SAMBA позволит нам получить доступ по локальной сети (Wi-Fi или Ethernet) к файлам нашего сетевого хранилища.
Общие папки
В прошлой статье мы установили операционную систему TrueNAS и SAMBA уже была установлена вместе с ОС. Дополнительно ничего устанавливать не нужно.
1. Переходим в меню "Sharing -> Windows Shares (SMB)" и нажимаем кнопку "ADD" в правой части страницы.
2. Выбираем путь к папке, вводим имя общей папки, которое будет отображаться при работе с ней с других ПК в домашней сети, и нажимаем "SUBMIT"
3. Появляется предупреждение о том, что необходимо включить сервис SAMBA для автоматическго запуска. Нажимаем "ENABLE SERVICE".
4. Появляется сообщение, что сервис SAMBA включён. Нажимаем "CLOSE"
5. Настроить ACL или список управления доступом. Не будем пока этого делать, это можно сделать позже. Нажимаем "CANCEL".
6. Видим, что наша общая папка создана.
7. Повторяем пункты 1-6 дважды и создаём еще две общие папки "User 1" и "User 2". В результате должно получиться вот так:
8. Теперь можно открыть "Проводник", перейти в раздел "Сеть" и увидеть там наш TRUENAS. Правда доступа у нас к нему пока что нет, поэтому перейдём к следующему разделу, что бы создать пользователей и настроить доступ.
Пользователи общих папок
Для того что бы зайти в общие папки, которые мы создали немного ранее необходимо на нашем сетевом хранилище создать пользователей, которые будут иметь доступ к этим папкам.
1. Переходим в меню "Accounts -> Users" и нажимаем кнопку "ADD" в правой части страницы.
2. На открывшейся странице, в её верхней части, в разделе "Identification" заполняем поля "Full Name" (Ф.И.О.), "Username" (логин), "Password" (пароль) и "Confirm Password" (подтверждение пароля). Я заполню "Full Name" как Ivan Ivanov, а логин - samba1.
3. В нижней части этой же страницы, в разделе "Authentication" меняем "Shell" на "nologin" и проверяем наличие двух галочек - "Microsoft Account" и "Samba Authentication". Затем нажимаем кнопку "SUBMIT"
4. После этого в списке пользователей появится пользователь "samba1" c именем "Ivan Ivanov"
5. После чего повторим пункты 1-4 для добавления второго пользователя. В результате у нас появится два пользователя samba1 и samba2
Права доступа к общим папкам
Для того, что бы пользователи могли читать и записывать в общие папки необходимо настроить им соответствующие права доступа.
Настроим права для общей папки "Foto and Video"
1. Переходим обратно в меню "Sharing -> Windows Shares (SMB)" и, справа, напротив строки с соответствующей общей папкой нажмём на пиктограмму с трёмя точками и выберем в выпадающем меню "Edit Filesystem ACL".
2. Во всплывающем окне выберем "Select a preset ACL" и ниже в выпадающем списке выберем "RESTRICTED". Затем нажмём "CONTINUE"
2.1 Если после нажатия кнопки Continue вы видите следующее сообщение:
Необходимо нажать слева в меню TrueNAS кнопку Shell и выполнить следующую команду:
zfs set acltype=nfsv4 'mypool/Foto and Video'
Источник: https://www.truenas.com/community/threads/unable-to-set-acls-on-newly-imported-pool.94073/
3. Справа внизу нажмём "ADD ACL ITEM", затем установим права для пользователя "samba1" как на скриншоте ниже и нажмём "SAVE" слева внизу страницы:
3. Повторим пункты 1-3. Только в п. 3 вместо пользователя "samba1" выберем пользователя "samba2".
4. Затем необходимо перезапустить SAMBA. Для этого идём в меню "Services" и сначала выключаем сервис "SMB", а затем обратно включаем его.
5. Далее открываем "Проводник" переходим в переходим в раздел "Сеть" и дважды кликаем по "TRUENAS". В появившемся окне вводим имя пользователя samba1 и пароль к нему и жмём "ОК".
Не забываем поставить галочку "Запомнить учётные данные" для того, что бы не вводить их каждый раз.
6. После этого мы видим все три, созданные нами общие папки. В папке "Foto and Video" мы можем создавать и удалять файлы, т.е. права доступа есть на чтение и на запись.
7. Теперь аналогично настроим права доступа для папки "User 1". Для этого снова идём в меню "Sharing -> Windows Shares (SMB)" и, справа, напротив строки с общей папкой "User 1" нажмём на пиктограмму с трёмя точками и выберем в выпадающем меню "Edit Filesystem ACL".
8. Затем во всплывающем окне выберем "Select a preset ACL" и ниже в выпадающем списке выберем "RESTRICTED". Затем нажмём "CONTINUE"
9. Справа внизу нажмём "ADD ACL ITEM", затем установим права для пользователя "samba1" как в п. 3 и нажмём "SAVE" слева внизу страницы.
10. Для запрета доступа к папке "User 1" пользователя "samba2" необходимо выставить пользователю "samba2" права доступа как на скриншоте ниже:
Теперь к папке "User 1" есть доступ только у пользователя "samba1".
11. Аналогично, следуя пунктам 7-10 можно ограничить доступ пользователя "samba1" в папку "User 2".
12. После выставления соответствующих прав рекомендую перезапустить сервис "SMB" как мы делали это в пункте 4.
На этом настройка совместного доступа к папкам закончена. Спасибо, что дочитали до конца!