🏠: nas

Обновил OpenMediaVault на сетевом хранилище

Сетевое хранилище, история которого началась в марте 2018 года, продолжает свою работу. После пересадки в новый корпус в начале 2020-го никаких событий, связанных с ним, не происходило, за исключением замены вышедшей из строя флешки, на которой стояла система, на 120 ГБ SSD Gigabyte GP-GSTF в августе того же года.

На днях я обнаружил, что вышел OpenMediaVault версии 6 — надо обновиться, чтобы не отставать от прогресса и заодно разнообразить своё существование.

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

omv6-login-page.png
omv6-dashboard.png

Реконструкция сетевого хранилища

Хранилище, которое я собрал без малого два года назад, совсем перестало запускаться. Оно и раньше не отличалось стабильностью при включении — один из дисков периодически не подхватывался, работало всё довольно медленно, один раз даже пришлось добавлять диск в RAID заново, так как он был потерян, хотя в системе присутствовал. В общем, в работе имелись странности.

Логично было предположить, что не хватает питания, и для проверки я приволок с работы стандартный блок (AeroCool KCAS-700W), подключил его и убедился, что хранилище прекрасно включается и работает. Вернув блок обратно, я решил пересобрать систему в новом корпусе и с новым БП.

Итак, корпус нужен как можно более компактный и совместимый с материнскими платами Mini-ITX, но чтобы туда влезали 2 диска 3,5″ и обычный блок питания ATX — со вcякой экзотикой связываться неохота. На рынке есть предложения компактных корпусов такого рода, например, компании Термалтейк, но стоят они как-то дороговато. К тому же, эти корпуса довольно широкие, а мне нужен был не шире 20 см, чтобы влезть на полку в коридоре. Что касается блока питания, то от него требуется бесшумность и наличие активного модуля коррекции коэффициента мощности (Active PFC). Самой мощности особой не нужно, 300 ватт вполне хватит.

В итоге взял супердешёвый и достаточно компактный корпус Exegate BA-110 и блок питания Zalman ZM400-LX (400 ватт, меньше они в этой линейке не делают), скрутил их вместе, пересадил туда всё остальное железо:

Стенки нового корпуса можно натурально гнуть руками, так как металл тонкий и мягкий, а винты в него нужно закручивать очень нежно, до малейшего сопротивления, иначе резьба тут же сорвётся и затянуть их потом будет невозможно. Но ничего другого от корпуса за 830 рублей и не ожидалось, а на самом деле за свои деньги это очень даже достойное изделие. Единственное, к чему может быть небольшое нарекание — что из четырёх верхних посадочных мест под 3,5-дюймовые диски реально можно использовать только два средних: сверху мешают внутренние разъёмы передней панели, а снизу проходит ребро жёсткости, соединяющее стойки корпуса — это не позволяет разнести диски дальше друг от друга. Но это не проблема, диски при работе всё равно холодные.

Светодиод питания (Power LED) оказался синим и очень ярким, я отключил его, вентилятор 80×80 из старой системы задействовать не стал. В результате хранилище получилось тихим и несветящимся — ровно то, что нужно.

Рекомпрессия видеоархива

Более или менее разобравшись в доме с предметами материальными, я перешёл к более абстрактным вещам, а именно — наведению порядка в своём цифровом архиве. В нынешнем виде этот архив появился после продажи в 2010 году системного блока, в котором были DVD-приводы, и, как следствие, покупки первого сетевого хранилища, куда диски, которые уже негде было дома читать, были скопированы, по большей части, в виде образов ISO. Потом, конечно, объём данных рос, но по сути ничего не менялось — старые данные просто продолжали лежать, мигрируя с течением времени на новое железо.

В какой-то момент я решил держать на хранилище резервную копию домашнего неттопа, и выяснилось, что место уже забивается под завязку. Учитывая то, что цены на диски большого объёма сейчас довольно высокие (да и нет у меня желания устраивать у себя дома филиал Amazon Cloud им. Плюшкина), данными на хранилище я пользуюсь не очень часто и там давно не прибирались, я подумал, что неплохо было бы как-то сократить объём постоянно хранимых данных. В первую очередь следовало разобраться с видео, так как оно занимало больше всего места.

Общая идея заключалась в том, чтобы удалить что-то совсем уж ненужное и дубли одного и того же, если таковые найдутся, а остальное перекодировать в более компактные и высокоэффективные форматы H.264 и H.265, а их аудиодорожки — в aac, ogg или opus. Безусловно, перекодированное видео не должно выглядеть хуже в сравнении с оригинальным, то же касается и аудиодорожек. Для аудио нужно подбирать разумно высокий битрейт, желательно, обеспечивающий «прозрачность» (transparency), в основном это примерно 192 kb/s. Конечно, нужно действовать по ситуации — к примеру, если оригинальная аудиодорожка уже в mp3 128 kb/s, то нет смысла с ней что-то делать, нужно просто скопировать её в новый видеофайл как есть.

Данные я разделяю на три основных категории — легко восполнимые (известные и широко распространённые мультфильмы, художественные фильмы), труднодоступные (некоторые концерты, образовательные программы, документалистика и т. д.) и невосполнимые (в основном, личный архив). Исходя из этой классификации, подбирались и параметры кодирования. Всё кодирование делалось консольным медиаконвертером ffmpeg. Медиаконтейнером для всех файлов был выбран MKV как наиболее универсальный и свободный формат.

В общем случае, легко восполнимые видео кодировались в H.265 + ogg со стандартными параметрами — в основном это были мультфильмы. В принципе, львиную долю из этих файлов можно было просто стереть, но я кодировал их из спортивного интереса. Труднодоступные материалы и те фильмы, которые я не стёр — в H.265 (-crf 22 -preset slow) + aac 192 kb/s. Если видео было чересстрочным, использовался H.264 (-crf 20 -preset slow), так как он умеет корректно работать с чересстрочным сигналом — надо только не забывать правильно указывать порядок полей. Преобразование чересстрочного видео в прогрессивное путём деинтерлейса я не использую и никому не советую, так как это заметно ухудшает качество и далеко не всегда нормально отрабатывает; тем не менее, необходимо распознавать чересстрочный источник и не совершать ошибку, кодируя его как прогрессивный, так как это даст на выходе испорченное видео с «гребёнкой» при движении в кадре, которую уже невозможно убрать. Личные записи я в целом пока оставил в неизменном виде, перекодировал только некоторые короткие эпизоды, рассыпанные по нескольким файлам, которые от сборки их в единый файл только выиграли. Параметры были те же, что и для труднодоступных материалов.

Для порядка и красоты я оставлял все аудиодорожки, если их было больше одной. Отбрасывал только те, которые, при одинаковом содержании, были менее качественными (например, DTS 1,5 Mb/s и AC3 384 kb/s — перекодируем первый вариант, второй отбрасываем), и были не на русском или английском языках. В некоторых случаях я обрезал чёрные поля по краям кадра, предварительно определяя их границы фильтром cropdetect. Добавлял субтитры, вытаскивая их из исходного DVD или скачивая из интернета, причём субтитры я всегда переделывал в текстовый формат, пользуясь программой Subtitle Edit. Сохранял или добавлял метаданные: названия аудиодорожек и субитиров, навигацию по файлу (главы) с именами эпизодов. Для извлечения навигационных меток из DVD я использовал программу ChapterXtractor, в конфигурационном файле которого прописал шаблон, генерирующий формат метаданных для ffmpeg:

Preset 7=For ffmpeg metadata
Format 7=\n[CHAPTER]\nTIMEBASE=1/1000\nSTART=%ams\nEND=\ntitle=\n
Header 7=;FFMETADATA1\ntitle=\nartist=\n
Footer 7=\n[STREAM]\ntitle=

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

Было:

Имя подкаталога Размер Файлы Папки
Концерты 181,1 ГБ 204 30
Мультфильмы 153,5 ГБ 717 43
Документальные фильмы 126,9 ГБ 189 27
Записи 87,1 ГБ 33 5
Художественные фильмы 55,2 ГБ 48 5
Детские фильмы 41,3 ГБ 39 3
Образование 30,4 ГБ 1250 59
Прочее 67,9 МБ 13 1
Всего: 675,7 ГБ 2493 181

Стало:

Имя подкаталога Размер Файлы Папки
Документальные фильмы 81,0 ГБ 177 23
Концерты 69,1 ГБ 106 9
Записи 54,8 ГБ 24 4
Мультфильмы 46,2 ГБ 707 38
Образование 27,8 ГБ 1250 59
Детские фильмы 15,6 ГБ 39 3
Художественные фильмы 9,7 ГБ 37 3
Прочее 67,9 МБ 13 1
Всего: 304,2 ГБ 2353 148

График использования дискового пространства на хранилище:

В итоге, без какой-либо потери функциональности и удобства пользования (в ряде случаев эти критерии даже повысились) и визуального качества видеоматериалов я выиграл 370 гигабайт свободного места, и это только на одном каталоге, пусть и самом крупном. По-моему, неплохо.

Сетевое хранилище своими руками

Собрал себе сетевое хранилище на 2 терабайта. Что-то из железа у меня уже было, что-то было закуплено. Цены на оборудование, которое пришлось покупать, указываю с доставкой.

  • Корпус: 3Cott M01, встроенный преобразователь питания ADD12P6020 заменён на LR1106-250W12VDC (Aliexpress, 1123,34 руб.), штатный блок питания заменён на Mean Well GST90A12-P1M (Чип и Дип, 1759 руб.)
  • Материнская плата + процессор: Gigabyte GA-3800N (Regard, 2980 руб.)
  • Память: Crucial 4 ГБ DDR3.
  • Жёсткие диски: Seagate Ironwolf ST2000VN004 и WD Red WD20EFRX, USB-флешка Silicon Power Jewel J08 16 ГБ (Ситилинк, 10720 руб.)

Итоговая стоимость составила 16582 руб. 34 коп.

Почти готовое хранилище - осталось привинтить крышку и подключить диски

В качестве операционной системы я установил OpenMediaVault, потому что он основан на более привычном мне Debian Linux, в отличие от FreeNAS и NAS4Free, основанных на BSD. Оказался вполне неплохой дистрибутив, довольно функциональный и удобный.


Состояние дисков


Управление дисковым массивом


Перечень физических дисков

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

Финальный вид хранилища