У меня есть сервер с 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, выполняемые шаги были следующими:
ls /sys/class/scsi_host/| while read x ; do echo "- - -" > /sys/class/scsi_host/${x}/scan ; done
fdisk /dev/sdb
partprobe /dev/sdb
pvcreate /dev/sdb1 vgcreate vg_root /dev/sdb1 lvcreate -v -n lv_root vg_root -L 9G
mkfs -t ext4 /dev/vg_root/lv_root mkdir /mnt/new_root/ mount -t ext4 /dev/vg_root/lv_root /mnt/new_root/
df -lhT cat /etc/fstab blkid
find / -xdev | cpio -pmvd /mnt/new_root/
cd /mnt/new_root/ mount -t proc /proc proc mount -t sysfs /sys sys/ mount --rbind /dev dev/
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
touch ./autorelabel
exit
# 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
cd /boot cp -av initramfs-$(uname -r).img initramfs-$(uname -r).img.old dracut -f
init 6 # or reboot
dd if=/dev/zero of=/dev/sda bs=1
#default=0 default=1
Надеюсь, что ранее предоставленная информация окажется кому-то полезной.
заранее спасибо,
Мануэль Лазо
Он мог бы установить промежуточную систему спасения в (ранее отключенный) раздел подкачки (нервная работа, которую нужно проделать, если у вас нет RAC в машине) и работать оттуда. Кроме того, для определенных файловых систем существуют онлайн-инструменты изменения размера, а затем сжатие раздела и перезагрузка - это случай KWYD, но возможно.
Вы не можете заменить их на работающем сервере только разделами /, / boot и <swap>. Единственный способ сделать это - размонтировать раздел /, сжать его и создать в конце новый раздел LVM, но, поскольку у вас есть только удаленный доступ по ssh, вы не сможете сжать активный смонтированный раздел без повреждения данных.