Comment changer un système de partition physique en LVM?

10

J'ai un serveur avec Debian qui a 3 partitions physiques couvrant tout le disque: boot, root y swap. Maintenant, je veux remplacer ces partitions par des partitions LVM. Je sais comment installer Debian avec LVM au début, mais dans ce cas, je ne peux pas installer le système au début parce que le fournisseur me fournit un serveur avec accès à distance et le système installé de cette manière.

Comment puis-je changer ces partitions en utilisant uniquement une connexion ssh et éventuellement un autre serveur distant où placer des données temporelles?

Daniel Hernández
la source
2
Note aux électeurs proches: Ce n'est pas une dupe de la question référencée car il y a une torsion ici: entièrement à distance.
sysadmin1138

Réponses:

-1

Vous ne pouvez pas éventuellement les remplacer sur un serveur en cours d'exécution avec uniquement les partitions /, / boot et <swap>. La seule façon de le faire est de démonter la partition /, de la réduire et de créer une nouvelle partition LVM à la fin, mais comme vous n'avez qu'un accès ssh à distance, vous ne pouvez pas réduire une partition montée en direct sans corruption de données.

mricon
la source
3
Il est possible de redimensionner un système de fichiers ext3 pendant qu'il est monté: linux.die.net/man/8/ext2online .
200_success
6
Ne dites jamais jamais ...
the-wabbit
21

Une mise à jour rapide de mon côté. Contexte: aujourd'hui, j'ai mis en ligne un serveur dédié installé avec un schéma de partition physique au lieu de LVM. Il y avait 3 partitions:

/ boot (ext4) - 512M / (ext4) - 730G swap - 8G

En raison de la nature de l'absence d'accès à la console, l'objectif final était de convertir la partition racine existante en LVM.

Considérant que ext4 n'est pas rétractable, la seule façon était de réutiliser la partition de swap en tant que racine temporaire. J'ai également décidé de configurer la racine temporaire avec LVM pour être sûr que le processus peut fonctionner correctement.

Il s'est d'abord avéré que l'échange:

swapoff -a

Puis redimensionné la partition via parted (à l'origine, elle a été démarrée de 742 à 750):

parted
resize 3 742 744

et créé une partition pour le LVM:

mkpart primary ext2 744 750
set 4 lvm on

Création de systèmes de fichiers PV / VG / LV / pour la racine temporaire:

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

L'étape suivante consistait à copier la racine dans l'emplacement temporaire:

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

Une fois que tout était là, l'entrée du système de fichiers racine dans / media / etc / fstab devait également être modifiée:

/dev/VolGroup00/tmproot /                       ext4    defaults        1 1

Presque là, la dernière et disons la partie la plus indésirable sans accès à la console était de modifier le /boot/grub/grub.conf:

entrée d'origine:

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

entrée modifiée:

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

Juste pour être sûr: insmod lvm a été ajouté avec le paramètre dolvm pour le noyau et le chemin root a également été changé en root = / dev / mapper / VolGroup00-tmproot. Il est important d'utiliser le chemin / dev / mapper / pour le moment. En guise de dépôt sécurisé, j'ai également ajouté le paramètre panic = 10 et je n'ai pas modifié l'entrée de démarrage par défaut dans l'en-tête. Au lieu de cela, j'ai essayé de dire au grub de démarrer avec le nouveau paramètre une seule fois et en cas d'échec, l'entrée d'origine pourrait fonctionner:

grub
savedefault --default=1 --once

Et enfin:

reboot

C'était OK pour moi la première fois, j'ai donc répété toute la procédure en créant un nouveau groupe de volumes au-dessus de la partition racine d'origine et finalement j'ai obtenu la racine au bon endroit en utilisant LVM.

J'espère que cela t'aides.

uha
la source
1
Cela a très bien fonctionné pour moi en convertissant ma configuration 2 disques RAID 1 en LVM sur le RAID 1 entièrement à distance (certains disques de rechange étaient préinstallés). Dans grub2, la nouvelle façon de redémarrer une entrée de menu une seule fois consiste à modifier d'abord votre fichier / etc / default / grub pour vous assurer que GRUB_DEFAULT = est enregistré. Alors update-grub. Ensuite, vous exécutez grub-reboot #pour définir l'élément de menu à utiliser pour le prochain redémarrage uniquement. Ensuite, vous pouvez redémarrer.
casey
Ubuntu (et debian) a son propre système pour modifier la configuration de grub. La mise à jour de la partition racine peut être plus propre de la manière spécifiée ici: unix.stackexchange.com/a/5318/192211
EFraim
3

Rien n'est impossible sous Linux, mais il faudrait être déterminé et fou pour tenter ce que vous décrivez. Gardez à l'esprit que si vous ne disposez que d'un accès SSH, il y a de fortes chances que vous perdiez l'accès au serveur si vous faites une erreur. Si vous avez une console "série" distante et un interrupteur d'alimentation virtuel, cela pourrait vous aider un peu. Cela dit, si vous avez une toute nouvelle installation sans perte de données, pourquoi ne pas l'essayer? J'ai trouvé un tutoriel pour convertir à distance un système Linux en RAID1 ; les étapes que vous tenteriez pour LVM seraient analogues.

Considérons d'abord la nécessité d'un espace de stockage temporaire. En supposant que vous ne disposez pas d'un deuxième disque sur le serveur, vous pouvez réduire les partitions existantes à l'aideparted . Bien sûr, cela nécessite que vos partitions de démarrage et racine utilisent moins de la moitié du disque, et elles doivent utiliser un système de fichiers rétractable. (XFS et JFS, par exemple, ne peuvent pas être réduits.)

Après avoir réduit vos partitions existantes, vous pouvez créer un volume physique LVM dans l'espace libéré, un groupe de volumes et des volumes logiques à l'intérieur. Répliquez vos systèmes de fichiers. (Lors de la réplication de votre système de fichiers racine, vous devez tout tuer sauf sshd, et idéalement en mode mono-utilisateur. Vous devrez probablement utiliser rsyncplutôt que de ddrépliquer un système de fichiers monté.)

Ensuite, vous prépareriez un initrd avec le support LVM et diriez à GRUB de démarrer dans le nouveau système, comme décrit dans le tutoriel de Warren Togami. Une fois que vous avez fait cela, il suffit de supprimer les anciens systèmes de fichiers en utilisant partedet en augmentant les volumes LVM.

Bonne chance! Faites-nous savoir si cela a fonctionné!

200_success
la source
3

J'ai précédemment migré ma partition racine "/" qui pointait vers une partition de disque "/ dev / sda2" avec 10G sur centos 6 vers une partition LV, les étapes effectuées étaient les suivantes:

  • Ajoutez un disque dur sur VMware de 10G.
  • reconnaître le disque sans redémarrer le système.
ls / sys / class / scsi_host / | en lisant x; faire écho "- - -"> / sys / class / scsi_host / $ {x} / scan; terminé
  • Créer une partition sur le nouveau disque, supposons que mon nouveau disque soit / dev / sdb
  • Travailler avec :
fdisk / dev / sdb
  • Être dans l'interface "fdisk" permet de créer une partition avec la clé "n" affectant + 9G de capacité, puis de changer le type de partition avec la clé "t" attribuant "8e" (partition lvm) et enfin la touche "w" pour appliquer les modifications , si vous voulez voir à quoi ressemble la table de partition, vous pouvez appuyer sur la touche "p".
  • une fois la partition créée, on peut valider que le périphérique est créé avec la commande suivante (la commande fonctionne lorsque le disque n'est pas utilisé):
partprobe / dev / sdb
  • une fois que le périphérique quitte physiquement, permet de créer les objets LVM dans l'ordre suivant:
pvcreate / dev / sdb1
vgcreate vg_root / dev / sdb1
lvcreate -v -n lv_root vg_root -L 9G
  • une fois les unités LV créées, permet d'affecter un FS et de le monter sur le système actuel.
mkfs -t ext4 / dev / vg_root / lv_root
mkdir / mnt / new_root /
mount -t ext4 / dev / vg_root / lv_root / mnt / new_root /
  • si vous ne savez pas quel est le FS de votre partition actuelle, vous pouvez le découvrir avec des commandes telles que:
df -lhT
chat / etc / fstab
blkid
  • lorsque le nouveau LV est monté, nous pouvons procéder à la copie de tous les fichiers du système.
find / -xdev | cpio -pmvd / mnt / new_root /
  • une fois les fichiers copiés nous pouvons procéder à la modification du "chroot" mais avant de monter quelques partitions:
cd / mnt / new_root /
mount -t proc / proc proc
monter -t sysfs / sys sys /
mount --rbind / dev dev /
  • permet maintenant de changer le chroot
chroot / mnt / new_root /
  • une fois dans la nouvelle racine, modifiez le fichier:
vi / etc / fstab
  • laissant le fichier presque similaire à:
# UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa / ext4 par défaut 1 1
/ dev / mapper / vg_root-lv_root / ext4 par défaut 1 1
  • Une fois le fichier correctement modifié, créons un fichier à la racine avec le nom "./autorelabel" juste au cas où vous travaillez avec SELINUX "imposant" ou "permissif".
toucher ./autorelabel
  • Permet maintenant de quitter l'environnement chroot de / mnt / new-root
sortie
  • Si des modifications ont été effectuées sur la base du scénario ur, permet d'effectuer l'une des dernières modifications, c'est-à-dire de modifier le fichier grub "/boot/grub/grub.conf", en ajoutant un nouveau menu (ne modifiez pas l'option de démarrage actuelle jusqu'à la nouvelle un ajout fonctionne correctement).
# avant
titre CentOS 6 (2.6.32-573.el6.x86_64)
        racine (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-auto KEYARDYPE = KEARYARD rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# maintenant
titre CentOS 6 (2.6.32-573.el6.x86_64)
        racine (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-auto KEYARDYPE = KEARYARD rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

titre CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        racine (hd0,0)
        insmod lvm
        noyau /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 KEYBOARD = pc KEYTABLE = us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# la ligne ajoutée était 
titre CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        racine (hd0,0)
        insmod lvm
        noyau /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 KEYBOARD = pc KEYTABLE = us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img
  • Une fois les modifications apportées au fichier grub, finissons de régénérer un nouveau fichier iso initrd:
cd / boot
cp -av initramfs - $ (uname -r) .img initramfs - $ (uname -r) .img.old
dracut -f
  • enfin un redémarrage:
init 6
# ou
redémarrer
  • Une fois que le menu grub apparaît, choisissez le nouveau ajouté "CentOS 6 (2.6.32-573.el6.x86_64-lvroot)" et validez qu'il fonctionne correctement.
  • Si le système fonctionne correctement et n'utilise pas le "/ dev / sda", il peut être supprimé et détaché de votre VM ou de votre serveur physique.
dd if = / dev / zero of = / dev / sda bs = 1
  • Dernier raide défini comme entrée par défaut, le nouvel élément ajouté dans le menu grub "/boot/grub/grub.conf":
# default = 0
par défaut = 1

J'espère que les informations fournies précédemment seront utiles à quelqu'un.

Merci d'avance,

Manuel Lazo

Manuel Lazo
la source
1

Il pourrait configurer un système de sauvetage intermédiaire dans la partition de swap (précédemment désactivée) (travail de destruction de nerfs à faire si vous n'avez pas de RAC dans la machine) et travailler à partir de là. De plus, des outils de redimensionnement en ligne existent pour certains systèmes de fichiers, puis la réduction de la partition par la suite et le redémarrage est un cas de KWYD mais c'est possible.

rackandboneman
la source
Pour décrire deux idées encore plus folles qui pourraient même fonctionner avec littéralement UNE SEULE partition sur le disque: a) créer un gros fichier vide sur la partition racine en vous assurant qu'elle est allouée de manière continue, travaillez dessus via le pilote de bouclage ... puis munge la table de partition pour que la partition démarre au premier bloc physique de ce fichier. b) chroot (ou même pivot_root si c'est encore possible) vous-même dans un ramdisk et installez une base et sauvegardez là ... nuke le système de fichiers racine réel sous vous.
rackandboneman