Назад | Перейти на главную страницу

Как изменить систему физических разделов на LVM?

У меня есть сервер с Debian, который имеет 3 физических раздела, покрывающих весь диск: загрузочный, корневой и подкачки. Теперь я хочу заменить эти разделы разделами LVM. Я знаю, как установить Debian с LVM вначале, но в этом случае я не могу установить систему вначале, потому что провайдер предоставляет мне сервер с удаленным доступом и систему, установленную таким образом.

Как я могу изменить эти разделы, используя только ssh-соединение и, возможно, другой удаленный сервер, на котором можно разместить временные данные?

Быстрое обновление с моей стороны. Контекст: сегодня я подключил выделенный сервер с установленной схемой физических разделов вместо LVM. Было 3 раздела:

/ boot (ext4) - 512 МБ / (ext4) - 730 ГБ подкачки - 8 ГБ

Из-за отсутствия консольного доступа конечной целью было преобразовать существующий корневой раздел в LVM.

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

Сначала получился своп:

swapoff -a

Затем измените размер раздела через parted (изначально он был запущен с 742 до 750):

parted
resize 3 742 744

и создал раздел для LVM:

mkpart primary ext2 744 750
set 4 lvm on

Создание PV / VG / LV / файловой системы для временного корня:

pvcreate /dev/sda4
vgcreate VolGroup00 /dev/sda4
lvcreate -L 5.73G -n tmproot VolGroup00
mkfs.ext4 /dev/VolGroup00/tmproot

Следующим шагом было скопировать корень во временное место:

mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/

После того, как все было готово, запись для корневой файловой системы в / media / etc / fstab также должна быть изменена:

/dev/VolGroup00/tmproot /                       ext4    defaults        1 1

Почти готово, последней и, скажем так, самой нежелательной частью без доступа к консоли было изменение /boot/grub/grub.conf:

исходная запись:

title CentOS (2.6.32-279.22.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro root=UUID=e769af21-d9e1-455f-a6a7-7a9c84d8cbea rd_NO_LUKS LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

измененная запись:

title CentOS (2.6.32-279.22.1.el6.x86_64) LVM
insmod lvm
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu SYSFONT=latarcyrheb-sun16 crashkernel=auto dolvm root=/dev/mapper/VolGroup00-tmproot panic=10 
#rd_NO_DM rd_NO_MD rd_NO_LUKS
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

На всякий случай: insmod lvm был добавлен вместе с параметром dolvm для ядра, и корневой путь также был изменен на root = / dev / mapper / VolGroup00-tmproot. Важно использовать путь / dev / mapper / в это время. На всякий случай я также добавил параметр panic = 10 и не изменил загрузочную запись по умолчанию в заголовке. Вместо этого я попытался указать grub на загрузку с новой настройкой только один раз, и в случае сбоя исходная запись может работать:

grub
savedefault --default=1 --once

И наконец:

reboot

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

Надеюсь это поможет.

В Linux нет ничего невозможного, но вам придется проявить решительность и безумие, чтобы попробовать то, что вы описываете. Имейте в виду, что если у вас есть доступ только по SSH, есть большая вероятность, что вы потеряете доступ к серверу, если сделаете ошибку. Если у вас есть удаленная "последовательная" консоль и виртуальный переключатель питания, это может немного помочь. Тем не менее, если у вас есть совершенно новая установка, данные которой нельзя терять, почему бы не попробовать ее? Я нашел учебник по удаленно преобразовать систему Linux в RAID1; шаги, которые вы предпримете для LVM, будут аналогичными.

Во-первых, давайте рассмотрим необходимость временного хранилища. Предполагая, что у вас нет второго диска на сервере, вы можете сжать существующие разделы, используя parted. Конечно, для этого необходимо, чтобы ваш загрузочный и корневой разделы занимали менее половины диска, и они должны использовать сжимаемую файловую систему. (XFS и JFS, например, не сжимаются.)

После сжатия существующих разделов вы можете создать физический том LVM в освобожденном пространстве, группу томов и логические тома внутри него. Реплицируйте свои файловые системы. (При репликации вашей корневой файловой системы вы должны убить все, кроме sshd, а в идеале - в однопользовательском режиме. Вам, вероятно, придется использовать rsync скорее, чем dd поскольку вы реплицируете смонтированную файловую систему.)

Затем вы должны подготовить initrd с поддержкой LVM и указать GRUB загрузиться в новую систему, как описано в руководстве Уоррена Тогами. Как только вы это сделаете, удалить старые файловые системы с помощью parted и рост объемов LVM.

Удачи! Сообщите нам, сработало ли это!

Я ранее перенес свой корневой раздел «/», который указывал на раздел диска «/ dev / sda2» с 10 ГБ на centos 6, в раздел LV, выполняемые шаги были следующими:

  • Добавьте жесткий диск на VMware 10G.
  • распознавать диск без перезагрузки системы.
ls /sys/class/scsi_host/| while read x ; do echo "- - -" > /sys/class/scsi_host/${x}/scan ; done
  • Создайте раздел на новом диске, предположим, что мой новый диск - / dev / sdb
  • Работаю с :
fdisk /dev/sdb
  • Находясь в интерфейсе "fdisk", позволяет создать раздел с ключом "n", назначающим + 9 ГБ емкости, затем изменить тип раздела с помощью клавиши "t", назначив "8e" (раздел lvm) и, наконец, ключ "w", чтобы применить изменения. , если вы хотите увидеть, как выглядит таблица разделов, вы можете нажать клавишу «p».
  • после создания раздела мы можем проверить, что устройство создано с помощью следующей команды (команда работает, когда диск не используется):
partprobe /dev/sdb
  • после физического выхода из устройства можно создать объекты LVM в следующем порядке:
pvcreate /dev/sdb1
vgcreate vg_root /dev/sdb1
lvcreate -v -n lv_root vg_root -L 9G
  • как только LV-блоки созданы, давайте назначим FS и подключим его к текущей системе.
mkfs -t ext4 /dev/vg_root/lv_root
mkdir /mnt/new_root/
mount -t ext4 /dev/vg_root/lv_root /mnt/new_root/
  • если вы не знаете, что такое FS текущего раздела ur, это можно узнать с помощью таких команд, как:
df -lhT
cat /etc/fstab
blkid
  • когда новый LV будет смонтирован, мы можем приступить к копированию всех файлов системы.
find / -xdev | cpio -pmvd /mnt/new_root/
  • после того, как файлы будут скопированы, мы можем приступить к изменению "chroot", но прежде давайте смонтируем некоторые разделы:
cd /mnt/new_root/
mount -t proc /proc proc
mount -t sysfs /sys sys/
mount --rbind /dev dev/
  • давайте теперь изменим chroot
chroot /mnt/new_root/
  • как только мы окажемся в новом корне, измените файл:
vi /etc/fstab
  • оставив файл почти таким же, как:
#UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa /                       ext4    defaults        1 1
/dev/mapper/vg_root-lv_root /           ext4    defaults        1 1
  • После того, как файл был правильно изменен, давайте создадим файл в корне с именем "./autorelabel" на тот случай, если вы работаете с SELINUX "принудительно" или "разрешающе".
touch ./autorelabel
  • Теперь давайте выйдем из среды chroot / mnt / new-root.
exit
  • Если изменения были сделаны на основе сценария ur, давайте выполним одно из последних изменений, то есть изменим файл grub "/boot/grub/grub.conf", добавив новое меню (не изменяйте текущий параметр загрузки ur до нового один добавленный работает правильно).
# before
title CentOS 6 (2.6.32-573.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# now
title CentOS 6 (2.6.32-573.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

title CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        root (hd0,0)
        insmod lvm
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root=/dev/mapper/vg_root-lv_root rd.lvm.lv=vg_root/lv_root LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# the line added was 
title CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        root (hd0,0)
        insmod lvm
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root=/dev/mapper/vg_root-lv_root rd.lvm.lv=vg_root/lv_root LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img
  • После того, как изменения в файле grub внесены, давайте закончим регенерацию нового iso-файла initrd:
cd /boot
cp -av initramfs-$(uname -r).img initramfs-$(uname -r).img.old
dracut -f
  • наконец-то перезагрузка:
init 6
# or
reboot
  • Как только появится меню grub, выберите добавленное новое «CentOS 6 (2.6.32-573.el6.x86_64-lvroot)» и убедитесь, что оно работает правильно.
  • Если система работает правильно и не использует «/ dev / sda», ее можно удалить и отсоединить от вашей виртуальной машины или физического сервера.
dd if=/dev/zero of=/dev/sda bs=1
  • Последний крутой установил в качестве записи по умолчанию новый элемент, добавленный в меню grub "/boot/grub/grub.conf":
#default=0
default=1

Надеюсь, что ранее предоставленная информация окажется кому-то полезной.

заранее спасибо,

Мануэль Лазо

Он мог бы установить промежуточную систему спасения в (ранее отключенный) раздел подкачки (нервная работа, которую нужно проделать, если у вас нет RAC в машине) и работать оттуда. Кроме того, для определенных файловых систем существуют онлайн-инструменты изменения размера, а затем сжатие раздела и перезагрузка - это случай KWYD, но возможно.

Вы не можете заменить их на работающем сервере только разделами /, / boot и <swap>. Единственный способ сделать это - размонтировать раздел /, сжать его и создать в конце новый раздел LVM, но, поскольку у вас есть только удаленный доступ по ssh, вы не сможете сжать активный смонтированный раздел без повреждения данных.