Найти тему
Домашний NAS

Настройка совместного доступа к общим папкам в TureNAS + SAMBA

Оглавление
Источник: truenas.com и ru.wikipedia.org
Источник: truenas.com и ru.wikipedia.org
Со всеми статьями можно ознакомится по ссылке.

В прошлой статье мы установили 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ТБ каждый.

-2

Создание дискового массива

1. В панели управления TrueNAS переходим в "Storage -> Pools" и нажимаем голубую кнопку "ADD" в левой части страницы.

Создание пула 1 из 4
Создание пула 1 из 4

2. Выбираем "Create new pool" и нажимаем кнопку "CREATE POOL"

Создание пула 2 из 4
Создание пула 2 из 4

3. Вводим имя нового пула - пусть будет "mypool". Отмечаем галочками все свободные диски в таблице "Available Disks".

Создание пула 3 из 4
Создание пула 3 из 4

4. Затем нажимаем стрелку вправо и перемещаем диски в область "Data VDevs". Т.к. у нас 4 диска, то можно создать массив RAIDZ2, обладающий самой высокой надёжность. Он сохранит наши данные даже если выйдут из строя 2 диска из 4-х. Хотя за это придётся заплатить двухкратным уменьшением свободного места на нашем сетевом хранилище.

Создание пула 4 из 4
Создание пула 4 из 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".

Создание Datset'a
Создание Datset'a

2. Вводим имя Dataset'a в первой строке и оставляем остальные настройки по-умолчанию, а затем нажимаем "SUBMIT".

Создание Datset'a
Создание Datset'a

3. Видим созданный dataset "Foto and Video"

Dataset "Foto and Video"
Dataset "Foto and Video"

4. Повторяем действия с двумя другими dataset'ами и видим в итоге такую картину:

Все три dataset'a
Все три dataset'a

На этом с RAID-массивами, пулами и датасэтами закончили - переходим к настройке совместного доступа.

Настройка SAMBA

Что такое SAMBA?

Samba — пакет программ, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколу SMB/CIFS. /Wikipedia/

Т.е. SAMBA позволит нам получить доступ по локальной сети (Wi-Fi или Ethernet) к файлам нашего сетевого хранилища.

Общие папки

В прошлой статье мы установили операционную систему TrueNAS и SAMBA уже была установлена вместе с ОС. Дополнительно ничего устанавливать не нужно.

1. Переходим в меню "Sharing -> Windows Shares (SMB)" и нажимаем кнопку "ADD" в правой части страницы.

-13

2. Выбираем путь к папке, вводим имя общей папки, которое будет отображаться при работе с ней с других ПК в домашней сети, и нажимаем "SUBMIT"

-14

3. Появляется предупреждение о том, что необходимо включить сервис SAMBA для автоматическго запуска. Нажимаем "ENABLE SERVICE".

-15

4. Появляется сообщение, что сервис SAMBA включён. Нажимаем "CLOSE"

-16

5. Настроить ACL или список управления доступом. Не будем пока этого делать, это можно сделать позже. Нажимаем "CANCEL".

-17

6. Видим, что наша общая папка создана.

-18

7. Повторяем пункты 1-6 дважды и создаём еще две общие папки "User 1" и "User 2". В результате должно получиться вот так:

-19

8. Теперь можно открыть "Проводник", перейти в раздел "Сеть" и увидеть там наш TRUENAS. Правда доступа у нас к нему пока что нет, поэтому перейдём к следующему разделу, что бы создать пользователей и настроить доступ.

Сетевое окружение
Сетевое окружение

Пользователи общих папок

Для того что бы зайти в общие папки, которые мы создали немного ранее необходимо на нашем сетевом хранилище создать пользователей, которые будут иметь доступ к этим папкам.

1. Переходим в меню "Accounts -> Users" и нажимаем кнопку "ADD" в правой части страницы.

-21

2. На открывшейся странице, в её верхней части, в разделе "Identification" заполняем поля "Full Name" (Ф.И.О.), "Username" (логин), "Password" (пароль) и "Confirm Password" (подтверждение пароля). Я заполню "Full Name" как Ivan Ivanov, а логин - samba1.

-22

3. В нижней части этой же страницы, в разделе "Authentication" меняем "Shell" на "nologin" и проверяем наличие двух галочек - "Microsoft Account" и "Samba Authentication". Затем нажимаем кнопку "SUBMIT"

-23

4. После этого в списке пользователей появится пользователь "samba1" c именем "Ivan Ivanov"

5. После чего повторим пункты 1-4 для добавления второго пользователя. В результате у нас появится два пользователя samba1 и samba2

-24

Права доступа к общим папкам

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

Настроим права для общей папки "Foto and Video"

1. Переходим обратно в меню "Sharing -> Windows Shares (SMB)" и, справа, напротив строки с соответствующей общей папкой нажмём на пиктограмму с трёмя точками и выберем в выпадающем меню "Edit Filesystem ACL".

-25

2. Во всплывающем окне выберем "Select a preset ACL" и ниже в выпадающем списке выберем "RESTRICTED". Затем нажмём "CONTINUE"

-26

2.1 Если после нажатия кнопки Continue вы видите следующее сообщение:

[ENOTSUP] NFSv4 ACLS are not supported on path
[ENOTSUP] NFSv4 ACLS are not supported on path

Необходимо нажать слева в меню 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" слева внизу страницы:

-28

3. Повторим пункты 1-3. Только в п. 3 вместо пользователя "samba1" выберем пользователя "samba2".

4. Затем необходимо перезапустить SAMBA. Для этого идём в меню "Services" и сначала выключаем сервис "SMB", а затем обратно включаем его.

-29

5. Далее открываем "Проводник" переходим в переходим в раздел "Сеть" и дважды кликаем по "TRUENAS". В появившемся окне вводим имя пользователя samba1 и пароль к нему и жмём "ОК".

Не забываем поставить галочку "Запомнить учётные данные" для того, что бы не вводить их каждый раз.

-30

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" права доступа как на скриншоте ниже:

-32

Теперь к папке "User 1" есть доступ только у пользователя "samba1".

11. Аналогично, следуя пунктам 7-10 можно ограничить доступ пользователя "samba1" в папку "User 2".

12. После выставления соответствующих прав рекомендую перезапустить сервис "SMB" как мы делали это в пункте 4.

На этом настройка совместного доступа к папкам закончена. Спасибо, что дочитали до конца!