Перенесення живої Ubuntu на програмний RAID1 у гарячому режимі, Теорія антисистем

Про перенесення linux-подібних систем у робочому стані на RAID-масив існує велика кількість публікацій, які багато в чому перегукуються між собою, але в результаті навіть в офіційному HOWTO по Юбунті процес описаний з помилками та недоробками – може, звичайно, на віртуальній машині він і працює так, як описано, але насправді слідувати йому не можна. Так що тут ми постараємося покроково розглянути весь процес у варіанті, що гарантовано приводить до результату.

Отже, в чому сенс задачі, яку ми вирішуємо? Ми будемо перенести повністю робочу і, більше того – копію на програмний RA /> та іншого шаманізму можливий лише на RAID1. Що нам дасть практично цей стандарт RAID? Він передбачає багаторазове дублювання (від двох разів і більше) даних, що зберігаються, відповідно при виході з ладу одного з носіїв масиву працездатність сисети не буде порушена, вона продовжить працювати на т.зв. деградований масив дисків. Як приємний бонус RAID1 дає приблизно півторакратний приріст продуктивності операцій читання з масиву – ми будемо використовувати програмний RAID Ubuntu, в алгоритмах якого закладено можливість читання файлів паралельно з двох фізичних носіїв, особливо це відчутно при роботі з безліччю дрібних файлів, а саме такі файли та складають основну масу заповнення системного розділу Ubuntu. Швидкість операцій запису насправді теж трохи вища, але незначно, такий ефект виникає через розпаралелювання потоку на запис між буферами кількох фізичних накопичувачів. Таким чином, в результаті ми розраховуємо підвищити надійність нашої системи та трохи підняти її продуктивність.

Чому ж ми вибираємо саме програмну реліз RAID? Для початку, перенесення працюючої системи вгарячому режимі на апаратний RAID (реалізований засобами апратного контролера) в більшості випадків просто неможливий. Контролери, що реалізують повноцінний апаратний RAID, масиви якого прозоро сприймаються системою як просто дискові накопичувачі, за вартістю знаходяться в тому ж ціновому діапазоні, що і недорогі материнські плати, але продуктивність їх обмежена пропускною здатністю шини (PCI або PCI-E x1 для найбільш масових). моделей), в результаті ми просто не отримаємо очікуваного приросту продуктивності, якщо використовуватимемо SSD як диски масиву. Програмно-апратний, або FakeRAID (псевдо-RAID), наявність якого гордо декларують виробники практично всіх материнських плат, а також дешевих контролерів розширення SATA-IDE має для нас сенс в одному випадку - якщо перед нами стоїть завдання зробити доступним наш RAID-масив для іншої системи (зазвичай Windows). Фізично контролер FakeRAID всього лише декларує включення режиму RAID для відповідних накопичувачів, а всі операції з ними забезпечуються вже драйверами системи, тобто по суті це теж програмний RAID, але з гальмами, викликаними необхідністю звернення до "мозків" контролера з будь-якого приводу. Істотною проблемою для FakeRAID і чисто апаратного RAID є та обставина, що перенесення зібраного дискового масиву на інший контролер (у разі, якщо здохне контролер або материнка), фізично неможливе в більшості випадків, а це знецінює саму ідею зберігання надлишкових даних для підвищення надійності. Реалізація програмного RAID в Ubuntu у плані продуктивності практично не програє FakeRAID материнської плати, так само додатково навантажуючи своїми операціями центральний процесор, проте ми маємоможливість при необхідності перенести масив дисків із нашою системою на будь-яке інше залізо.

Що ми будемо для цього робити? Ми створимо програмними засобами деградований масив RAID1, перенесемо на нього нашу систему, не перериваючи її роботи, а потім перезавантажимося вже з деградованого масиву, і відновимо його до робочого, система при цьому вже працюватиме як завжди. Для початку нам знадобиться встановити пакет mdadm: