home server

Миграция на SSD при наличии битых блоков

Все-таки я иногда бываю феерическим тормозом.

Предыстория такова: на жестком диске моего ноутбука обнаружились битые блоки. Это может быть предвестником скорой смерти диска, может не быть, но рисковать все равно как-то не хочется. Поэтому было принято решение жесткий диск менять. "А раз уж все равно менять, - подумал я, - то почему бы благородному дону не перейти на более современные технологии и не поставить себе SSD?"

Лечение кракозябров в названиях музыкальных коллекций mp3

У нас с Юлей общая коллекция музыки в mp3, которую мы собирали, наверное, лет пятнадцать - наверное, столько времени, сколько существует сам формат MP3. Когда мы стали жить вместе, две фонотеки были объединены в одну, сложены для удобства доступа в папочку на сервере, и эта папочка сейчас занимает, наверное, гигабайт под двести.

Проблемы с кодировкой у нас начались практически одновременно, причем у каждого по-своему. Юля переехала на мак и стала слушать музыку через iTunes, а я сгрузил часть музыки к себе на телефон. И там, и там обнаружилась одна и та же проблема: русские названия отображались в виде кракозябров.

кракозябры в музыке на Nokia E72 кракозябры в музыкальной коллекции iTunes

Ничего удивительного в этом, в общем-то, нет. Мы всю жизнь слушали музыку через Winamp, который по умолчанию считает, что названия в ID3-тегах написаны в виндовой кодировке cp1251 (и чаще всего оказывается прав). Но со временем появляется все больше программ и устройств, которые предполагают, что все названия написаны в Unicode или utf8, и ни про какие cp1251 , а также cp866 и koi8-r не знают. Да и, откровенно говоря, правильно делают - нечего поддерживать этот зоопарк морально устаревших и несовместимых друг с другом кодировок.

Соответственно, возник вопрос, как быстро и безболезненно перекодировать все ID3-теги в юникод.

Настройка бэкапа в домашней локальной сети

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

У бэкапа, как известно, две основных беды: во-первых, его всегда лень делать, а во-вторых - для него жаль места. Поэтому, когда наступает час X, часто выясняется, что последний бэкап был сделан год назад, и к тому же, как назло, самое важное и нужное именно сейчас как раз и не было скопировано.

Впрочем, бывает и еще обиднее. Лет десять назад у меня навернулся 80-гигабайтник - диск по тем временам весьма немалых размеров. И то, что я делал относительно регулярные бэкапы, меня не спасло - потому что я делал их на другой логический раздел того же самого жесткого диска. Весь размер своей глупости я осознал слишком поздно. Я почему-то тогда больше боялся вирусов и собственных кривых ручек (в равной степени способных порушить файловую систему) чем физической смерти винчестера. Верно говорят, в смерть трудно поверить, пока не увидишь ее своими глазами...

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

С какой стороны подойти к бэкапу

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

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

По задумке, схема резервного копирования предполагалась следующей:
- на “бэкапном” диске заводится несколько каталогов - по одному на каждый из компьютеров;
- эти каталоги делаются доступными с этих компьютеров через локальную сеть;
- на каждом компьютере отбираются области, подлежащие резервному копированию;
- создается первоначальная резервная копия и складывается на сервер;
- каждую ночь делается инкрементная копия: изменения, произошедшие на компьютере за последние сутки, “подшиваются” к основному архиву.

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

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

Под катом - краткий обзор программ и подходов.

Точное время! Для всех! Даром!

Итак, я это сделал. После написания поста про настройку точного времени на домашнем компьютере я всерьез задумался о том, чтобы присоединиться к тем добровольцам, которые где-то берут точное время и потом раздают его всем желающим. Практически все необходимое для этого у меня уже было:
- постоянно работающий сервер уже настроенным и работающим ntpd;
- безлимитный скоростной интернет;
- постоянный внешний IP-адрес.

Оставалось самое интересное - найти несколько надежных источников точного времени первого уровня и подключиться к ним. Причем рекомендуется выбирать географически близкие, чтобы погрешность от времени распространения сигнала была минимальной. Это, в сущности оказалось несложно: на сайте pool.ntp.org есть примерный список, в котором есть и российские сервера (преимущественно это всякого рода научные учреждения). Я решил подойти к вопросу со всей основательностью, отправил каждому заявку на использование. По большей части это формальность, рекомендуемая правилами хорошего тона, поскольку почти все эти сервера открытые для публичного доступа. Но тем приятнее получить в ответ "Спасибо за уведомление, пользуйтесь на здоровье!"

А дальше уже дело техники. Настроил ntpd на синхронизацию с вышеупомянутыми источниками, поставил на роутере проброс 123 порта на сервер, убедился в том, что NTP-сервис доступен извне, зарегистрировал IP-адрес на pool.ntp.org и стал ждать.

Прежде чем предоставить мой сервер во всеобщее использование, его почти целый день испытывали, чтобы убедиться в его пригодности :) Специальная программа-монитор регулярно проверяет доступность, надежность и точность всех серверов в кластере, и те, кто по каким-либо характеристикам не соответствует норме, выводятся из обслуживания. И вот, наконец, меня присоединили к кластеру остальных добровольцев и на мой сервер стали поступать запросы со всех уголков России. Пока около 1000 запросов в сутки - нагрузка, сами понимаете, совершенно неощутимая, к тому же ее можно регулировать, указав в профиле примерную "толщину" своего канала. На сайте обещают поток порядка миллиона запросов в сутки - возможно, доживем и до таких величин :) В любом случае, это капля в море по сравнению с мощностью сервера и пропускной способностью канала, поэтому выполнению основных задач абсолютно не мешает.

Так что, господа, берите точное время на российском сегменте сервиса по адресу ru.pool.ntp.org! На сегодняшний день там 87 серверов, и один из них - мой :)

Update: Начиная с апреля 2015 года - ee.pool.ntp.org :)

Точное время в домашней локалке


A man with a watch knows what time it is. A man with two watches is never sure.
Segal's law

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

Недавно обнаружилось, что у нас в доме на всех компах разное время. Не то, чтобы фатально разное, но на несколько минут отличается. И это при том, что на всех вроде как включена синхронизация с time.windows.com, от которой на практике толку ровным счетом никакого. Ситуация тем абсурднее, что даже оба наших мобильника умудряются где-то брать точное время безо всяких дополнительных настроек, а полноценные компьютеры с постоянным доступом в Интернет сделать этого не могут.

Под катом - парочка идеологически верных способов это исправить.

Железо для домашнего файлового сервера

У нас в уголке уютно устроилась черная коробочка средних размеров. Это домашний файловый сервер - полностью творение моих рук. В круг его обязанностей входит три основных основные задачи:

1. Хранение файлов в локальной сети. Выглядит это следующим образом: один большой (изначально терабайтный, теперь, после апгрейда, уже двухтерабайтный) раздел виден в сети как сетевой диск \\BFLY-SERVER\Shared, доступный на чтение и на запись. Для удобства на всех компьютерах в доме этот путь закреплен за буквой S: - то есть, доступен как обычный диск. На этом диске лежит все видео, аудио, софт, книжки, фотки, торренты и т.п. Кстати, торренты тоже качаются прямо на сервере.

2. Ежедневное (точнее, еженощное) создание резервных копий с моего и Юлькиного компов. Реализовано это на базе Акрониса, который каждую ночь запускается, собирает и складывает на еще одну сетевую шару (физически расположенную на другом двухтерабайтнике) инкрементные бекапы тех данных, которые считаются жизненно важными: копии системных разделов, личные данные, рабочие файлы, фотографии.

3. Предоставление доступа к отдельно взятому каталогу извне через Интернет. Для этого на диске S: существует специальный каталог www. Все, что туда складывается, можно скачать через Интернет по специальной ссылочке. URL ссылки состоит из нашего внешнего IP, порта, через который можно достучаться до сервера, и, собственно, пути относительно каталога www.

И надо заметить, что со всеми этими задачами, а также с рядом второстепенных задач эта железка успешно справляется. О том, как это все работает, я напишу в следующих постах, посвященных этому серверу. О том, почему я вообще решил пойти на геморрой со сборкой собственного сервера вместо того, чтобы купить готовый NAS или же по-старинке пользоваться внешним жестким диском - также в следующих выпусках. А пока просто расскажу о железной начинке.

Инсталляция Linux по сети с Windows-машины. Грабли и сложности

Немножко философских размышлений

Понятие "инсталляционный диск" постепенно уходит в прошлое. Действительно, зачем нужен инсталляционный диск, если есть скоростной безлимитный Интернет, позволяющий, не сходя с места, скачать самую последнюю версию программы и тут же ее установить? А поскольку скоростной Интернет потихоньку становится явлением уже почти повсеместным, то и онлайн-дистрибутивы набирают все бо́льшую и бо́льшую популярность, вытесняя диски в коробочках.

Немножко особняком здесь стоят операционные системы. Действительно, скачать и установить обычную программу несложно: компьютер с работающей операционной системой и сайт покажет, и инсталлятор скачает, и установит. Пользователю нужно только кнопочки Yes да Next нажимать время от времени. А вот как установить саму операционку, да еще и на чистый компьютер? Раньше без специальной загрузочной дискеты было не обойтись. Причем даже когда операционки стали распространяться на компакт-дисках, все равно нужна была работающая операционка, которая могла бы создать загрузочную дискетку с образа, расположенного на компакт-диске. Потом появились загрузочные компакт-диски, и процесс установки стал значительно легче: всунул диск, включил компьютер, инсталлятор сам запустился, нашел все диски, спросил, куда будем ставиться - и понеслась...

Но диски тоже потихоньку сходят с арены, уступая более компактным и надежным (а в последнее время еще и более объемным) USB-флешкам.
И хотя сейчас CD/DVD-привод пока еще есть практически в каждом компьютере, многие ноутбуки (а в особенности - нетбуки) уже жертвуют этой громоздкой железякой для экономии места. Действительно, а зачем он нужен, если все необходимое можно скачать через Интернет, в крайнем случае - передать через флешку?

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

На самом деле, технология запуска рабочей станции по программе, загружаемой из локальной сети, не так уж и нова - ей уже лет тридцать, но до сих пор она использовалась преимущественно коммуникационными железками вроде маршрутизаторов или мини-АТС. Видимо, как раз нетбуки и стали тем спусковым крючком, который породил спрос на включение в материнские платы возможность установки операционной системы путем скачивания инсталлятора с сервера. А что - удобно: подключил к специальному загрузочному серверу несколько десятков ноутбуков (на сколько портов хватило), сервер раздал каждому по загрузчику, операционка сама поставилась, ноутбуки готовы к продаже, подключаем следующую партию. Вот оно, массовое производство.

Эволюция материнских плат

А раз уж такая функция появилась на ноутбучных материнках, то почему бы ей не появиться и на обычных - чипсеты-то везде одинаковые. Вообще, эволюция материнских плат - прелюбопытнейшая вещь. Первые материнки, которые я застал, без дополнительных устройств могли подключать разве что только клавиатуру и мышь. Даже жесткий диск к ним подключать напрямую было нельзя - нужно было ставить специальную плату с дисковыми контроллерами, называемую "мультипортовой платой". Но это было настолько давно, что неудивительно, что нынешний пятнадцатилетний мальчик, перерыв весь Интернет, так и не смог найти внятное объяснение, что же такое "мультяшка - байты растеряшка" - еще бы, явление прекратило существовать примерно в первый год его жизни, поскольку к этому времени практически все материнки содержали встроенный контроллер дисков.

Время шло, и материнки обрастали все бо́льшим количеством устройств: сначала в них стали встраивать подешевевшую до невозможности звуковую карту, затем присоединилась и сетевая карта, а потом на материнках стали появляться и простенькие видеокарты. Сейчас уже трудно поверить, что когда-то всего этого не было, и все эти устройства приходилось покупать и устанавливать отдельно.

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

От теории к практике

Недавно мне довелось попробовать это все на личном опыте. Я устанавливал Debian Linux на свой домашний сервер. И, поскольку материнка поддерживает старт через сеть, я решил, что этим грех не воспользоваться. В теории все выглядит очень заманчиво: при включении компьютера крохотный инсталлятор скачивается с соседнего компьютера, после чего инсталлятор выходит в Интернет и скачивает последнюю-распоследнюю версию операционки (т.е. не надо никаких сервиспаков, обновлений, драйверов и прочей фигни). Пользователю остается только выбрать режим установки, указать, куда поставить систему, какие компоненты ставить - в общем, стандартный набор простейших действий.

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