Діагностика працездатності і продуктивності диска

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







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

Отже, в моєму випадку стояла задача заміни жорсткого диска розміром 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 / ім'я_пристрою

Приклад виведення показаний на скріншоті:

Діагностика працездатності і продуктивності диска

Після того, як всі перевірки закінчені, можемо перейти до процедури перенесення даних.

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. якщо він був бо льшего розміру, ніж вихідний.