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


10

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

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


2
Примечание для избирателей: это не обман вопроса, на который есть ссылка, потому что здесь есть поворот: полностью удаленный.
sysadmin1138

Ответы:


-1

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


3
Можно изменить размер файловой системы ext3, когда она смонтирована: linux.die.net/man/8/ext2online .
200_success 14.12.12

6
Никогда не говори никогда ...
the-wabbit

21

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

/ boot (ext4) - 512M / (ext4) - своп 730G - 8G

Из-за природы отсутствия консольного доступа конечной целью было преобразование существующего корневого раздела в 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 / path. В качестве безопасного депозита я также добавил параметр panic = 10 и не изменил загрузочную запись по умолчанию в заголовке. Вместо этого я попытался сообщить grub о загрузке с новой настройкой только один раз, и в случае сбоя оригинальная запись может сработать:

grub
savedefault --default=1 --once

И наконец:

reboot

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

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


1
Это сработало очень хорошо для меня, конвертировав мой двухдисковый raid 1 с установкой в ​​LVM на raid 1 полностью удаленно (были предварительно установлены некоторые запасные диски). Однако в grub2 новый способ перезагрузки к пункту меню - сначала отредактировать файл / etc / default / grub, чтобы убедиться, что GRUB_DEFAULT = сохранено. Потом update-grub. Затем вы запускаете, grub-reboot #чтобы установить пункт меню для использования только для следующей перезагрузки. Тогда вы можете перезагрузиться.
Кейси

Ubuntu (и debian) имеют свою собственную систему для изменения конфигурации grub. Обновление корневого раздела в нем можно сделать чище, как указано здесь: unix.stackexchange.com/a/5318/192211
EFraim

3

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

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

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

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

Удачи! Дайте нам знать, если это сработало!


3

Ранее я перенес свой корневой раздел "/", который указывал на раздел диска "/ dev / sda2" с 10G на centos 6, на раздел LV, были выполнены следующие шаги:

  • Добавьте жесткий диск на VMware 10G.
  • распознать диск без перезагрузки системы.
ls / sys / class / scsi_host / | пока читаю х; do echo "- - -"> / sys / class / scsi_host / $ {x} / scan; сделанный
  • Создайте раздел на новом диске, предположим, мой новый диск - / dev / sdb
  • Работаю с :
fdisk / dev / sdb
  • Находясь в интерфейсе "fdisk", мы можем создать раздел с ключом "n", назначив + 9G емкости, затем изменить тип раздела с ключом "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 были созданы, давайте назначим ФС и смонтируем ее в текущей системе.
mkfs -t ext4 / dev / vg_root / lv_root
mkdir / mnt / new_root /
mount -t ext4 / dev / vg_root / lv_root / mnt / new_root /
  • если вы не знаете, что такое FS вашего текущего раздела, это можно узнать с помощью таких команд, как:
df -lhT
кошка / etc / fstab
BLKID
  • когда новый LV смонтирован, мы можем приступить к копированию всех файлов системы.
найти / -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 по умолчанию 1 1
/ dev / mapper / vg_root-lv_root / ext4 по умолчанию 1 1
  • Как только файл будет правильно изменен, давайте создадим файл в корне с именем «./autorelabel» на тот случай, если вы работаете с SELINUX «принудительным» или «разрешающим».
сенсорный ./autorelabel
  • Давайте теперь выйдем из среды chroot / mnt / new-root
Выход
  • Если изменения были сделаны в соответствии с вашим сценарием, давайте выполним одно из последних изменений, то есть изменим файл grub "/boot/grub/grub.conf", добавив новое меню (не изменяйте текущий параметр загрузки, пока новый один добавленный работает правильно).
# перед
название CentOS 6 (2.6.32-573.el6.x86_64)
        корень (hd0,0)
        Ядро /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 = автокатастрофа = автозапуск KEYBY KLE-KELE KLEKLE-KLET KLEKLE KLETLE KLEE KLET KLET KLETKLE KLETKLETKLETKLEEKLETKLETKLETKLE! rd_NO_DM rhgb тихо
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# сейчас же
название CentOS 6 (2.6.32-573.el6.x86_64)
        корень (hd0,0)
        Ядро /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 = автокатастрофа = автозапуск KEYBY KLE-KELE KLEKLE-KLET KLEKLE KLETLE KLEE KLET KLET KLETKLE KLETKLETKLETKLEEKLETKLETKLETKLE! rd_NO_DM rhgb тихо
        initrd /initramfs-2.6.32-573.el6.x86_64.img

название CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        корень (hd0,0)
        insmod lvm
        ядро /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 KEYBOARDTY = pc KEYTABLE = us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# добавленная строка была 
название CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        корень (hd0,0)
        insmod lvm
        ядро /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 KEYBOARDTY = 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
  • наконец перезагрузка:
иници 6
# или
перезагрузка
  • Когда появится меню grub, выберите новое добавленное CentOS 6 (2.6.32-573.el6.x86_64-lvroot) и убедитесь, что оно работает правильно.
  • Если система работает правильно и не использует «/ dev / sda», ее можно удалить и отключить от виртуальной машины или физического сервера.
дд если = / dev / ноль = / dev / sda bs = 1
  • Последний крутой установить в качестве записи по умолчанию новый элемент, добавленный в меню grub "/boot/grub/grub.conf":
# По умолчанию = 0
по умолчанию = 1

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

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

Мануэль Лазо


1

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


Чтобы описать две, еще более сумасшедшие идеи, которые могли бы работать буквально с ОДНЫМ разделом на диске: a) создать большой пустой файл в корневом разделе, убедившись, что он правильно распределен, поработать с ним с помощью драйвера loopback ... затем munge таблица разделов, в которой раздел начинается с первого физического блока этого файла. б) запустите chroot (или даже pivot_root, если это возможно) в виртуальный диск и создайте базу и создайте там резервную копию ... уничтожьте настоящую корневую файловую систему под вами.
rackandboneman
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.