(Отмена правки 2024, сделанной участником 92.62.50.102 (обс.)) |
Метки: Визуальный редактор apiedit |
||
(не показано 13 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
+ | '''<u>Актуально до версии Proxmox 3.1 включительно!</u>''' |
||
+ | *[[RAID Proxmox 4.X]] |
||
+ | |||
=Задача= |
=Задача= |
||
* Необходимо создать надежную отказоустойчивую дисковую систему. При выходе из строя любого жесткого диска, система должна продолжить работу |
* Необходимо создать надежную отказоустойчивую дисковую систему. При выходе из строя любого жесткого диска, система должна продолжить работу |
||
Строка 41: | Строка 44: | ||
Далее необходимо убедится, что на дисках не осталось суперблоков. Эти блоки являются метками, которые проставляются в конец диска если он являлся частью рейд массива ранее. Часто они не удаляются в процессе форматирования жесткого диска при установке PROXMOX и их нужно затереть вручную! |
Далее необходимо убедится, что на дисках не осталось суперблоков. Эти блоки являются метками, которые проставляются в конец диска если он являлся частью рейд массива ранее. Часто они не удаляются в процессе форматирования жесткого диска при установке PROXMOX и их нужно затереть вручную! |
||
+ | |||
− | + | Проверяем, нет ли суперблоков |
|
mdadm --misc --examine /dev/sda |
mdadm --misc --examine /dev/sda |
||
mdadm --misc --examine /dev/sdb |
mdadm --misc --examine /dev/sdb |
||
+ | |||
+ | При разбитии диска sda(sdb) создаются разделы границы которых отмеченные суперблоками их не трогаем, увидим похожее на это: |
||
+ | MBR Magic : aa55 |
||
+ | Partition[0] : 1046528 sectors at 2048 (type 83) |
||
+ | Partition[1] : 975724544 sectors at 1048576 (type 8e) |
||
+ | Проверяем, нет ли суперблоков в разделах |
||
mdadm --misc --examine /dev/sdb1 |
mdadm --misc --examine /dev/sdb1 |
||
mdadm --misc --examine /dev/sdb2 |
mdadm --misc --examine /dev/sdb2 |
||
Если все в порядке и суперблоков нет, то увидим нечто подобное: |
Если все в порядке и суперблоков нет, то увидим нечто подобное: |
||
− | mdadm: No md superblock detected on /dev/ |
+ | mdadm: No md superblock detected on /dev/sdb1 |
Если есть, то перед продолжением настройки их необходимо удалить! [[Удаление суперблоков]] |
Если есть, то перед продолжением настройки их необходимо удалить! [[Удаление суперблоков]] |
||
Строка 64: | Строка 74: | ||
==Предварительная настройка RAID в режиме деградации== |
==Предварительная настройка RAID в режиме деградации== |
||
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1 |
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1 |
||
+ | выполняем раздельно |
||
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2 |
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2 |
||
Если все впорядке и массивы создались, сохраним параметры массива в конфигурационном файле: |
Если все впорядке и массивы создались, сохраним параметры массива в конфигурационном файле: |
||
Строка 123: | Строка 134: | ||
Проверим список дисков в системе |
Проверим список дисков в системе |
||
fdisk -l 2>/dev/null|grep -s -E "Диск /|Disk /"|grep -s -Pv "md|lv|dm" |
fdisk -l 2>/dev/null|grep -s -E "Диск /|Disk /"|grep -s -Pv "md|lv|dm" |
||
+ | Если диск был подключен на горячую и не увидился в системе, необходимо пересканировать порт в который его подключили. |
||
+ | ''Если не известно, в какой конкретно порт подключен носитель, то можно пересканировать все.'' |
||
+ | *Список имеющихся портов |
||
+ | ls /sys/class/scsi_host/ |
||
+ | *Пример пересканирования порта '''host3''' |
||
+ | echo "- - -" > /sys/class/scsi_host/'''host3'''/scan |
||
+ | * Если новый диск физически при подключении получил другое имя например '''sdc''', надо отключить его программно выполнив: |
||
+ | echo "1" > /sys/block/'''sdc'''/device/delete |
||
+ | |||
+ | а затем повторить процедуру переопроса порта |
||
+ | |||
Диск который будет добавляться в массив, на данном этапе не должен быть быть членом рейда. Проверим, какой диск остался жив в рейде: |
Диск который будет добавляться в массив, на данном этапе не должен быть быть членом рейда. Проверим, какой диск остался жив в рейде: |
||
cat /proc/mdstat |
cat /proc/mdstat |
Текущая версия от 11:23, 7 июня 2017
Актуально до версии Proxmox 3.1 включительно!
Задача[]
- Необходимо создать надежную отказоустойчивую дисковую систему. При выходе из строя любого жесткого диска, система должна продолжить работу
- Перенос на RAID должен происходить без прерывания работы системы и без потери данных
- Необходимо использовать средства, не требующие привязки к оборудованию, т.е. без использования как встроенных так и внешних RAID контроллеров
- Необходимо обеспечить систему надежными средствами уведомления о сбоях дисков для оперативной замены
- Замена жестких дисков должна производиться без прерывания работы в "горячем" режиме.
Перенос PROXMOX2 на RAID1 (Зеркало)[]
Принцип работы[]
- Добавляем в систему жесткий диск идентичный по размеру (до сектора) в идеале той-же модели, что и исходный
- Создаем на нем 2 раздела (под загрузку и под данные)
- Создаем 2 зеркальных рейд массива в degrade (разрушенном) состоянии (это когда массив который должен состоять из 2-х дисков, а состоит всего из одного.
- Переносим всё (загрузочный раздел и раздел с данными) с первого диска на рейд массивы второго диска
- Уничтожаем данные и структуру разделов на первом диске и подключаем его в качестве не хватающего диска в уже созданный рейд массив
- Делаем оба диска загрузочными
Создание новой структуры разделов на втором диске[]
Посмотрим список обнаруженных в системе физических дисков:
dmesg | egrep 'logical blocks|Direct-Access'
Убедимся, что система загружается с первого жесткого диска /dev/sda
df -h | grep '/boot'
Мы должны увидить нечто подобное:
/dev/sda1 504M 34M 445M 8% /boot
Если раздел boot находится не на /dev/sda1, необходимо отключить компьютер и поменять местами sata кабеля подключенные к жестким дискам.
Скопируем структуру разделов с первого диска на второй
sfdisk -d /dev/sda | sfdisk /dev/sdb --force
Сменим тип разделов на fd (Linux raid autodetect)
sfdisk -c /dev/sdb 1 fd --force sfdisk -c /dev/sdb 2 fd --force
Проверим список разделов
sfdisk -l /dev/sdb
Загрузка и установка компонентов[]
- mdadm - менеджер программного RAID для Linix
- initramfs -временная файловая система, использующаяся ядром при начальной загрузке
apt-get update apt-get install -y mdadm initramfs-tools
Все параметры по умолчанию
Далее необходимо убедится, что на дисках не осталось суперблоков. Эти блоки являются метками, которые проставляются в конец диска если он являлся частью рейд массива ранее. Часто они не удаляются в процессе форматирования жесткого диска при установке PROXMOX и их нужно затереть вручную!
Проверяем, нет ли суперблоков
mdadm --misc --examine /dev/sda mdadm --misc --examine /dev/sdb
При разбитии диска sda(sdb) создаются разделы границы которых отмеченные суперблоками их не трогаем, увидим похожее на это:
MBR Magic : aa55 Partition[0] : 1046528 sectors at 2048 (type 83) Partition[1] : 975724544 sectors at 1048576 (type 8e)
Проверяем, нет ли суперблоков в разделах
mdadm --misc --examine /dev/sdb1 mdadm --misc --examine /dev/sdb2
Если все в порядке и суперблоков нет, то увидим нечто подобное:
mdadm: No md superblock detected on /dev/sdb1
Если есть, то перед продолжением настройки их необходимо удалить! Удаление суперблоков
Настройка параметров mdadm[]
Создадим файл настроек, предварительно сохранив оригинальный
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.orig echo "" > /etc/mdadm/mdadm.conf nano /etc/mdadm/mdadm.conf
# Автоматическое назначение прав на новые массивы CREATE owner=root group=disk mode=0660 auto=yes # Почтовый адрес для уведомлений о событиях происходящих с массивом MAILADDR it.khabarovsk@dns-shop.ru
Предварительная настройка RAID в режиме деградации[]
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
выполняем раздельно
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2
Если все впорядке и массивы создались, сохраним параметры массива в конфигурационном файле:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Проверим, что информация о наших массивах записалась в файл параметров
cat /etc/mdadm/mdadm.conf
Перенос данных из LVM на второй диск[]
Создаем LVM-раздел на втором диске и добавляем его в группу pve
pvcreate /dev/md1 -ff vgextend pve /dev/md1
Переместим данные с LVM-раздела первого диска, на RAID-LVM-раздел второго диска. Процедура может продолжаться очень долго. Время зависит от объема и скорости жестких дисков.
pvmove /dev/sda2 /dev/md1
Убираем из LVM первый диск
vgreduce pve /dev/sda2
Перенос загрузочных файлов на RAID[]
Подготовим загрузочный RAID-раздел второго диска и скопируем на него все файлы из папки /boot первого диска
mkfs.ext3 /dev/md0 mkdir /mnt/md0 mount /dev/md0 /mnt/md0 cp -ax /boot/* /mnt/md0 umount /mnt/md0 rmdir /mnt/md0
Настроим параметры подключения системных дисков с учетом загрузки с raid. Пересоздадим конфигурационный файл fstab предварительно сохранив оригинальный.
cp /etc/fstab /etc/fstab.orig echo "" > /etc/fstab nano /etc/fstab
/dev/pve/root / ext3 errors=remount-ro 0 1 /dev/pve/data /var/lib/vz ext3 defaults 0 1 /dev/md0 /boot ext3 defaults 0 1 /dev/pve/swap none swap sw 0 0 proc /proc proc defaults 0 0
Перемонтируем загрузочный раздел
umount /boot mount /boot
Разрешим системе автоматически запускаться, если один из дисков вышел из строя или отсутствует (по умолчанию при загрузке будет выдаваться запрос на разрешение запуска)
echo "BOOT_DEGRADED=true" > /etc/initramfs-tools/conf.d/mdadm
Настроим загрузку
mkinitramfs -o /boot/initrd.img-`uname -r`
Отключим графический режим загрузчика из-за которого система может не загружаться с рейда.
echo "GRUB_TERMINAL=console" >> /etc/default/grub
Подключаем первый (исходный) диск в RAID[]
Копируем структуру разделов со второго диска на первый
sfdisk -d /dev/sdb | sfdisk /dev/sda --force
Добавим разделы первого диска в RAID
mdadm --add /dev/md0 /dev/sda1 mdadm --add /dev/md1 /dev/sda2
Переустановим загрузчики на каждый носитель
grub-install --recheck /dev/sda grub-install --recheck /dev/sdb update-grub
Контролируем процесс синхронизации массива
watch cat /proc/mdstat
Замена вышедшего из строя диска в RAID[]
Проверим список дисков в системе
fdisk -l 2>/dev/null|grep -s -E "Диск /|Disk /"|grep -s -Pv "md|lv|dm"
Если диск был подключен на горячую и не увидился в системе, необходимо пересканировать порт в который его подключили.
Если не известно, в какой конкретно порт подключен носитель, то можно пересканировать все.
- Список имеющихся портов
ls /sys/class/scsi_host/
- Пример пересканирования порта host3
echo "- - -" > /sys/class/scsi_host/host3/scan
- Если новый диск физически при подключении получил другое имя например sdc, надо отключить его программно выполнив:
echo "1" > /sys/block/sdc/device/delete
а затем повторить процедуру переопроса порта
Диск который будет добавляться в массив, на данном этапе не должен быть быть членом рейда. Проверим, какой диск остался жив в рейде:
cat /proc/mdstat
Чтобы не ошибиться в дальнейших действиях и не испортить данные создадим переменные с именами дисков.
workdsk=sdb # Диск, который подключен к массиву и содержит систему cleandsk=sda # чистый (пустой) диск, который будет добавлен
Произведем копирование структуры разделов с рабочего на чистый диск и подключим его к массиву
dd if=/dev/$workdsk of=/dev/$cleandsk bs=512 count=34 blockdev --rereadpt /dev/$cleandsk mdadm --add /dev/md0 /dev/${cleandsk}1 mdadm --add /dev/md1 /dev/${cleandsk}2
Установим загрузчик на добавленный диск
grub-install /dev/$cleandsk
На этом действия по переносу системы на рейд массив завершены, осталось дождаться окончания синхронизации массива. Контролировать процесс можно с помощью команды:
watch cat /proc/mdstat