LINUX.ORG.RU
ФорумAdmin

перенос живой centos+lvm на raid1

 , , ,


0

1

есть работающая система с виртуалками(под vmmgr) на 1 диске, на котором появились бэд сектора. Купил пару дисков, хочу на них собрать рейд1 и перенести систему.

Но система нетиповая с lvm, и немогу найти инструкции. А знаний что бы боюсь нехватит(я начинающий админ в мелкой конторе) и могу только на ночь сервер положить, днем в работе находится.

прошу вашей помощи в настройке, может инструкцию или еще что…

сейчас конфиг такой:

df -h
Файловая система        Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                   34G            0   34G            0% /dev
tmpfs                      34G            0   34G            0% /dev/shm
tmpfs                      34G         3,4G   31G           10% /run
tmpfs                      34G            0   34G            0% /sys/fs/cgroup
/dev/mapper/centos-root    50G          32G   19G           64% /
/dev/sda2                 494M         279M  216M           57% /boot
tmpfs                     6,7G            0  6,7G            0% /run/user/0

lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                KjN3wX-ddee-XhXg-tUJ4-27Qt-5pBC-xavkqC
  LV Write Access        read/write
  LV Creation host, time localhost, 2016-07-02 01:27:52 +0300
  LV Status              available
  # open                 2
  LV Size                11,81 GiB
  Current LE             3024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos/home
  LV Name                home
  VG Name                centos
  LV UUID                gIt2Y3-IeM1-P2ZQ-Ajc2-klQ8-t8KT-zuj8nL
  LV Write Access        read/write
  LV Creation host, time localhost, 2016-07-02 01:27:53 +0300
  LV Status              available
  # open                 25
  LV Size                <3,58 TiB
  Current LE             937896
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                qtXDsJ-M31G-vtEi-tgSw-h2rv-tvaj-UIMhRB
  LV Write Access        read/write
  LV Creation host, time localhost, 2016-07-02 01:28:07 +0300
  LV Status              available
  # open                 1
  LV Size                50,00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

lsblk
NAME                                                           MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                                                              8:0    0   3,7T  0 disk
├─sda1                                                           8:1    0     1M  0 part
├─sda2                                                           8:2    0   500M  0 part /boot
└─sda3                                                           8:3    0   3,7T  0 part
  ├─centos-root                                                253:0    0    50G  0 lvm  /
  ├─centos-swap                                                253:1    0  11,8G  0 lvm  [SWAP]
  └─centos-home                                                253:2    0   3,6T  0 lvm
    ├─CloudKVM-vm1-real                    					253:3    0   200G  0 lvm
    ..............
    └─CloudKVM-vmN                                             253:38   0     8G  0 lvm
sdb                                                              8:16   0   3,7T  0 disk
sdc                                                              8:32   0   3,7T  0 disk

Вот инструкция от Dimez, как переезжать с одиночного диска на Raid1. В Вашем случае все несколько проще, потому что Вы сразу же имеете пару чисты дисков для сборки полноценного Raid1.

Соответственно, алгоритм простой - разбиваете новые диски на разделы, создаете RAID1, на нужном разделе (видимо, /dev/md2, аналог Вашего /dev/sda3) cоздаете тома lvm (такие же, как и на исходном диске), монтируете их в исходную систему, далее копируете данные, ставите груб или любой другой загрузчик на raid1, правите /etc/fstab.

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

Serge10 ★★★★★ ()
Последнее исправление: Serge10 (всего исправлений: 1)

Если не разбираешься в raid, то используй raid в рамках lvm. Преобразуешь lv в raid1 тип с тремя зеркалами, указав два новых диска. Для этого достаточно документацию почитать. Остается переустановить загрузчик. Потом старый диск можно убрать, но не забыть перенастроить на два зеркала.

boowai ★★★ ()

На самом деле у тебя довольно простой случай. Нужно разметить sdb и sdc, затем сделать примерно следующее (я пишу команды, но не нужно их бездумно копировать в терминал)

Ты всегда можешь воткнуть 3 дешёвых флешки в любой комп с линуксом и потренироваться на них.

Всё это можно сделать не прерывая работы сервера и не отключая клиентов, в рабочее время. LVM делает операции с томами с нониженным приоритетом, так что в типичной конторе «рога и копыта» пользователи не должны заметить просадку производительности. Но вот переезд они тебе замедлят.

# создаём pv (физический раздел LVM)
pvcreate /dev/sd{b,c}3
# добавляем в существующуя vg - группу томов
vgextend centos /dev/sd{b,c}3
# теперь самое интересное
# конвертируем обычный том в raid1
# мы хотим (пока что) использовать все три диска,
# это значит 2 дополнительные копии данных, отсюда число два:
lvconvert --type raid1 --mirrors 2 /dev/centos/root /dev/sd{b,c}3

# повторить для остальных томов:
# свап
lvconvert --type raid1 --mirrors 2 /dev/centos/swap /dev/sd{b,c}3
# home большой, это займёт мнооого времени
lvconvert --type raid1 --mirrors 2 /dev/centos/home /dev/sd{b,c}3



# после успешного завершения у тебя будет три трёхголовых raid1,
# старые головы можно ликвидировать после тестирования ЕСЛИ ВСЁ ХОРОШО.
# я бы погонял сервер на трёх дисках некоторое время, и только потом вывел бы старичка:
# уменьшаем дублирование на 1, говорим, что выкидывать самый старый диск
lvconvert --mirrors -1 /dev/centos/root /dev/sda3
# повторить для остальных томов:
lvconvert --mirrors -1 /dev/centos/swap /dev/sda3
lvconvert --mirrors -1 /dev/centos/home /dev/sda3
vgreduce centos /dev/sda3
pvremove /dev/sda3

Ещё важный момент: я не коснулся переноса /boot который у тебя вне LVM. Я не знаю, у тебя там UEFI или GRUB но все их потроха придётся вручную скопировать на каждый из дисков. Иначе система не сможет загрузиться без старого диска, а тебе наверное надо, чтобы грузилась с любым одним из двух новых. Я у себя заленился это делать и забил, гружусь с одного диска.

При перезагрузках sda, sdb и sdc могут поменяться местами, будь бдителен!

legolegs ★★★★★ ()
Последнее исправление: legolegs (всего исправлений: 1)

Делаешь raid1 (mdadm)

Делаешь 2 раздела, для /boot 512m, для PV все остальное (parted)

PV – pvcreate

Добавляешь новый PV в существующую VG (vgextend)

Переносишь данные со старого диска (pvmove)

Выкидываешь старый диск из VG (vgreduce)

Копируешь /boot (dd, rsync, …). правишь /etc/fstab

И grub-install /dev/md0 (или как там новый raid называться будет)

futurama ★★★★ ()
Ответ на: комментарий от legolegs

При зеркале на LVM работает только один диск для всех потоков (при чтении), а на mdadm потоки разбросает по дискам (при чтении)

futurama ★★★★ ()
Последнее исправление: futurama (всего исправлений: 1)
Ответ на: комментарий от futurama

А надо не lvc*e -m Number --type mirror использовать, а --type raid1, или вообще явно не задавать, т.к. он уже лет 6 по умолчанию. А вести он должен себя почти так же.

man lvmraid

LVM RAID uses both Device Mapper (DM) and Multiple Device (MD) drivers from the Linux kernel. DM is used to create and manage visible LVM devices, and MD is used to place data on physical devices.

boowai ★★★ ()
Последнее исправление: boowai (всего исправлений: 2)
Ответ на: комментарий от boowai

милчеловек, ты попробуй на практике, тогда и поговорим. Я пробовал и теперь у меня под LVM живет mdadm, хоть решение на уровне LVM и гибче, но менее производительно.

futurama ★★★★ ()

проблема

действовал таким образом:

sgdisk /dev/sda -R /dev/sdb sgdisk /dev/sda -R /dev/sdc

mdadm –create –verbose /dev/md0 –level=0 –raid-devices=2 /dev/sdb /dev/sdc

pvcreate /dev/md0

vgextend centos /dev/md2

pvmove /dev/sda3 /dev/md2

после окончания сервер сам ребутнулся и больше lvm не доступен.

vgchange -ay пробовал, не работает. lvscan пишет что все активны.

что можно предпринять? работа сервера встала. прошу вашей помощи

jone31 ()
Ответ на: комментарий от legolegs

Если читает один процесс

то в обоих случаях lvm/mdadm, работает только один диск к сожалению. А при нескольких потоках … как я говорил ранее mdadm лучше.

Может за последние 5-10 лет что-то изменилось в lvm, но я сомневаюсь.

futurama ★★★★ ()
Ответ на: проблема от jone31

Если ты не понимаешь, что и как делать, то в первую очередь нужно сделать backup.

А затем, перед выполнением команд на целевой системе потренироваться на кошках, например на другом ПК или виртуалке.

Backup есть?

Показывай вывод

lvdisplay -C
vgdisplay
pvdisplay

Если система не загружается, то тебе придётся грузиться с любого LiveCD / LiveUSB и выполнять команды с него.

infomeh ★★ ()
Ответ на: комментарий от anc

проблема

делал по мануалам, было примерно так:

перенес разметку

sgdisk /dev/sda -R /dev/sdb sgdisk /dev/sda -R /dev/sdс

собрал массив

mdadm –create –verbose /dev/md1 –level=0 –raid-devices=2 /dev/sdb2 /dev/sdc2 mdadm –create –verbose /dev/md2 –level=0 –raid-devices=2 /dev/sdb3 /dev/sdc3

#созадл lv pvcreate /dev/md2

присоединил к текущему

vgextend centos /dev/md2 #перенес данные pvmove /dev/sda3 /dev/md2

последний шаг длился сутки, и вчера под вечер сервер сам ребутнулся и больше диски виртуалок в lve не появились.

загрузчик еще не менял, грузится со старого (sda2).

sda1 это 1 мбайт отступа в начале диска.

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

единственное что мне непонятно, почему номера md после ребута поменялись. может в этом проблема? но сейчас lvm видно 7 терабайт, т.е. старый диск полностью и рейд полностью.

jone31 ()
Ответ на: комментарий от infomeh

проблема

проблем с питанием не было, стоит ИБП. Другие серверы не ребутались, значит просадки тож не было.

последние сообщения в логах перед ребутом

Dec 2 21:25:02 cl1-s2-n1 libvirtd: 2019-12-02 18:25:02.490+0000: 30621: error : virStorageBackendLogicalMatchPoolSource:662 : конфигурация не поддерживается: cannot find logical volume group name ‘CloudKVM’ Dec 2 21:28:21 cl1-s2-n1 lvmpolld: W: #011LVPOLL: PID 25481: STDERR: ’ One or more devices used as PVs in VG centos have changed sizes.’ Dec 2 21:28:21 cl1-s2-n1 lvmpolld: W: #011LVPOLL: PID 25481: STDERR: ’ WARNING: Device /dev/md2 has size of 7812743168 sectors which is smaller than corresponding PV size of 7813003264 sectors. Was device resized?’ - повторяется в конце пять раз.

в 21:30 уже идут записи ио загрзке…

kernel panic и подобного нет.

самого вывода консиоли в момент ребута не видел, но примерно в это время и должен был закончитс перенос. В районе 18 часов смотрел было около 80%.

jone31 ()
Ответ на: проблема от jone31

было примерно так

Ну как было примерно так видимо примерно и получилось.

level=0
видно 7 терабайт

Очень странно, ну точно такого быть не должно при двух 4Тб дисках в нулевом рэйде.
Вы продолжайте «экскриметны» "по мануалам"

anc ★★★★★ ()
Ответ на: проблема от jone31
Dec 2 21:25:02 cl1-s2-n1 libvirtd: 2019-12-02 18:25:02.490+0000: 30621: error : virStorageBackendLogicalMatchPoolSource:662 : конфигурация не поддерживается: cannot find logical volume group name ‘CloudKVM’
Dec 2 21:28:21 cl1-s2-n1 lvmpolld: W: #011LVPOLL: PID 25481: STDERR: ’ One or more devices used as PVs in VG centos have changed sizes.’
Dec 2 21:28:21 cl1-s2-n1 lvmpolld: W: #011LVPOLL: PID 25481: STDERR: ’ WARNING: Device /dev/md2 has size of 7812743168 sectors which is smaller than corresponding PV size of 7813003264 sectors. Was device resized?’ - повторяется в конце пять раз.
jone31 ()
Ответ на: проблема от jone31

Ну то есть мы должны телепатически узнать все ваши опечатки?
Вам уже много раз написали, нет опыта сначала тренируйтесь. И даже если есть опыт, надо для себя составить четкую подробную инструкцию и только потом действовать.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: проблема от jone31
Device /dev/md2 has size of 7812743168 sectors which is smaller than corresponding PV size of 7813003264 sectors. Was device resized?’

Ты логи читал? Он тебе говорит, что размер /dev/md2 меньше размера физического тома на диске.

Ты почему не посмотрел, что размеры отличаются?

Разница в 260096 секторов, т.е. 133169152 байта или 130 048 Кбайт или 127 мегабайт.

Слишком большая разница.

Бэкап есть?

infomeh ★★ ()
Ответ на: комментарий от infomeh

127 мегабайт
Слишком большая разница.

Неа. Для случая разных разных дисков, это не так уж и много, тем более при размере в 4ТБ. Новые могут быть меньше.

anc ★★★★★ ()
Ответ на: комментарий от infomeh

проблема

сейчас данные вернул на исходный диск чере pvmove но я так понимаю не монтируется никуда lvm

lvdisplay -C
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home centos -wi-a----- <3,58t
  root centos -wi-ao---- 50,00g
  swap centos -wi-ao---- 11,81g
vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  34
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <7,28 TiB
  PE Size               4,00 MiB
  Total PE              1907438
  Alloc PE / Size       953720 / <3,64 TiB
  Free  PE / Size       953718 / <3,64 TiB
  VG UUID               kbOwJE-FU65-oxVE-2HNN-WFcY-2ffw-qdH94X

pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               centos
  PV Size               <3,64 TiB / not usable 0
  Allocatable           yes
  PE Size               4,00 MiB
  Total PE              953736
  Free PE               16
  Allocated PE          953720
  PV UUID               jPyQ8k-tMqp-sBRt-XxeX-zqrP-QxfY-D6ppOZ

  --- Physical volume ---
  PV Name               /dev/md126
  VG Name               centos
  PV Size               <3,64 TiB / not usable 3,00 MiB
  Allocatable           yes
  PE Size               4,00 MiB
  Total PE              953702
  Free PE               953702
  Allocated PE          0
  PV UUID               qwlcVk-8cgN-2rd1-9Hh5-mh82-pFb1-Xr0Y5A

на сервере было около 1тб свободно еще, использовано около 3тб

jone31 ()
Ответ на: комментарий от infomeh

проблема

сейчас так

 mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=34950884k,nr_inodes=8737721,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=26,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=278)
mqueue on /dev/mqueue type mqueue (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda2 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=6992464k,mode=700)

при попытке смонтировать вылезает

 mount  /dev/centos/home /home
mount: unknown filesystem type 'LVM2_member'
jone31 ()
Ответ на: комментарий от Deleted

Да оно и сейчас не так что бы мало для одного-двух-трех ведр. Другой вопрос если хранить много версий initramfs коих «плодиться как мух» в rh :)
Например в дебе9 у меня
82M boot

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: проблема от jone31

при попытке смонтировать вылезает

 mount  /dev/centos/home /home
mount: unknown filesystem type 'LVM2_member' 

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

anc ★★★★★ ()
Ответ на: комментарий от anc

Натыкался на ситуацию, что /boot в 100Mb не хватает для 2х ядер в бубунте в определённых ситуациях (собирание модуля через dkms). После этого перестал выделять отдельно /boot

Deleted ()
Ответ на: проблема от jone31

Что значит образы в вашем понимании? Это блочные разделы которые отданы виртуалкам тоесть обычные разделы на диске. Это было изначально в топике. Судя по изменяемым данным в ваших выхлопах и путаницы в показания что именно делали, и что у вас сейчас получилось мы не знаем.

anc ★★★★★ ()
Ответ на: Re: проблема от futurama

проблема

в pv есть тольк centos.

а в centos вложены еще swap и home.

в home находятся разделы с виртуалкам.

home видноб а что ниже home - нет. при этом по занятому пространству видно что home полон, но открываь не открывается.

может кто готов помочь за оплату, оч нужно

jone31 ()
Ответ на: проблема от jone31

может кто готов помочь за оплату, оч нужно

Создавайте тему здесь www.linux.org.ru/forum/job/

ЗЫ Бэкапов видимо тоже не было. Рекомендую быстро по собственному писать.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: проблема от jone31

Re: проблема

  └─centos-home                253:2    0   3,6T  0 lvm
    ├─CloudKVM-vm1-real        253:3    0   200G  0 lvm
    ..............
    └─CloudKVM-vmN             253:38   0     8G  0 lvm

Как тогда под centos-home могут быть блочные устройства Cloud* ?

futurama ★★★★ ()