Man вики
(Новая страница: «=Задача= Произвести перенос рабочей операционной системы на RAID массив любого уровня по сл...»)
 
Нет описания правки
Строка 5: Строка 5:
 
** 2. раздел является хранилищем зеркального тома RAID1 и расположен на каждом физическом диске
 
** 2. раздел является хранилищем зеркального тома RAID1 и расположен на каждом физическом диске
 
** 3. раздел является хранилищем RAID любого уровня внутри которого располагается LVM структура
 
** 3. раздел является хранилищем RAID любого уровня внутри которого располагается LVM структура
  +
** да могу редактировать
 
* LVM содержит том для данных и для файла подкачки.
 
* LVM содержит том для данных и для файла подкачки.
   
Строка 38: Строка 39:
 
* lv_swap для подкачки в начале диска размером 8 Гб
 
* lv_swap для подкачки в начале диска размером 8 Гб
 
* lv_cache под /var/cache
 
* lv_cache под /var/cache
* lv_root оставшееся место под корневую систему
+
* lv_root оставшееся место под корневую систему
   
 
pvcreate /dev/md1
 
pvcreate /dev/md1
Строка 117: Строка 118:
 
Перезагружаем систему.
 
Перезагружаем систему.
 
reboot
 
reboot
''ВНИМАНИЕ. Если процесс выполняется удаленно, что выполнено условие:
+
''ВНИМАНИЕ. Если процесс выполняется удаленно, что выполнено условие:''
В БИОС компьютера должен быть настроен режим последовательной загрузки с жестких дисков, т.е. если загрузиться с первого диска не удалось, должна произойти автоматическая загрука со второго. Если это не так, и система не загружается, необходимо переключить загрузку на второй диск или поменять местами интерфейсные кабели.''
+
В БИОС компьютера должен быть настроен режим последовательной загрузки с жестких дисков, т.е. если загрузиться с первого диска не удалось, должна произойти автоматическая загрука со второго. Если это не так, и система не загружается, необходимо переключить загрузку на второй диск или поменять местами интерфейсные кабели.
   
 
=Подключение или замена диска в RAID=
 
=Подключение или замена диска в RAID=

Версия от 00:28, 14 апреля 2012

Задача

Произвести перенос рабочей операционной системы на RAID массив любого уровня по следующей схеме:

  • Структура разделов на физических носителях GPT (снимает ограничение в 2 Тб на носитель)
    • 1 раздел для обеспечения поддержки загрузки BIOS компьютера и размещения менеджера загрузки Linux
    • 2. раздел является хранилищем зеркального тома RAID1 и расположен на каждом физическом диске
    • 3. раздел является хранилищем RAID любого уровня внутри которого располагается LVM структура
    • да могу редактировать
  • LVM содержит том для данных и для файла подкачки.

Загрузка и обновление компонентов

apt-get update
apt-get install -y mdadm initramfs-tools lvm2 atop htop sysstat smartmontools rsync parted jfsutils

Создание разметки под RAID

Задаем диск, который будем готовить под RAID

newdsk=sdb

Очищаем таблицу разделов на указанном жестком диске и размечаем диск в GPT.

dd if=/dev/zero of=/dev/$newdsk bs=512 count=1
parted /dev/$newdsk mklabel gpt

Определяем максимальный размер диска и создаем разделы на нем

sizedsk=`parted /dev/$newdsk print -m | grep "/dev/$newdsk" | awk -F ":" '{print $2}'`
parted /dev/$newdsk mkpart primary 1M 10M
parted /dev/$newdsk set 1 bios_grub on
parted /dev/$newdsk mkpart primary 10М 128M
parted /dev/$newdsk mkpart primary 128M $sizedsk
parted /dev/$newdsk print

Предварительная настройка RAID в режиме деградации

Создаем массивы в деградированном состоянии на диске sdb:

  • md0 для загрузки (обязательно зеркало -level=1) расположен во 2м разделе GPT
  • md1 массив для данных, может быть любого уровня (в примере 1) расположен в 3м, наибольшем разделе GPT
mdadm --create /dev/md0 --metadata=0.90 --level=1 --raid-devices=2 missing /dev/sdb2
mdadm --create /dev/md1 --metadata=0.90 --level=1 --raid-devices=2 missing /dev/sdb3

Сохраним параметры массива в конфигурационном файле:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

LVM

Создадим структуру разделов в LVM:

  • lv_swap для подкачки в начале диска размером 8 Гб
  • lv_cache под /var/cache
  • lv_root оставшееся место под корневую систему
pvcreate /dev/md1
vgcreate lv /dev/md1
lvcreate -L1024 lv -n lv_swap       # 1024 Mb под раздел подкачки
lvcreate -l10%FREE lv -n lv_cache   # 10% под кеш
lvcreate -l100%FREE lv -n lv_root   # Оставшееся место под корень
vgchange -a y lv

Работа с дополнительным диском

Форматирование разделов

  • Загрузочный раздел форматируем в ext2, корень системы в ext4, а данные в кеше будет в файловой системе jfs
mkfs.ext2 /dev/md0
mkfs.ext4 /dev/lv/lv_root
mkfs.jfs  /dev/lv/lv_cache -ff
mkswap /dev/lv/lv_swap

Создадим точки монтирования созданных разделов и примонтируем их

mkdir /mnt/lv_boot
mkdir /mnt/lv_root
mkdir /mnt/lv_cache

mount /dev/md0 /mnt/lv_boot
mount /dev/lv/lv_root /mnt/lv_root
mount /dev/lv/lv_cache /mnt/lv_cache

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

rsync -aHEAXh --progress /boot/* /mnt/lv_boot
rsync -aHEAXh --progress / /mnt/lv_root \
--exclude '/boot' \
--exclude '/mnt' \
--exclude '/proc' \
--exclude '/dev' \
--exclude 'lost+found' \
--exclude '/sys' \
--exclude '/var/cache'
rsync -aHEAXh --progress /var/cache/* /mnt/lv_cache

Создадим новые служебные каталоги и назначим на них права

mkdir /mnt/lv_root/dev 
mkdir /mnt/lv_root/proc 
mkdir /mnt/lv_root/sys 
mkdir /mnt/lv_root/boot 
mkdir /mnt/lv_root/mnt
mkdir /mnt/lv_root/var/cache

Войдем в окружение созданой копии системы

mount /dev /mnt/lv_root/dev -o bind
mount /proc /mnt/lv_root/proc -o bind
mount /sys /mnt/lv_root/sys -o bind
chroot /mnt/lv_root /bin/bash

Создадим файл монтирования файловых систем при загрузке

echo "" > /etc/fstab
nano /etc/fstab
proc            /proc           proc    nodev,noexec,nosuid     0       0
/dev/md0        /boot           ext2    defaults                0       2
/dev/lv/lv_swap none            swap    sw                      0       0
/dev/lv/lv_root  /              ext4    errors=remount-ro       0       1
/dev/lv/lv_cache /var/cache     jfs     errors=remount-ro       0       1

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

echo "BOOT_DEGRADED=true" > /etc/initramfs-tools/conf.d/mdadm

Подмонтируем загрузочный раздел в соответствии с указанными параметрами fstab с генерируем загрузочное ядро

mount /boot
mkinitramfs -o /boot/initrd.img-`uname -r`

Отключим графический режим загрузчика из-за которого система может не загружаться с рейда.

nano /etc/default/grub

Раскоментировать строку:

GRUB terminal=console

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

grub-install --recheck /dev/sdb
update-grub

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

Очищаем таблицу разделов на исходном диске. Все данные на нем будут уничтожены! Все изменения в файлах произошедшие со времени начала копирования данных с него на второй диск будут потеряны.

dd if=/dev/zero of=/dev/sda bs=512 count=1

Перезагружаем систему.

reboot

ВНИМАНИЕ. Если процесс выполняется удаленно, что выполнено условие: В БИОС компьютера должен быть настроен режим последовательной загрузки с жестких дисков, т.е. если загрузиться с первого диска не удалось, должна произойти автоматическая загрука со второго. Если это не так, и система не загружается, необходимо переключить загрузку на второй диск или поменять местами интерфейсные кабели.

Подключение или замена диска в RAID

  • Далее все действия идентичны как для первичного добавления диска, так и для замены вышедшего из строя

Диск который будет добавляться в массив, должен быть очищен от данных. Выясним, какое имя в системе ему присвоено:

parted -l | grep '/dev/sd'

Наш диск не будет содержать разделов. Выглядит это так:

Error: /dev/sda: unrecognised disk label (так выглядит очищенный)                                 
Disk /dev/sdb: 10,7GB

Чтобы не ошибиться в дальнейших действиях и не испортить данные создадим переменные с именами дисков.

cleandsk=sda # чистый, пустой диск
workdsk=sdb  # Диск, который содержит систему

Произведем копирование структуры разделов с рабочего на чистый диск и подключим его к массиву

dd if=/dev/$workdsk of=/dev/$cleandsk bs=512 count=34
blockdev --rereadpt /dev/$cleandsk
mdadm --add /dev/md0 /dev/${cleandsk}2
mdadm --add /dev/md1 /dev/${cleandsk}3

Установим загрузчик на добавленный диск

grub-install /dev/$cleandsk

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

watch cat /proc/mdstat