Возникла новая задачка, и опять связанная с виртуализаций:
- Сделать платформу под виртуальные машинки для 1С и еще парочки сервисов.
- Минимизировать стоимость покупаемого железа (никакой кластеризации и выделенного хранилища)
Такая вот задачка. Долгие переговоры с заказчиком привели к тому, что была выбрана следующая конфигурация:
- сервер изначально двухголовый в начале с одним процом
- память с 8 гигами
- диски бьются на два стора - одно зеркало на sata винтах, одно на ssd
На ssd положим базу 1с для разгона
Странный монстр получился, если честно.
Думал вначале самостоятельно все настроить на основе CentOS, но пришлось передумать. Во-первых геморойно (или лень), во-вторых хотелось, чтобы они смоги самостоятельно сделать бэкап или рестарт виртуалки. Так что возвращаемся к Proxmox.
Raid у нас отсутствует, будем делать софтовый. Вот тут и кроется загвоздка - Proxmox не поддерживает установку на зеркало, и отказывает в поддержке таким любителям как мы. Будем делать сами.
Читаем google и видим большое количество статей на эту тему, иногда даже русскоязычных. Но дьявол в деталях и ни по одной инструкции не получилось получить работоспособную систему. Поэтому представляю вариант переведенной статьи по которой все просто и успешно встало на свои места.
1. Подготовка
Берем установочный диск ProxmoxVE с оф сайта, пишем на cd или, с помошью dd копируем на флешку.
Запускаем установку на первый диск (sda) и ждем завершения.
2. Создание зеркала для первого диска
Для начала обновляемся
apt-get update
apt-get upgrade
Если встало новое ядро, тогда reboot
Доставляем mdadm
apt-get install mdadm
Подгружаем модуль ядра для работы рейда
modprobe raid1
Копируем структуру разделов на второй винт
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Соглашаемся со всем и правим описание разделов под наш raid
fdisk /dev/sdb
Далее: t - 1 - fd - t - 2 - fd - w
Этим мы говорим, что разделы на втором винте созданы для Linux RAID
Создаем два зеркальных тома:
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
В нем отстутсвует одно устройство, поэтому и missing
Переписываем конфиг mdadm
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Делаем lvscan
Видим что-то наподобие
root@proxmox:~# lvscan
ACTIVE '/dev/pve/swap' [15.00 GiB] inherit
ACTIVE '/dev/pve/root' [96.00 GiB] inherit
ACTIVE '/dev/pve/data' [804.02 GiB] inherit
Запоминаем цифры размеров и далее Начинаем создавать lvm на втором диске, точнее на raid устройстве.
pvcreate /dev/md1
vgcreate pve1 /dev/md1
lvcreate --name swap --size 15G pve1
lvcreate --name root --size 96G pve1
lvcreate --name data --size 804G pve1
Внимательно выполняйте команды, не забыв заменить размеры логических томов на те, которые вы получили на предыдущем шаге. Для тома data главное, чтобы он не оказался меньше оригинального.
Проверяем
lvscan
ACTIVE '/dev/pve/swap' [15.00 GiB] inherit
ACTIVE '/dev/pve/root' [96.00 GiB] inherit
ACTIVE '/dev/pve/data' [804.02 GiB] inherit
ACTIVE '/dev/pve1/swap' [15.00 GiB] inherit
ACTIVE '/dev/pve1/root' [96.00 GiB] inherit
ACTIVE '/dev/pve1/data' [804.00 GiB] inherit
Все ровно и красиво, создаем файловую систему:
mkfs.ext4 /dev/md0
mkswap /dev/pve1/swap -f
mkfs.ext4 /dev/pve1/root
mkfs.ext4 /dev/pve1/data
Смонтируем для последующего копирования
mkdir /mnt/boot
mkdir /mnt/root
mkdir /mnt/data
mount /dev/md0 /mnt/boot
mount /dev/pve1/root /mnt/root
mount /dev/pve1/data /mnt/data
Редактируем fstab
vi /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve1/root / ext4 errors=remount-ro 0 1
/dev/pve1/data /var/lib/vz ext4 defaults 0 1
/dev/md0 /boot ext4 defaults 0 1
/dev/pve1/swap none swap sw 0 0
proc /proc proc defaults 0 0
Правим grub
cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
vi /etc/grub.d/09_swraid1_setup
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'Proxmox, with RAID1' --class proxmox --class gnu-linux --class gnu --class os {
insmod raid
insmod mdraid
insmod part_msdos
insmod ext2
set root='(md/0)'
echo 'Loading Proxmox with RAID ...'
linux /vmlinuz-2.6.32-16-pve root=/dev/mapper/pve1-root ro quiet
echo 'Loading initial ramdisk ...'
initrd /initrd.img-2.6.32-16-pve
}
Внимательно смотрим на циферки в версии ядра, и подставляем свои, если ядро другое.
Продолжаем править grub
vi /etc/default/grub
Убрав комментарий в строчке с GRUB_DISABLE_LINUX_UUID=true
Далее:
update-grub
update-initramfs -u
Потом копируем sda на рейд
cp -dpRx / /mnt/root
cp -dpRx /boot/* /mnt/boot
cp -dbRx /var/lib/vz/* /mnt/data
reboot
Система должна загрузиться с рейд-устройства. Проверим
mount
/dev/mapper/pve1-root on / type ext4 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/mapper/pve1-data on /var/lib/vz type ext4 (rw)
/dev/md0 on /boot type ext4 (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
beancounter on /proc/vz/beancounter type cgroup (rw,name=beancounter)
container on /proc/vz/container type cgroup (rw,name=container)
fairsched on /proc/vz/fairsched type cgroup (rw,name=fairsched)
Убиваем lvm на первом диске
lvremove /dev/pve/root
lvremove /dev/pve/swap
lvremove /dev/pve/data
vgremove /dev/pve
pvremove /dev/sda2
Добиваем типы разделов на первом диске для рейд
fdisk /dev/sda
t - 1 - fd
t - 2 - fd
w
Добавляем первый диск в рейд-массив
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
Любуемся на синхронизацию дисков
cat /proc/mdstat
Может занять продолжительно время, но ничего страшного, по идее можно продолжать настроивать, ждать окончания синхронизации не обязательно, поэтому:
cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
rm -f /etc/grub.d/09_swraid1_setup
update-grub
update-initramfs -u
grub-install /dev/sda
grub-install /dev/sdb
reboot
Все, система загрузилась с raid устройства, при вылете любого диска, загрузится с другого.
Тем временем синхронизация продолжается, но Proxmox готов к началу работ. Заходим в веб-интерфейс и делаем свои страшные дела.
Подготовку ssd под базу опишу чуть позднее.
- Сделать платформу под виртуальные машинки для 1С и еще парочки сервисов.
- Минимизировать стоимость покупаемого железа (никакой кластеризации и выделенного хранилища)
Такая вот задачка. Долгие переговоры с заказчиком привели к тому, что была выбрана следующая конфигурация:
- сервер изначально двухголовый в начале с одним процом
- память с 8 гигами
- диски бьются на два стора - одно зеркало на sata винтах, одно на ssd
На ssd положим базу 1с для разгона
Странный монстр получился, если честно.
Думал вначале самостоятельно все настроить на основе CentOS, но пришлось передумать. Во-первых геморойно (или лень), во-вторых хотелось, чтобы они смоги самостоятельно сделать бэкап или рестарт виртуалки. Так что возвращаемся к Proxmox.
Raid у нас отсутствует, будем делать софтовый. Вот тут и кроется загвоздка - Proxmox не поддерживает установку на зеркало, и отказывает в поддержке таким любителям как мы. Будем делать сами.
Читаем google и видим большое количество статей на эту тему, иногда даже русскоязычных. Но дьявол в деталях и ни по одной инструкции не получилось получить работоспособную систему. Поэтому представляю вариант переведенной статьи по которой все просто и успешно встало на свои места.
1. Подготовка
Берем установочный диск ProxmoxVE с оф сайта, пишем на cd или, с помошью dd копируем на флешку.
Запускаем установку на первый диск (sda) и ждем завершения.
2. Создание зеркала для первого диска
Для начала обновляемся
apt-get update
apt-get upgrade
Если встало новое ядро, тогда reboot
Доставляем mdadm
apt-get install mdadm
Подгружаем модуль ядра для работы рейда
modprobe raid1
Копируем структуру разделов на второй винт
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Соглашаемся со всем и правим описание разделов под наш raid
fdisk /dev/sdb
Далее: t - 1 - fd - t - 2 - fd - w
Этим мы говорим, что разделы на втором винте созданы для Linux RAID
Создаем два зеркальных тома:
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
В нем отстутсвует одно устройство, поэтому и missing
Переписываем конфиг mdadm
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Делаем lvscan
Видим что-то наподобие
root@proxmox:~# lvscan
ACTIVE '/dev/pve/swap' [15.00 GiB] inherit
ACTIVE '/dev/pve/root' [96.00 GiB] inherit
ACTIVE '/dev/pve/data' [804.02 GiB] inherit
Запоминаем цифры размеров и далее Начинаем создавать lvm на втором диске, точнее на raid устройстве.
pvcreate /dev/md1
vgcreate pve1 /dev/md1
lvcreate --name swap --size 15G pve1
lvcreate --name root --size 96G pve1
lvcreate --name data --size 804G pve1
Внимательно выполняйте команды, не забыв заменить размеры логических томов на те, которые вы получили на предыдущем шаге. Для тома data главное, чтобы он не оказался меньше оригинального.
Проверяем
lvscan
ACTIVE '/dev/pve/swap' [15.00 GiB] inherit
ACTIVE '/dev/pve/root' [96.00 GiB] inherit
ACTIVE '/dev/pve/data' [804.02 GiB] inherit
ACTIVE '/dev/pve1/swap' [15.00 GiB] inherit
ACTIVE '/dev/pve1/root' [96.00 GiB] inherit
ACTIVE '/dev/pve1/data' [804.00 GiB] inherit
Все ровно и красиво, создаем файловую систему:
mkfs.ext4 /dev/md0
mkswap /dev/pve1/swap -f
mkfs.ext4 /dev/pve1/root
mkfs.ext4 /dev/pve1/data
Смонтируем для последующего копирования
mkdir /mnt/boot
mkdir /mnt/root
mkdir /mnt/data
mount /dev/md0 /mnt/boot
mount /dev/pve1/root /mnt/root
mount /dev/pve1/data /mnt/data
Редактируем fstab
vi /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve1/root / ext4 errors=remount-ro 0 1
/dev/pve1/data /var/lib/vz ext4 defaults 0 1
/dev/md0 /boot ext4 defaults 0 1
/dev/pve1/swap none swap sw 0 0
proc /proc proc defaults 0 0
Правим grub
cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
vi /etc/grub.d/09_swraid1_setup
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'Proxmox, with RAID1' --class proxmox --class gnu-linux --class gnu --class os {
insmod raid
insmod mdraid
insmod part_msdos
insmod ext2
set root='(md/0)'
echo 'Loading Proxmox with RAID ...'
linux /vmlinuz-2.6.32-16-pve root=/dev/mapper/pve1-root ro quiet
echo 'Loading initial ramdisk ...'
initrd /initrd.img-2.6.32-16-pve
}
Внимательно смотрим на циферки в версии ядра, и подставляем свои, если ядро другое.
Продолжаем править grub
vi /etc/default/grub
Убрав комментарий в строчке с GRUB_DISABLE_LINUX_UUID=true
Далее:
update-grub
update-initramfs -u
Потом копируем sda на рейд
cp -dpRx / /mnt/root
cp -dpRx /boot/* /mnt/boot
cp -dbRx /var/lib/vz/* /mnt/data
reboot
Система должна загрузиться с рейд-устройства. Проверим
mount
/dev/mapper/pve1-root on / type ext4 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/mapper/pve1-data on /var/lib/vz type ext4 (rw)
/dev/md0 on /boot type ext4 (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
beancounter on /proc/vz/beancounter type cgroup (rw,name=beancounter)
container on /proc/vz/container type cgroup (rw,name=container)
fairsched on /proc/vz/fairsched type cgroup (rw,name=fairsched)
Убиваем lvm на первом диске
lvremove /dev/pve/root
lvremove /dev/pve/swap
lvremove /dev/pve/data
vgremove /dev/pve
pvremove /dev/sda2
Добиваем типы разделов на первом диске для рейд
fdisk /dev/sda
t - 1 - fd
t - 2 - fd
w
Добавляем первый диск в рейд-массив
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
Любуемся на синхронизацию дисков
cat /proc/mdstat
Может занять продолжительно время, но ничего страшного, по идее можно продолжать настроивать, ждать окончания синхронизации не обязательно, поэтому:
cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
rm -f /etc/grub.d/09_swraid1_setup
update-grub
update-initramfs -u
grub-install /dev/sda
grub-install /dev/sdb
reboot
Все, система загрузилась с raid устройства, при вылете любого диска, загрузится с другого.
Тем временем синхронизация продолжается, но Proxmox готов к началу работ. Заходим в веб-интерфейс и делаем свои страшные дела.
Подготовку ssd под базу опишу чуть позднее.
Отличная статья. Будет ли продолжение?
ОтветитьУдалитьКонечно будет) Наиграюсь с ssd и напишу
УдалитьДобрый день. Я пользователь в этом деле. Делаю согласно твоей статье и ни чего не получается, после команд
ОтветитьУдалитьДалее:
update-grub
update-initramfs -u
Потом копируем sda на рейд
cp -dpRx / /mnt/root
cp -dpRx /boot/* /mnt/boot
cp -dbRx /var/lib/vz/* /mnt/data
reboot
Система должна загрузиться с рейд-устройства.
система не грузиться, выдает ошибку ядра.
Можешь чем то помочь?
В предыдущем абзаце есть строчка " внимательно проверьте цифры в версии ядра". Я думаю, именно в этом и ошибка.
УдалитьВ предыдущем абзаце есть строчка " внимательно проверьте цифры в версии ядра". Я думаю, именно в этом и ошибка.
УдалитьВерсию proxmox ставлю нужную.
Удалитьlvscan
ОтветитьУдалитьACTIVE '/dev/pve/swap' [7.00 GiB] inherit
ACTIVE '/dev/pve/root' [96.00 GiB] inherit
ACTIVE '/dev/pve/data' [812.02 GiB] inherit
inactive '/dev/pve1/swap' [7.00 GiB] inherit
inactive '/dev/pve1/root' [96.00 GiB] inherit
inactive '/dev/pve1/data' [812.00 GiB] inherit
это сразу после переконфигурации mdadm.
proxmox 2.2
Что за проблема можеть быть в этом случае?
версию ядра напишете
Удалитьuname -a
УдалитьЕсли соберетесь провернуть такое на proxmox 3 (wheezy) то в /etc/grub.d/09_swraid1_setup
ОтветитьУдалитьвместо insmod mdraid -> insmod mdraid1x
2.6.32-16-pve #1 SMP Fri Nov 9 11:42:51 CET 2012 x86_64 GNU/Linux
ОтветитьУдалитьВсе верно. Какую ошибку пишет? Просто вчера устанавливал знакомым (PVE 2.2) все с полпинка заработало строго по инструкции. И странно, что lvm на создаваемом pve1 не завелся. В общем ошибку загрузки в студию, а также по возможности ошибки lvm
УдалитьДобрый день. Спустя некоторое время дошли руки по пробовать смонтировать систему. Все запустилось. И решил я отключить винты , отключил я первый винт, система запустилась, потом наоборот и тут система не запустилась выдает ошибки, последнее что написано это
ОтветитьУдалить....................
alert /dev/mapper/pve1-root does no exist/ Droppin to a shell
.....
/bin/sh: can't access tty; job control turned off
(initramfs)
Всем привет, у меня такая же проблема как и Wesly.После update-grub
ОтветитьУдалитьupdate-initramfs -u
Потом копируем sda на рейд
cp -dpRx / /mnt/root
cp -dpRx /boot/* /mnt/boot
cp -dbRx /var/lib/vz/* /mnt/data
reboot
система не запускается. 3 ошибки: 1-file not found;2-no such disk;3-you need to load the kernel first.
ядро 2.6.32-23-pve
Proxmox 3.1
Заранее спасибо за подсказки.