На вебинаре вы узнаете, что такое Kubernetes, почему он популярен и как развернуть полноценный кластер на своём компьютере. Изучите архитектуру Kubernetes, базовые абстракции и инструменты управления. Сможете установить первое приложение и научитесь его масштабировать.
Для участия требуются базовые знания Linux и Docker.
Вебинар будет полезен:
— Разработчикам
— Системным администраторам
— Всем, кто интересуется облачными технологиями
Техническая информация:
• длительность: 1-1,5 часа;
• вебинар проводится на Zoom;
• запись появится на следующий день;
• на вебинаре можно и нужно задавать вопросы!
Ведущий:
Александр Терсков, действующий преподаватель по Микросервисной архитектуре и контейнеризации.
Все началось с жадности, провайдер VDS предложил цены ниже моего на 2$ с единственным неподходящим для меня параметром, меньшим объемом диска, на 10 Гб был меньше.
Перепробовав множество вариантов, все уперлось в файловую систему, которую мой провайдер да и по обычаю Centos ставил XFS. Я не фанат этой файловой системы, но минус для меня был громадным, изменить размер невозможно.
Для себя я четко решил что от такой FS надо избавляться, мало ли на какие размеры и серверы придется перекочёвывать. В качестве решения выбрал LVM, но в принципе она может быть любой, главное было перекопировать систему без потерь. Итак приступим.
Шаг 1. Разрешение удалённого доступа (опционально)
Загружаемся с Live образа на нашей новой машине или виртуалке.
https://buildlogs.centos.org/centos/7/isos/x86_64/CentOS-7-livecd-GNOME-x86_64.iso
Для того, чтобы разрешить удалённый доступ, необходимо задать пароль для пользователя root и запустить SSH демон:
su
passwd
systemctl start sshd
Теперь можно подключиться к целевой машине вашим SSH клиентом (например, PuTTY).
Шаг 2. Разбивка диска на разделы
Вы можете использовать вашу любимую утилиту для этого. Например, в Gnome есть предустановленная утилита для управления дисками. Также в интернетах хвалят gparted, однако я намеренно использовал fdisk, т.к, например, gparted просто не распознавал мой NVMe SSD-диск.
Диск следует разбить по образу и подобию прежнего диска. Я не маньяк партиционирования, поэтому моя схема партиционирования была стандартной:
lsblk # проверим какое наименование в системе получил новый диск, в моём случае это nvme0n1
fdisk /dev/nvme0n1
n # добавить новый раздел (для /boot)
p # primary partition
# оставляем по умолчанию (1-й раздел)
# оставляем по умолчанию (от начала диска)
+1G # размер для раздела /boot
# готово
n # добавить новый раздел (для новой LVM volume group)
p # primary partition
# оставляем по умолчанию (2-й раздел)
# оставляем по умолчанию (от начала предыдущего раздела)
# оставляем по умолчанию (100% оставшегося места)
# готово
a # установка флага «bootable»
1 # для 10го раздела
p # проверим, всё ли в порядке
w # записываем таблицу партиционирования на диск
Раздел /boot должен быть стандартным линукс-разделом, поэтому сразу создаём файловую систему на нём:
mkfs.xfs /dev/nvme0n1p1 -f
И теперь нам необходимо создать LVM-структуру для второго раздела на диске. Назовём новую LVM-группу newmain (впоследствии переименуем):
pvcreate /dev/nvme0n1p2 # создаем новый физический LVM-диск для раздела
vgcreate newmain /dev/nvme0n1p2 # создаем новую LVM-группу и добавляем в неё только что добавленный физический LVM-диск
lvcreate -L 4G -n swap newmain # создаем логический раздел размером 4 ГБ под swap
lvcreate -l 100%FREE -n root newmain # создаем логический раздел на всё оставшееся место под корень
Теперь мы готовы к созданию файловой системы на новых логических разделах:
mkfs.xfs /dev/newmain/root # создание файловой системы для корневого раздела
mkswap -L swap /dev/newmain/swap # создание swap на новом разделе
swapon /dev/newmain/swap
Шаг 3. Активная фаза
Прежде чем мы начнём, сделаем обе LVM-группы активными (т.к. мы работаем из под Live CD):
vgchange -a y main
vgchange -a y newmain
Создадим директории для точек монтирования, и примонтируем к системе старые и новые разделы наших дисков:
mkdir -p /mnt/old/boot
mkdir -p /mnt/old/root
mkdir -p /mnt/new/boot
mkdir -p /mnt/new/root
mount /dev/sda1 /mnt/old/boot
mount /dev/nvme0n1p1 /mnt/new/boot
mount /dev/main/root /mnt/old/root
mount /dev/newmain/root /mnt/new/root
Убедимся, что всё в порядке при помощи команды lsblk:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1G 0 part /mnt/old/boot
└─sda2 8:2 0 930.5G 0 part
├─main-swap 253:0 0 3.6G 0 lvm [SWAP]
└─main-root 253:1 0 926.9G 0 lvm /mnt/old/root
nvme0n1 259:0 0 119.2G 0 disk
├─nvme0n1p1 259:3 0 1G 0 part /mnt/new/boot
└─nvme0n1p2 259:4 0 118.2G 0 part
├─newmain-swap 253:5 0 4G 0 lvm [SWAP]
└─newmain-root 253:6 0 114.2G 0 lvm /mnt/new/root
Если вы видите что-то наподобие этого, вы всё сделали верно. И здесь начинается настоящая магия — мы собираемся использовать xfsdump для миграции наших данных. Эта утилита достаточно умная и знает о внутреннем устройстве файловой системы xfs, что позволяет ей копировать только занятые данными блоки, что, в свою очередь, во-первых, позволяет нам копировать данные на диск меньшего размера, а во-вторых сильно ускоряет процесс переноса. Итак, давайте сделаем дамп данных при помощи этой утилиты, и на лету развернём эти данные на новом месте:
xfsdump -l0 -J — /mnt/old/boot | xfsrestore -J — /mnt/new/boot
xfsdump -l0 -J — /mnt/old/root | xfsrestore -J — /mnt/new/root
В моем случае тип файловой системы ext4
Копирование с /boot на другой диск:
cp -p -r /boot/* /mnt/new/boot
Пару слов об использованных флагах:
Шаг 4. Делаем новый диск загрузочным
Первое, что нужно сделать, это узнать UUID для старого и нового загрузочных разделов (/boot) при помощи команды blkid:
blkid
…
/dev/nvme0n1p1: UUID=»3055d690-7b2d-4380-a3ed-4c78cd0456ba» TYPE=»xfs»
…
/dev/sda1: UUID=»809fd5ba-3754-4c2f-941a-ca0b6fb5c86e» TYPE=»xfs»
…
Предполагая, что sda1 — прежний раздел \boot, и nvme0n1p1 — новый, производим замену UUID в конфигурационных файлах на новой точке монтирования:
sed -i «s/809fd5ba-3754-4c2f-941a-ca0b6fb5c86e/3055d690-7b2d-4380-a3ed-4c78cd0456ba/g» /mnt/new/root/etc/fstab
sed -i «s/809fd5ba-3754-4c2f-941a-ca0b6fb5c86e/3055d690-7b2d-4380-a3ed-4c78cd0456ba/g» /mnt/new/boot/grub2/grub.cfg
Эти две команды подготовят ваши системные файлы конфигурации к новому диску.
Теперь самое время переименовать LVM-группы и отмонтировать диски:
umount /mnt/{old,new}/{boot,root}
vgrename -v {,old}main
vgrename -v {new,}main
Единственное, что осталось сделать, это переустановить загрузчик. Это необходимо делать с использованием chroot:
mount /dev/main/root /mnt
mkdir -p /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
mount -t devtmpfs /dev /mnt/dev
mount -t proc /proc /mnt/proc
mount -t sysfs /sys /mnt/sys
chroot /mnt/ grub2-install /dev/nvme0n1
Шаг 5. Последний штрих
На данном этапе все данные уже должны быть перенесены и новый диск должен стать загрузочным. Нужно только перезапуститься, вынуть Live CD из привода, и выбрать новый диск в BIOS для загрузки:
systemctl reboot -f
Если что-то пошло не так и система не загружается, вы всегда можете «откатиться» на старый диск, просто запустившись с Live CD повторно и переименовав LVM-группы обратно, выполнив vgrename -v {,new}main и vgrename -v {old,}main, и затем снова перезапуститься.
На этом обязательная часть программы окончена и мы успешно перенесли работающую систему на новый диск. Старый диск можно извлекать из компьютера.
запуск lsinitrd -m -k -p {file} показывает, что внутри ramdisk нет модуля lvm
cp /etc/dracut.conf /etc/dracut.conf.bak
nano /etc/dracut.conf
Поправив следующие строки:
# dracut modules to add to the default
add_dracutmodules+=»lvm»
# install local /etc/mdadm.conf
mdadmconf=»yes»
# install local /etc/lvm/lvm.conf
lvmconf=»yes»
mount /dev/mapper/centos-root /mnt/sysimage
mount -o bind /dev /mnt/sysimage/dev
mount -o bind /sys /mnt/sysimage/sys
mount -o bind /proc /mnt/sysimage/proc
mount /dev/sda1 /mnt/sysimage/boot
chroot /mnt/sysimage
cd /boot
dracut -f initramfs-3.10.0-1160.11.1.el7.x86_64.img 3.10.0-1160.11.1.el7.x86_64
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
shutdown -r now
Ссылки на истоки:
https://habr.com/ru/post/352400/
https://serverfault.com/questions/893721/centos7-dracut-lvm-command-not-found
https://xhop.ru/nix-sistemyi/centos-7-dracut-boot-recovery/