Файловый сервер SMB 1.0: различия между версиями

Материал из wolfram
Перейти к навигации Перейти к поиску
Строка 29: Строка 29:


===Обращения к накопителю proxmox===
===Обращения к накопителю proxmox===
Внести изменения, так как данная инструкция неактуальна. [https://losst.ru/kak-ostanovit-zhesnkij-disk-v-linux От сюда!]
Также была постоянная активность к нему, каждые 10 секунд. Оказалось, что это происходит именно на машине с proxmox, на других машинах с linux, ничего подобного не наблюдалось.  
Также была постоянная активность к нему, каждые 10 секунд. Оказалось, что это происходит именно на машине с proxmox, на других машинах с linux, ничего подобного не наблюдалось.  



Версия от 02:59, 4 декабря 2020

Постараюсь описать, что мне нужно от данного сервера. Его задача хранить в себе большой объем данных. На данный момент это 12 терабайт. Данные представляют из себя видео файлы (Фильмы, сериалы, мультфильмы, мультсериалы). Приблизительно 200 фильмов, 30 сериалов. И надежда на то, что это можно будет 2х кратно расширить. Почему 12 терабайт? Да все очень просто, весь этот контент представляет из себя исходники Blu Ray дисков. Суть задачи именно хранить медиафайлы в максимально возможном качестве, доступном простому смертному. На данный момент потолком являются Blu ray диски. Если посмотреть на этот стандарт, и изучить, станет понятно, что поток может быть до 100 мегабит, а размерность до 100 гигабайт на единицу. Это допустимый максимум, в реальности таких нет. можно сделать процентное распределение так: 70 процентов до 30 гигабайт, 20 процентов до 50 гигабайт, 10 процентов до 70 гигабайт. Это если говорить о Фильмах. К сериалам это относится мало. Редко бывает так, что сериал выпускают на blu ray, или любой другой носитель. Сейчас сериалы живут в онлайн сервисах, и достигают смешных 20 мегабит в потоке для 4К.


И снова, крутиться это будет на нашем сервере, в proxmox.

Как я говорил ранее, в самом сервере нет места для установки накопителя 3.5 дюйма. Поэтому принято решение подключать этот диск по USB 3.1.  

Имеется кейс AGE STAR 3UB3A8-6G для накопителей 3.5 с внешним питанием.

Интересный вопрос был в том, а как же серверный дисковый накопитель на 12 терабайт впихнуть в кейс, на котором указано максимум 4 терабайта. Откуда взято данное ограничение одному производителю известно. Возможно, производитель посчитал, что дисковый накопитель большей ёмкости сильно греется.  


На данный момент есть очень интересная закономерность. Дисковые накопители малого объема (до 10 Терабайт) перешли в режим сверх дешевости. То есть их делают из отбраковки топовых решений. А топовое решение - это обычно максимально емкий накопитель в серии. Toshiba [MG07ACA12TE] и является таковым на 18 год. То есть в таком накопителе применены самые передовые технологии изготовления, какие были на 18 год. И соответственно качество их очень и очень высоко. На 20 год уже топовыми являются 16 терабайтные накопители, они также являются сверхкачественными.  


И еще один немаловажный фактор - это энергопотребление. В какой-то момент индустрия высоко ёмких накопителей сломалась. Рост ёмкости сопрягался с энергопотреблением, накопители могли потреблять до 15 - 20 ватт, на единицу. Но появились SSD, и теперь накопитель несравненно медленнее. Поэтому правильным решением стало взять не скоростью, а ёмкостью. Дешевой ёмкостью. А чтобы эту емкость приумножать, нужно толкать в сервер просто уйму этих дисков, до 100 штук на одно устройство. И если такая сотня будет потреблять по 15 ватт каждый, как это охлаждать? Пошли по пути снижения энергопотребления. Бытовой накопитель работает при мощности 8 - 10 ватт. Серверные накопители пошли еще дальше, 4 - 5 ватт. Это удивительное преображение.


Но видимо производители кейса так не считают, и перестраховываются. Иные ограничения сложно представить. А мы же без опаски вставляем накопитель в коробочку, и мониторим температуру, в работе. Нельзя допускать чтобы она была 50 градусов. Если температура такова, то лучше подумать о другом способе установки накопителя. Без принудительного охлаждения ему работать нельзя.  

 

Одна из основных сложностей возникла с тем, чтобы этот USB диск мог парковаться и переходить в сон. Зачем это нужно? Сам по себе сервер, состоит полностью из пассивных элементов, он не издает звуки. А вот 12 терабайтный накопитель, издает. И в целом даже пяти ватный накопитель, в кейсе при длительной работе прогревается до 45 градусов. Не критично, но и не идеально. Изначально возник вопрос, а может ли вообще засыпать накопитель подключенный по USB. Подключив к ПК с Windows и установив таймер на сон накопителей в настройках электропитания на 1 минуту, получили реальный переход накопителя, при отсутствии обращений. Но подключив тоже самое к серверу с proxmox, диск не заснул.


Подготовка Proxmox


Обращения к накопителю proxmox

Внести изменения, так как данная инструкция неактуальна. От сюда!


Также была постоянная активность к нему, каждые 10 секунд. Оказалось, что это происходит именно на машине с proxmox, на других машинах с linux, ничего подобного не наблюдалось.

За данное действие отвечает некий процесс в proxmox “pvestatd”.


Для того чтобы отключить его, нужно добавить накопитель в исключения в конфигурационном файле /etc/lvm/lvm.conf.

Так же чтобы привязать эти настройки к конкретному носителю, нужно выяснить какой у него ID. Так как при различных обстоятельствах может поменяться буква накопителя.  

Для этого выполняем команду в консоли proxmox или подключившись по ssh через Powershell:

ls -lah /dev/disk/by-id

Ищем нужный нам накопитель:

usb-TOSHIBA_MG07ACA12TE_98765432100C-0:0

В данном случае такой. Их будет несколько, в зависимости от того сколько будет разделов.

И теперь его выписываем в:

nano /etc/lvm/lvm.conf

Выглядеть это должно так:

....
global_filter = ["r|usb-TOSHIBA_MG07ACA12TE_98765432100C-0:0|", "r | /dev/zd.* |", "r | / dev / mapper / pve -. * |" "r | / dev / mapper /.*- (vm | base) - [0-9] + - диск - [0-9] + |"]
...

Данный конфигурационный файл очень чувствителен к пробелам и оформлению, очень внимательно прописываем наши данные.

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


Готово, теперь обращения к накопителю прекратились, осталось только заставить его переходить в сон.

Таймер сна накопителя

Первым делом озадачился поиском как в linux указать таймер сна накопителя. Первым делом наткнулись на hdparm. Утилита позволяет посмотреть информацию о накопителе, также сделать таймер сна. Но указание параметров ни к чему не вело. Выяснилось, что hdparm зачастую не работает с USB накопителями. Попалась на глаза утилита hd-idle.


Но её потребовалось скомпилировать. Так как распространяется в виде исходников.

---

Описание как это сделать  

---


Данная утилита дала результат.

Скачиваем с моего облака.


Устанавливаем её:

dpkg -i hd-idle-1.04.tgz 

После чего вводим информацию о таймере сна в виде 600 секунд для нашего накопителя.

hd-idle - a usb-TOSHIBA_MG07ACA12TE_98765432100C-0:0 -i 600 

А также включаем автозагрузку службы.

systemctl enable hd-idle

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

Подключение хранилища 12 терабайт

Название одно, а по факту другое.

Раньше, подключал. Но стало понятно, что это бессмысленно.

Дело в том, что у меня конкретные диски подключены для конкретной задачи. Так уж получилось. И этот 12 терабайтник кроме как для этой машины, не требуется. Тогда зачем сдавать файловую систему внутри файловой системы.Терять на этом лишние пол терабайта. Принято решение выполнит проброс физического диска в требуемую виртуалку. И уже в ней произвести разметку и форматирование. И плюсов еще то, что можно будет этот диск подкинуть другой машине. Так как там обычный раздел ext4.

Поэтому ничего не делаем кроме как знаем что этот диск нужно подключить к созданной виртуалке.

Настройка VM SMB

Кратко по нюансам установки.

Переходим к созданию Виртуальной машины.

Общее

Узел: pve

VM ID: 101

Имя: smb

ОС

Хранилище: local

ISO образ:

Жесткий диск

Шина: VirtIO Block

Хранилище: local-lvm

Размер: 20

Кэш: Write through

Процессор

Ядра: 2

Память

Память: 2048


Появилась виртуальная машина с номером 102 и названием smb в разделе pve.

Теперь сразу же подкинем этой машине нашь накопитель на 12 терабайт для хранения “облачных данных”.

Подключение физического диска

Для данной манипуляци нучно просто вписать название нашего накопителя, причем в любом виде, как dev или можно взять его ID. Лучше второе, так как если внезапно при перезагрузке ОС решит поменять букву диска, а это происходит постоянно, ничего хорошего из этого не выйдет.

Поэтому узнаём ID накопителя. Это не ID раздела как мы узнавали ранее, нам нужен именно сам накопитель.

ls -lah /dev/disk/by-id/

ищем там наш дисковый накопитель. в конце будет подписано какой это девайс или буква.

ata-TOSHIBA_MG07ACA12TE_59D0A12KF95G

теперь пеходим к конфигупации виртуальной машины. К сожалению подбный функционал не реализован в веб интерфейсе. Поэтому придется через терминал proxmox.

nano /etc/pve/qemu-server/"немер машины".conf

Мой номер 101

nano /etc/pve/qemu-server/101.conf

и вписываем в конце

virtio2: /dev/disk/by-id/ata-TOSHIBA_MG07ACA12TE_59D0A12KF95G

virtio - то тот самый метод эмуляции, мы его применим и к физическому накопителю

номер в после virtio - это номер устройсв, смотрим не занят ли он чем то еще. Иначе машина перестанет запускаться.

Делать это все нужно на выключений машине. Ну или, придется её полностью отключать. И запускать по новой.

Готово, как только файл конфигурации будет сохранён в списке оборудования в веб интерфейсе появиться новый накопитель.

Подключение виртуальной сети

После чего двигаемся в настройки виртуальной машины.

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

“Добавить”

Сетевое устройство и добавляем нашу дополнительную подсеть net1

Модель выбираем VirtO

Установка Ubuntu для SMB

Установка точно такая же как на реальном железе. Но все буде рассказано.

Переходим в раздел Консоль нашей 102 виртуальной машины.

Видим запуск ОС и выбор языка. Выбираем Русский.

Клавиатура остается на Английском.  


Видим, что машина получила IP адрес от нашего DHCP сервера.

192.168.1.92/24

Вторая подсеть не будет прописана, мы это сделаем уже в системе

В разделе Filesystem setup выбираем Вручную. Мы же профессионалы.

Видим 2 накопителя:

 

Сначало: /dev/vda/ 20G

Жмем и выбираем: Add Partition

Size: 2

Format: swop

Create

Снова выбираем: /dev/vda/ 20G

Жмем и выбираем: Add Partition

Size: 1

Format: ext4

Mount: /boot

Create

Снова выбираем: /dev/vda/ 20G

Жмем и выбираем: Add Partition

Size: ничего

Format: ext4

Mount: /

Create

 

Теперь: /dev/vdb/ 10.9T

Жмем и выбираем: Add Partition

Size: ничего

Format: ext4

Mount: other /media/shara

Create

Идем в самый низ и выбираем Готово. Продолжить Да.

Начинается установка. При этом она идет в фоне.

В это время заполняем данные пользователя и машины.

 

Your name: vova

your server’s name: smb

Pick a username: vova

Choose password: пароль_пользователя_smb

Confirm your password: пароль_пользователя_smb

Готово

На вопрос установить ли ssh соглашаемся, поставив крестик пробелом.

Готово

Ничего не выбираем и говорим Готово. Ждем окончания установки.  

По окончании Reboot

enter

ОС перезагрузиться, но уже в установленном виде. С ней бы выполнить стандартный набор операций.  

PowerShell

ssh vova@192.168.1.92 тут уже пользователь vova, а не root

yes

Вот мы и в консоли будущего облака. Так как мы не root нужно выполнять все действия через команду sudo, или ввести sudo su и ввести пароль. Это сделает все наши операции от root.

apt-get update

apt-get upgrade -y

apt-get install mc -y

ОС готова переходим к установке SMB.

Установка SMB

Установим.

apt-get install -y samba samba-client

Бекап файла конфигурации.

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

Шара без Пароля то:

nano /etc/samba/smb.conf 

Добавляем параметры в конфиг Самбы

[global] 
workgroup = WORKGROUP 
security = user 
map to guest = bad user 
wins support = no 
dns proxy = no 
  
[media] 
path = /media/shara/media 
guest ok = yes 
force user = nobody 
browsable = yes 
writable = yes 
read only = no 
create mask = 0775 
directory mask = 0775
service smbd restart

Тут мы даем принадлежность папке /media/shara/ пользователю nobody и группе nogroup.

chmod -R 0777 /media/shara
chown -R nobody:nogroup /media/shara/

Все теперь есть доступ к папке со стороны windows.

Веб Torrent клиент

Также неплохо бы, поднять веб Torrent сервер, чтобы можно было добавлять файлы на загрузку, отовсюду, и они могли загружаться независимо от рабочего ПК.

Загрузка должна производиться в shara/temp/torrent

Как клиент выбран Deluge.

Начнем, для начала создадим папку:

mkdir /media/shara/torrent

Дадим ей права

chmod -R 0777 /media/shara/torrent
chown -R nobody:nogroup /media/shara/torrent

Теперь установим сам Deluge.

apt install deluged deluge-webui -y

Добавляем пользователя

adduser --system --group deluge

Добавляем vova в созданную группу

gpasswd -a your-vova deluge

Настраиваем конфиг

nano /etc/systemd/system/deluged.service

Вписываем:

[Unit] 
Description=Deluge Bittorrent Client Daemon 
After=network-online.target 
 [Service] 
Type=simple 
User=deluge 
Group=deluge 
UMask=000 
  	ExecStart=/usr/bin/deluged -d 
  	Restart=on-failure 
  # Configures the time to wait before service is stopped forcefully. 
TimeoutStopSec=300 
 [Install] 
WantedBy=multi-user.target

Сохраняем.

systemctl start deluged
systemctl enable deluged
systemctl status deluged

Убеждаемся что все в порядке.

Создаем конфиг для веб доступа.

nano /etc/systemd/system/deluge-web.service

Вписываем:

[Unit] 
Description=Deluge Bittorrent Client Web Interface 
After=network-online.target 
 [Service] 
Type=simple 
  	User=deluge 
Group=deluge 
UMask=027 
  	ExecStart=/usr/bin/deluge-web 
  	Restart=on-failure 
 [Install] 
WantedBy=multi-user.target

Сохраняем.

systemctl start deluge-web
systemctl enable deluge-web
systemctl status deluge-web

Переходим в веб браузере по адресу машины

192.168.1.92:8112

Видим веб интерфейс

вводим пароль по умолчанию: deluge

Подключаемся к своему серверу.

Открывается окно настроек

Указываем путь доля загрузок: /media/shara/temp/torrent

Меняем пароль на свой: пароль_deluge


Готово, теперь у нас есть свой сервер загрузки.

Настройка доступа к этому серверу через доменное имя, можно посмотреть в разделе Nginx.

Настройка виртуальной подсети.

Для данного дела нужно открыть файл /etc/netplan/01-netcfg.yaml

Пока я не знаю будет ли он отличаться по названию, но он там один и в него вносятся изменения.

Прописываем в нем следующее:

С учетом пробелов

Для ens18 уже прописан параметр о том, что dhcp выдается автоматически. А вот наша виртуальная сеть не имеет dhcp сервера, поэтому адреса машинам мы дадим сами.

nano /etc/netplan/01-netcfg.yaml 
network: 
    ethernets: 
        ens18: 
        dhcp4: true 
 
#Это уже есть, дописываем: 
        ens19: 
        dhcp4: no 
        dhcp6: no 
        addresses: [192.168.2.3/24, ] 
    version: 2

Сохраняем


NFS сервер

Это локальная сеть между машинами с ОС linux. Выбираю её потому, что производительность намного выше.


Устанавливаем серверную часть.

apt-get install nfs-kernel-server 

Далее редактируем конфиг

nano /etc/exports 

Добавляем нашу папку, и указываем нужную нам подсеть.

/media/shara 192.168.2.0/24(rw,sync,no_subtree_check,no_root_squash) 

Запускаем службы

/etc/init.d/nfs-kernel-server start
service nfs-kernel-server restart 

Готово.

Симлинк на другой диск

Суть задачи в том, чтобы внутри одного каталога находились папки с разных дисков.

В линуксе существует метод своего рода ярлыка.

ln -s /media/temp/Сериалы1/ /media/shara/Сериалы1

Выглядит это так

Тут я хочу чтобы зайдя /shara/Сериалы1 я попадал в /temp/Сериалы1/

Так же чтобы SMB могла нормально с этим работать нужно отредактировать конфиг.

nano /etc/samba/smb.conf 
[global] 
...
allow insecure wide links = yes
[media]
...
wide links = yes
follow symlinks = yes

готово, перезагрузим SMB

service smbd restart

Теперь и в проводнике windows у нас все работает, и никто даже и не узнает что оказывается папочка то не настоящая)