Думаю, многие испытали смерть хотя бы одного жесткого диска, а то и больше. Той или иной степени внезапности. У меня такой опыт был два раза - вчера все работало, а сегодня ты думаешь, как достать оттуда свои проекты, семейные фотографии и ту фигню, которую уже не вспомнишь, где скачал. И если диск еще не совсем того, то начинается увлекательная игра "раскидай терабайт на 5 флешек по 4 ГБ".
У меня давно зрел план сообразить себе хранилище и уменьшить масштаб потенциальной трагедии в будущем. Кто-то скажет, что проще купить внешний HDD, но я решил пойти дальше, тем более что я живу не один и есть смысл расшарить ресурсы по сети. Я представлял себе эдакую коробку, в которой стоит 2-3 диска, объединенных в RAID1. Также на этой коробке должны работать SMB (виндовые шары) и FTP (для друзей и родни за пределами локальной сети). Все это под управлением Linux - будет повод поглубже в нем поковыряться.
Этот пост по сути будет сочинением на тему "как я провел лето осень", затрагивающим первые шаги - сборку железа и первые действия после установки ОС. Не инструкция, а скорее про собранные грабли. Оставшуюся часть истории с конфигами и админством я расчитываю описать в другой раз, если, конечно, ничего этому не помешает.
Железная база
Вообще, существуют готовые NAS на процессорах ARM, привлекающие небольшими габаритами и низким энергопотреблением. Но к такому решению есть вопросы, один из которых связан с ценой 10-20 тысяч рублей без учета самих дисков. Интереснее и дешевле было сделать хранилище из компьютерного железа - старая работающая материнка в хозяйстве всегда есть, остается докупить корпус за пару тысяч, блок питания (спасибо sk0rp10ns), может SSD под операционку - и база готова.
Начнем с материнки и около нее. У меня в дело пошла плата с чипсетом z77 возрастом примерно 6-7 лет. Сначала может показаться, что внимание стоит обращать только на количество разъемов SATA и, возможно, на объем ОЗУ. Но я хотел бы указать на другое интересное свойство материнской платы - способность включаться без монитора. Это ведь хранилище, перед ним не должен сидеть человек с клавиатурой и монитором. Оно должно стоять под столом или в подсобке и ждать, пока его услуги кому-то понадобятся. Ну и естественно, прежде чем я смог убрать комп под стол, потребовалось детективное расследование с элементами научного тыка.
В моем случае при отсутствии воткнутого HDMI-кабеля проверки POST завершались провалом и ОС не загружалась. По результатам поиска решений виделось только два. Одно их них совсем уж брутальное - штекер-заглушка. По-хорошему, вопрос должен решаться в настройках BIOS, в идеале - при помощи опции Halt On Error или Halt On [...], которая позволила бы игнорировать неподключенный кабель монитора. Но разве могут мои приключения на этом закончиться? Я весь BIOS раз десять излазил в поисках этой опции и нифига ее там не обнаружил. Зато я хотя бы нашел наугад вот это:
После установки Display boot options control в значение Disabled комп начал грузить ОС независимо от воткнутости кабеля, и при этом встроенная видеокарта продолжила работать и я мог при желании подключить компьютер к телевизору. Есть, правда, нюанс - теперь до загрузки ОС нет никакого изображения, а значит и возможности зайти в настройки BIOS или увидеть меню GRUB. Но в моем случае это практически не мешает, а если раз в несколько лет приспичит что-то поменять - можно джампер коротнуть или батарейку вытащить, переживу.
Диски
Когда база готова, можно и о дисках позаботиться. И тоже казалось бы, что тут сложного, выбираешь линейку HDD для NAS, покупаешь диски нужного объема и все. Однако перед покупкой на глаза случайно попала статья про CMR и SMR, и тут я озадачился...
В общем, относительно недавно в продаже появилось много дисков с черепичной записью (SMR), суть которой в том, что записываемые на блин данные частично задевают данные по соседству. Это позволяет увеличить плотность, но зато при любой перезаписи (даже если это всего пара байтов) HDD вынужден перезаписать заодно и задетых соседей, и соседей соседей, и соседей со... ну вы поняли. Получается что-то вроде флеш-памяти, только с крупными блоками. Это уже само по себе звучит не очень. А теперь добавьте сюда всякие рассказы людей, например о том, как это замедляет или вообще делает невозможной работу RAID-массива, или о том, как производители раньше скрывали информацию об использовании SMR в своих дисках... После этого совсем грустно становится.
Короче, в итоге я решил поступить консервативно и найти себе традиционные диски (CMR). Пока искал, выяснил, что WD Red, на который я изначально расчитывал, превратился в две линейки - обычный WD Red с "черепицей" и дорогие WD Red Pro с CMR. Закончилось все тем, что вместо них я взял Ironwolf с заявленным CMR, за который просят более адекватные деньги. Что из этого получится - время покажет.
ОС
Теперь ящик готов к установке операционки. Я не большой любитель вникать в разницу между дистрибутивами и просто установил Linux Mint Xfce (на отдельный накопитель, не RAID). Когда-то Mint стоял на ноутбуке, меня устраивало, а еще слышал, что у него долгая поддержка. При желании и терпении можно настроить и любой другой линукс.
В рамках подготовки компа к удаленной работе нужно настроить пару вещей. Например, выключение по кнопке Power - графически настраивается через "Менеджер питания". По умолчанию там стоит "Ничего не делать". Тут, конечно, дело вкуса - мне вот сервер не нужен постоянно и он находится в одной комнате со мной, так что мне удобнее рассматривать его как эдакий бытовой прибор. Если он нужен 24/7 и вокруг шаловливые ручки - то "ничего не делать" имеет смысл.
Другая, более важная часть подготовки - организация удаленного управления. Большую часть времени сервер "просто работает", но перед этим его надо настроить, а потом - периодически админить.
Прежде всего - доступ к командной строке через ssh. Установка на сервере в моем случае осуществлялась командой
sudo apt install openssh-server
Затем можно проверить, запущен ли он
systemctl status ssh
А чтобы он сам запускался при перезагрузке -
sudo systemctl enable ssh
И все, можно заходить. В качестве клиента ssh на Windows можно использовать PuTTY. Протокол использует шифрование, поэтому при первом заходе на новый сервер будет задан вопрос, доверяем ли мы серверу. Если ответить "да", клиент что-то там у себя запоминает и больше нас не беспокоит до тех пор, пока мы не подвергнемся атаке man-in-the-middle или не переустановим соответствующее ПО (наиболее вероятно второе).
Дальнейшая настройка сервера ssh в домашней сети не требуется. Если порт 22 открыт и доступен со стороны Интернета, тогда есть смысл заморочиться с файлом /etc/ssh/sshd_config и настройками фаерволла.
Кроме командной строки я еще хотел запилить себе удаленный рабочий стол. Результат получился работающий, но со странностями. Вариант, который я пробовал - XRDP, являющийся реализацией виндовского RDP. На сервер ставится командой
sudo apt install xrdp
И если сервис xrdp работает, то можно попробовать зайти на него стандартными виндовыми средствами.
В чем заключаются странности? У меня xrdp иногда портит рабочий стол. Меняются обои, панель задач уезжает вверх, внизу появляется лишняя панель, меню "Пуск" (если его можно так назвать) превращается в какую-то срань с маленькими значками. И как потом восстановить внешний вид графическим путем - понятия не имею. Не придумал ничего лучше, чем бэкапить содержимое /home/user/.config и восстанавливать потом из копии. В итоге я решил, что не так уж мне и нужен этот удаленный рабочий стол, все равно можно через консоль все сделать. На том и остановился.
Что дальше?
Фундамент заложен, есть работающая машина. Следующий шаг - настройка нужных мне сервисов. Но это отдельная тема и об этом я планирую написать в другой раз. Ну а пока что надеюсь, что данное чтиво не было совсем бесполезным, хоть и писалось больше с целью "выговориться". Ну и чтоб я сам потом смог вспомнить, что я делал.
Сообщение может быть отклонено, если содержит спам, противозаконный контент, а так же оскорбления и грубость по отношению к другим участникам обсуждения.