Solution 1 :
Une mise à jour rapide de ma part. 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) - 730Gswap - 8G
En raison de la nature de ne pas avoir accès à la console, l'objectif final était de convertir la partition racine existante en LVM.
Considérant que l'ext4 n'est pas rétractable, le seul moyen était de réutiliser la partition d'échange en tant que racine temporaire. J'ai également décidé de configurer la racine temporaire avec LVM pour être sûr que le processus puisse fonctionner correctement.
Le swap s'est avéré le premier :
swapoff -a
Ensuite, redimensionnez la partition via parted (à l'origine, elle était 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 PV/VG/LV/système de fichiers 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 à l'emplacement temporaire :
mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/
Une fois que tout était là, l'entrée pour le 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 racine a également été changé en root=/dev/mapper/VolGroup00-tmproot. Il est important d'utiliser le chemin /dev/mapper/ pour le moment. En tant que dépôt de sécurité, 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 à 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 vous aidera.
Solution 2 :
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 n'avez qu'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 aider un peu. Cela dit, si vous avez une toute nouvelle installation sans données à perdre, 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 n'avez pas de deuxième disque sur le serveur, vous pouvez réduire les partitions existantes en utilisant parted
. Bien sûr, cela nécessite que vos partitions de démarrage et racine utilisent moins de la moitié du disque et qu'elles utilisent 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 être en mode mono-utilisateur. Vous devrez probablement utiliser rsync
plutôt que dd
puisque vous répliquez un système de fichiers monté.)
Ensuite, vous préparerez un initrd avec le support LVM et direz à 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 est simple de supprimer les anciens systèmes de fichiers en utilisant parted
et augmenter les volumes LVM.
Bonne chance! Faites-nous savoir si cela a fonctionné !
Solution 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 :
- Ajouter un disque dur sur VMware de 10G.
- reconnaître le disque sans redémarrer le système.
ls /sys/class/scsi_host/| while read x ; do echo "- - -" > /sys/class/scsi_host/${x}/scan ; done
- Créez 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" attribuant +9G de capacité, puis de changer le type de partition avec la clé "t" en attribuant "8e" (partition lvm) et enfin la clé "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, nous pouvons valider que le périphérique a été créé avec la commande suivante (la commande fonctionne lorsque le disque n'est pas utilisé) :
partprobe /dev/sdb
- une fois l'appareil sorti physiquement, créons 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, attribuons un FS et montons-le 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 cat /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 au changement de "chroot" mais avant, montons quelques partitions :
cd /mnt/new_root/ mount -t proc /proc proc mount -t sysfs /sys sys/ mount --rbind /dev dev/
- changeons maintenant le chroot
chroot /mnt/new_root/
- une fois dans la nouvelle racine modifier le fichier :
vi /etc/fstab
- laissant le fichier presque semblable à :
#UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa / ext4 defaults 1 1 /dev/mapper/vg_root-lv_root / ext4 defaults 1 1
- Une fois le fichier correctement modifié, créons un fichier à la racine avec le nom "./autorelabel" juste au cas où vous travailleriez avec SELINUX "enforcing" ou "permissive".
touch ./autorelabel
- Partons maintenant de l'environnement chroot de /mnt/new-root
exit
- Si des modifications ont été effectuées en fonction de votre scénario, effectuons l'une des dernières modifications, c'est-à-dire modifiez le fichier grub "/boot/grub/grub.conf", en ajoutant un nouveau menu (ne modifiez pas votre option de démarrage actuelle jusqu'à ce que le nouveau ajouté fonctionne correctement).
# 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
- 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 # or reboot
- 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 "/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 raid défini comme entrée par défaut le nouvel élément ajouté dans le menu grub "/boot/grub/grub.conf":
#default=0 default=1
J'espère que les informations fournies précédemment seront utiles à quelqu'un.
merci d'avance,
Manuel Lazo