Выжмем всё из домашнего сервера — Часть 1

Подготовка и первичная настройка ПК, конфигурирование сервера Samba для создания сетевого хранилища.

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

Полный список статей можно увидеть по ссылке

Для начала определимся с оборудованием, после чего установим операционную систему, и настроим сервер Samba.

Оборудование

Здесь перечислю нюансы выбора железа для создания linux-сервера для указанных нужд, не вдаваясь в дебри выбора железа.

1. Материнская плата. Самое главное, что нужно помнить: материнские платы делятся на 2 вида: те что поддерживают диски больше 2ТБ, и те, что не поддерживают. От этого зависит, сможете ли вы подключить большой диск, скажем на 4ТБ. Если у вас уже есть материнская плата для домашнего сервера, не поддерживающая большие диски, и вы не хотите покупать новую, но хотите большой диск, вы можете купить дополнительный контроллер жёстких дисков. Также, стоит иметь ввиду, что из вариантов SATA, SATA2, SATA3 стоит выбирать с самой большой цифрой, но только если и диски и материнская плата будут поддерживать эту цифру, иначе смысла переплачивать нет.

2. Контроллер жёстких дисков. Если ваша материнская плата не поддерживает большие диски, а они у вас есть — самый простой выход из ситуации — купить дополнительный контроллер, подключаемый в слот PCI-Express. В моём случае всё так и было, и я приобрёл дешевый китайский контроллер ORIENT A1061SL, который поддерживает диски до 6ТБ, и работает по протоколу SATA3, что обеспечивает предел скорости чтения в 300МБ/с, которая, наверняка упрётся в скорость самих дисков. Если у вас диски работают и так — контроллер вам ни к чему.

3. Жёсткие диски. Если вы собираетесь использовать RAID (что я очень рекомендую), то нужно иметь как минимум 2 одинаковых по объёму (а лучше и по модели) жестких диска. Если у вас будет два диска, скажем на 2ТБ каждый, из них можно собрать массив RAID1, объёмом также в 2ТБ, что конечно не слишком эффективно с экономической точки зрения. Если же у вас будет 3 диска по 2ТБ, то из них можно будет собрать массив RAID5, объёмом около 4ТБ (для дублирования будет использован только 1 диск из 3-х), что гораздо выгоднее.
Я использовал 2 одинаковых диска на 4ТБ, из которых собрал массив RAID1, о чём в дальнейшем и пойдёт речь.
Что касается свойств дисков, лучше брать поддерживающие стандарт SATA3 и скорость вращения дисков 7200 rpm, правда на итоговую скорость это повлияет слабо, так как узким местом скорее всего будет скорость локальной сети.

4. Сетевая карта. Лучше будет если ваше сетевое оборудование будет работать на скорости в 1Gbit, тем более, что большая часть современных сетевых карт поддерживают такую скорость. Это позволит ограничить скорость загрузки 128 Мегабайтами в секунду.

5. Источник бесперебойного питания. Перепады напряжения бывают везде, да и электричество в доме отключается как минимум пару раз в год. Зачем рисковать целостностью данных и оборудования, если можно защитить их от таких ньюансов? Лучше купить источник бесперебойного питания с портом для подключения ПК, по которому он сможет сообщить компьютеру о том, что подача энергии в сети прервана, и идёт работа на аккумуляторах. Когда же аккумуляторы разряжаются — подать сигнал о том, что пора завершать работу и выключаться, дабы не повредить данные при обесточивании ПК.

Установка операционной системы

Из операционных систем я выбрал Debian Linux, но можно использовать любой дистрибутив. Например, ту же Ubuntu.

Разбивка жёстких дисков

В процессе установки системы вас попросят разбить жёсткие диски, и указать, на каком разделе что будет находиться.
Я буду исходить из того что у вас 2 жестких диска по одному или более ТБ.

Оба диска будем разбивать одинаково, для того, чтобы собрать из них RAID-массивы.
Каждый из дисков должен состоять из следующих разделов:
1. Раздел на 100 Мегабайт, файловая система ext4, смонтировать папку /boot
2. Раздел на 20 Гигабайт, RAID1, после объединения в массив файловая система ext4, смонтировать папку /
3. Раздел на 4 Гигабайт, использовать как SWAP
4. Раздел на всё остальное пространство раздел RAID1. После объединения в RAID1, будем создавать на нём разделы LVM, для более удобного управления разделами, изменения их размерами налету.

Установка и настройка операционной системы

1. Установим операционную систему

2. Добавим необходимые пакеты:

# apt-get install mdadm fdisk gdisk samba

3. Если хотите — можно установить также графическую систему и vnc-сервер для доступа к ней. Специально выбираем лёгкую систему xfce, чтобы она не требовала много ресурсов файл-сервера.

# apt-get install xfce x11vnc

Разбитие диска с данными на разделы с помощью LVM

Как я уже говорил, для данных мы оставляем самый большой раздел. А чтобы им было удобнее пользоваться — разобьём его на три подраздела. Эти подразделы можно создавать и обычным способом, однако, удобнее делать это с помощью LVM, так как в этом случае размер разделов позже можно будет без проблем изменить «на ходу» без уничтожения данных.

Полезная информация по LVM есть здесь и здесь

1. Установим пакеты для работы с LVM:

# apt-get install lvm2 system-config-lvm

2. Запустим демона, управляющего LVM:

# service lvm2 start

Предположим, что самые большие разделы, объединённые в RAID1, имеют имя /dev/md3

3. Инициализируем раздел в качестве физического диска:

# pvcreate /dev/md3

4. Создадим группу томов «vg00»

# vgcreate vg00 /dev/md3

5. Активируем эту группу томов

# vgchange -a y vg00

6. Создаём 3 логических тома.
Первый — для всей семьи, он в дальнейшем будет доступен для всех на чтение и запись.
Второй — для вас с доступом на чтение для всей семьи — чтобы все могли смотреть, но не удалять и изменять.
Третий — персональный защищённый раздел, куда сможете заходить только лично вы.
Объём выбирайте на своё усмотрение, я же создам два первых побольше, равного размера, а третий — поменьше, на 150ГБ.
В дальнейшем размер разделов можно будет довольно просто поменять, это один из плюсов LVM.

Первый и второй разделы на 300GB:

# lvcreate -L300 -n lv00 vg00
# lvcreate -L300 -n lv01 vg00

Последний раздел на всё оставшееся место (100%FREE означает «использовать 100% от свободного»):

# lvcreate -l 100%FREE -n lb02 vg00

7. Создадим файловую систему ext4 на всех разделах:

# mkfs.ext4 /dev/mapper/vg00-lv00
# mkfs.ext4 /dev/mapper/vg00-lv01
# mkfs.ext4 /dev/mapper/vg00-lv02

7. Создадим папки для монтирования разделов

# mkdir /mnt/family
# mkdir /mnt/readonly
# mkdir /mnt/protected

8. Добавим в конец файла /etc/fstab строчки для монтирования дисков в соответствующие папки:

/dev/mapper/vg00-lv00			 /mnt/family	  ext4    noatime,nodiratime,defaults	0	0
/dev/mapper/vg00-lv01                    /mnt/readonly      ext4    noatime,nodiratime,defaults   0       0
/dev/mapper/vg00-lv02                    /mnt/protected      ext4    noatime,nodiratime,defaults   0       0

и примонтируем диски вызвав команду:

# mount -a

9. Установим права на эти диски пользователю, допустим, пользователя зовут «mihanentalpo», и группа его основная называется также.

# chown -hR mihanentalpo:mihanentalpo /mnt/family
# chown -hR mihanentalpo:mihanentalpo /mnt/protected
# chown -hR mihanentalpo:mihanentalpo /mnt/readonly

Настройка сервера Samba

Сервер Samba отвечает за раздачу файлов в локальной сети Windows (их смогут читать машины с любой операционной системой).
Настраивать будем следующим образом:
1) Папка family будет доступна всем пользователям для чтения/записи без авторизации
2) Папка readonly будет доступна всем на чтение, а запись туда сможешь осуществлять только привилегированный пользователь после авторизации
3) Папка protected будет доступна только привилегированному пользователю, неавторизованные пользователи не смогут даже просмотреть содержимое папки.

Изменения конфигурационного файла относительно значений по умолчанию:
(Вам нужно открыть конфигурационный файл /etc/samba/smb.conf и изменить в нём, или добавить эти параметры)

# Способ разрешения имён
name resolve order = bcast host lmhosts wins

# Режим подтверждения безопасности - пользовательский
security = user

# Шифрование паролей
encrypt passwords = true

# Уровень крутизны сервера 
# Влияет на вероятность того, что ваш сервер станет локальным обозревателем, 
# что может пригодится если ваш сервер работает в постоянном режиме
os level = 30

[homes]
    # Отключим папки пользователей, чтобы их списка не было видно при входе на сервер
    available = no 
    valid users = nobody

# Папка доступная всем только для чтения, а вашему пользователю - для всего
[Readonly]
    comment = Данные, защищённые от записи
    path = /mnt/readonly
    guest ok = yes
    browsable = yes
    read only = yes
    # valid users = mihanentalpo
    write list = mihanentalpo
    create mask = 0755
    directory mask = 755

# Папка, доступная всем
[Family]
    comment = Семейный диск
    read only = no
    path = /mnt/family
    guest ok = yes
    writeable = yes
    browseable = yes
    public = yes
    create mask = 0644
    directory mask = 0755
    
# Папка, доступная только нашему пользователю
[Protected]
    comment = Защищённая зона
    path = /mnt/protected
    guest ok = no
    valid users = mihanentalpo
    read list = mihanentalpo
    write list = mihanentalpo
    force user = andrey
    create mask = 0644
    directory mask = 0755
    writable = yes


Разумеется, вы можете создать столько «защищённых» папок для пользователей, сколько считаете нужным, взяв за основу конфигурацию папки Protected.

Особенности работы:

При входе в папки «Family» и «Readonly» у вас не будут спрашивать логин и пароль, однако ваши права в Readonly будут на уровне гостя — то есть «только для чтения».
Чтобы получить доступ на запись в папке Readonly (если ваш пользователь имеет на это право), вам нужно зайти в папку Protected, где у вас спросят логин и пароль, нужно будет их ввести, после этого сервер запомнит вас, и будет воспринимать уже не как гостя, а как пользователя, и разрешит запись в Readonly.

Следующая часть: настройка DLNA-сервера


Оставить комментарий