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

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

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

Итак, в моем случае стояла задача замены жесткого диска размером 1ТВ на 2ТВ. Я любитель небольших корпусов в форматах slim mATX и miniITX, поэтому, даже когда имеется посадочное место для второго диска, желательно использовать только один жесткий диск, чтобы не перегружать маломощный БП, не ухудшать потоки вентиляции и не поднимать температуру внутри системного блока.

1. Проверка диска. Если есть сомнения в исправности нового жесткого диска (например, он ранее использовался на другом компьютере, приобретен из вторых рук или же просто есть желание перестраховаться лишний раз даже с новым накопителем), то нам на помощь придут следующие команды:

1) Чтение данных S.M.A.R.T.

smartctl -a /dev/имя_жесткого_диска

Утилита smartctl входит в пакет smartmontools, поэтому, если этот пакет не установлен, установим его:

sudo apt-get install smartmontools

Если вы еще не разобрались, каким стало имя устройства после подключения нового жесткого диска (имейте ввиду, что при подключении жесткого диска  имена устройств могут измениться, поэтому всегда используйте UUID вместо имен устройств  в вашем файле /etc/fstab), то список жестких дисков можно получить командой

sudo fdisk -l     (использование от имени обычного пользователя результата не даст, поэтому не пропустите sudo)

Если вы не вполне представляете, что вам дал вывод smartctl, вы можете ограничиться только одним параметром  — Reallocated_Sector_Ct. Как вы, должно быть, знаете, производители современных жестких дисков резервируют определенное дисковое пространство для прозрачной замены bad-блоков. Поэтому, если программы тестирования не обнаруживают bad-блоки, есть вероятность, что они уже были обнаружены S.M.A.R.T. и заменены на пустые блоки из резерва. Эффект от такого решения двойственный: с одной стороны, мы не теряем место на жестком диске и замена блоков происходит незаметно для пользователя; а с другой стороны, это может уменьшить производительность (головке ЖД придется лишний раз перемещаться к резервному блоку, и возвращаться назад) и сослужить медвежью услугу в случае с начинающимся сыпаться диском для пользователя, который привык полагаться на стандартные средства диагностики поверхности жесткого диска.

Поэтому, может конкретизировать запрос:

sudo smartctl -a /dev/sdb | grep Reallocated_Sector_Ct

и в результате получим одну искомую строку, например, в моем случае:

5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       —       0

В нашем случае количество подмененных блоков равно 0 и это наилучший результат.

Следует отметить, что SMART обычно не доступен для жестких дисков, подключенных для USB, хотя smartctl экспериментально поддерживает некоторые типы USB-SATA мостов (больше информации по этому поводу и необходимые ключи содержит man программы).

2) Выполняем  тест поверхности жесткого диска при помощи утилиты badblocks. Желательно использовать эту утилиту на отмонтированном диске, поэтому, если вы желаете проверить диск, который вы обычно используете, пользуйтесь LiveCD (LiveUSB).

Вариант, который обычно использую я для проверки нового диска, или же, наоборот, диска, который «снимается» с компьютера и на котором не осталось необходимой информации:

sudo badblocks -wvs /dev/имя_устройства (для примера выше — /dev/sdb)

Рассмотрим параметры:

-w — разрешает запись на жесткий диск, не заботясь о сохранности данных. Никогда не используйте для дисков, на которых есть нужная вам информация! Несколько ускоряет тестирование.
v -выводит информацию об обнаруженных ошибках на экран (вернее, на stdout, т.е. или в файл, если используется перенаправление «>» вывода).
s -выводит статус выполнения проверки в %. Для жесткого диска большого объема проверка может длиться несколько часов, поэтому, возможно, вам захочется наблюдать за ходом выполнения в процентах. Эта опция несколько замедляет работу утилиты, поэтому, если вы запускаете проверку, например, на ночь, эту опцию можно опустить.

Утилита badblocks входит в пакет e2fsprogs, поэтому, если этот пакет не установлен, установим его:

sudo apt-get install e2fsprogs

3) Проверка производительности диска. Пожалуй, самым простым способом будет использование утилиты hdparm с параметром -t.
В руководстве к утилите рекомендуется проводить операцию 2-3 раза для одного жесткого диска. Учитывайте также возможное использование диска программами, поэтому самое точное измерение будет на не смонтированном диске.

sudo hdparm -t /dev/имя_устройства

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

Снимок экрана - 02.04.2013 - 15:16:17
После того, как все проверки закончены, можем перейти к процедуре переноса данных.

2. Перенос системы на другой жесткий диск. Сразу хочу сказать о том, что я знаю о специализированных загрузочных дисках вроде Clonezilla, однако с моей ситуацией это решение не справилось. Еще одно ограничение: это решение может оказаться не подходящим для дисков размером больше, чем 2ТВ из-за того, что в этом случае используется другая таблица разделов вместо MBR.

Я использовал команду dd, которая предназначена для прямой работы с диском. Эта команда может работать как с отдельными разделами так и с целыми дисками и в моем случае я  выбрал второй вариант. Все операции ниже осуществлялись при помощи LiveCD с Ubuntu.

sudo dd if=/dev/имя_исходного_диска of=/dev/имя_целевого_диска bs=16M

if — указывает исходный диск (или раздел, но не в нашем случае) — «откуда копируем», of — целевой «куда копируем» (не перепутайте!), который должен быть как минимум не меньше исходного. bs — размер блока, который копируется за одну операцию: в нашем случае он равен меньшему кешу двух дисков  — 16М.

В  результате выполнения операции (которая может занять несколько часов) мы получим точную копию исходного диска и неразмеченную область в случае, если целевой диск был больше. Следует отметить, что при этом будут и UUID разделов на двух дисках одинаковы. Чтобы не «смущать» Ubuntu, я рекомендую физически отключить исходный жесткий диск и попытаться загрузиться с нового. Если загрузка прошла без проблем, данные в порядке, снова подключайте жесткий диск  и загружайтесь с LiveCD.

3. Устраняем конфликты одинаковых UUID. Запускайте gparted (скриншоты программы и основы работы с ней, есть, например, здесь) и либо удаляйте разделы на старом диске, создавая новые или же просто измените их UUID (для всех разделов!) на другие, правой кнопкой по каждому разделу.

4. Удаляем конфиденциальную информацию на старом диске (если необходимо). Если вы не планируете в дальнейшем использовать старый жесткий диск, а планируете его продать / подарить, целесообразным будет перезаписать всю информацию случайными данными или же нулями. Само собой, что диск должен быть отмонтирован.

Снова обратимся к команде dd:

sudo dd if=/dev/zero of=/dev/имя_диска

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

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

p.s. И не забудьте разметить незанятое пространства в конце нового диска при помощи gparted, если он был большего размера, чем исходный.

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

  1. waldemort:

    Хорошая статья. Спасибо!

  2. a-r:

    Интересная информация. Сайт — в закладки.

  3. Хант:

    Статья нужная и ценная. Спасибо автору!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *