GNU/Linux >> Linux Esercitazione >  >> Linux

Come modificare un sistema di partizione fisica in LVM?

Soluzione 1:

Un rapido aggiornamento da parte mia. Contesto:oggi ho messo online un server dedicato installato con schema di partizione fisica anziché LVM. C'erano 3 partizioni:

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

A causa della natura di non avere accesso alla console, l'obiettivo finale era convertire la partizione root esistente in LVM.

Considerando che ext4 non è riducibile, l'unico modo era riutilizzare la partizione di swap come root temporaneo. Ho anche deciso di impostare il root temporaneo con LVM per essere sicuro che il processo possa funzionare nel modo giusto.

Per prima cosa è uscito lo scambio:

swapoff -a

Quindi ridimensiona la partizione tramite parted (originariamente era avviata da 742 a 750):

parted
resize 3 742 744

e creato una partizione per LVM:

mkpart primary ext2 744 750
set 4 lvm on

Creazione di PV/VG/LV/filesystem per la radice temporanea:

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

Il passaggio successivo è stato copiare la radice nella posizione temporanea:

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

Una volta che tutto era lì, anche la voce per il filesystem root in /media/etc/fstab doveva essere cambiata:

/dev/VolGroup00/tmproot /                       ext4    defaults        1 1

Ci siamo quasi, l'ultima e diciamo la parte più indesiderata senza accesso alla console è stata la modifica di /boot/grub/grub.conf:

voce originale:

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

voce modificata:

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

Giusto per andare sul sicuro:insmod lvm è stato aggiunto insieme al parametro dolvm per il kernel e anche il percorso root è stato cambiato in root=/dev/mapper/VolGroup00-tmproot. È importante utilizzare il percorso /dev/mapper/ in questo momento. Come deposito di sicurezza ho anche aggiunto il parametro panic=10 e non ho modificato la voce di avvio predefinita nell'intestazione. Invece ho provato a dire a grub di avviarsi con la nuova impostazione solo una volta e in caso di errore la voce originale potrebbe funzionare:

grub
savedefault --default=1 --once

E infine:

reboot

La prima volta per me andava bene, quindi ho ripetuto l'intera procedura creando un nuovo gruppo di volumi sopra la partizione root originale e alla fine ho ottenuto il root nel posto giusto usando LVM.

Spero che questo aiuti.

Soluzione 2:

Niente è impossibile in Linux, ma dovresti essere determinato e pazzo per tentare ciò che descrivi. Tieni presente che se hai solo accesso SSH, c'è una buona possibilità che perderai l'accesso al server se commetti un errore. Se si dispone di una console "seriale" remota e di un interruttore di alimentazione virtuale, ciò potrebbe aiutare un po'. Detto questo, se hai un'installazione nuova di zecca senza dati da perdere, perché non provarla? Ho trovato un tutorial per convertire in remoto un sistema Linux in RAID1; i passaggi che proveresti per LVM sarebbero analoghi.

Innanzitutto, consideriamo la necessità di uno spazio di archiviazione temporaneo. Supponendo che tu non abbia un secondo disco sul server, puoi ridurre le partizioni esistenti usando parted . Naturalmente, ciò richiede che le partizioni di avvio e root utilizzino meno della metà del disco e devono utilizzare un filesystem riducibile. (XFS e JFS, ad esempio, non sono riducibili.)

Dopo aver ridotto le partizioni esistenti, puoi creare un volume fisico LVM nello spazio liberato, un gruppo di volumi e volumi logici al suo interno. Replica i tuoi filesystem. (Quando replichi il tuo filesystem di root, dovresti uccidere tutto tranne sshd e idealmente essere in modalità utente singolo. Probabilmente dovrai usare rsync anziché dd poiché stai replicando un filesystem montato.)

Quindi, dovresti preparare un initrd con il supporto LVM e dire a GRUB di avviarsi nel nuovo sistema, come descritto nel tutorial di Warren Togami. Una volta fatto ciò, è semplice eliminare i vecchi filesystem usando parted e aumentare i volumi LVM.

Buona fortuna! Facci sapere se ha funzionato!

Soluzione 3:

Ho precedentemente migrato la mia partizione di root "/" che puntava a una partizione del disco "/dev/sda2" con 10G su centos 6 a una partizione LV, i passaggi eseguiti sono stati i seguenti:

  • Aggiungi un disco rigido su VMware di 10G.
  • riconoscere il disco senza riavviare il sistema.
ls /sys/class/scsi_host/| while read x ; do echo "- - -" > /sys/class/scsi_host/${x}/scan ; done
  • Crea una partizione sul nuovo disco, supponiamo che il mio nuovo disco sia /dev/sdb
  • Lavorare con :
fdisk /dev/sdb
  • Essere nell'interfaccia "fdisk" consente di creare una partizione con la chiave "n" assegnando +9G di capacità, quindi cambiare il tipo di partizione con la chiave "t" assegnando "8e" (partizione lvm) e infine la chiave "w" per applicare le modifiche, se vuoi vedere come appare la tabella delle partizioni puoi premere il tasto "p".
  • una volta creata la partizione, possiamo verificare che il dispositivo sia stato creato con il seguente comando (il comando funziona quando il disco non è stato utilizzato):
partprobe /dev/sdb
  • una volta che il dispositivo esce fisicamente, creiamo gli oggetti LVM nel seguente ordine:
pvcreate /dev/sdb1
vgcreate vg_root /dev/sdb1
lvcreate -v -n lv_root vg_root -L 9G
  • una volta create le unità LV, assegniamo un FS e montiamolo sul sistema corrente.
mkfs -t ext4 /dev/vg_root/lv_root
mkdir /mnt/new_root/
mount -t ext4 /dev/vg_root/lv_root /mnt/new_root/
  • se non sai qual è il FS della tua partizione corrente, puoi scoprirlo con comandi come :
df -lhT
cat /etc/fstab
blkid
  • quando il nuovo LV è stato montato possiamo procedere a copiare tutti i file del sistema.
find / -xdev | cpio -pmvd /mnt/new_root/
  • una volta che i file sono stati copiati possiamo procedere a modificare il "chroot" ma prima montiamo alcune partizioni :
cd /mnt/new_root/
mount -t proc /proc proc
mount -t sysfs /sys sys/
mount --rbind /dev dev/
  • adesso cambiamo il chroot
chroot /mnt/new_root/
  • una volta che siamo nella nuova radice modificare il file :
vi /etc/fstab
  • lasciando il file quasi simile a :
#UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa /                       ext4    defaults        1 1
/dev/mapper/vg_root-lv_root /           ext4    defaults        1 1
  • Una volta che il file è stato opportunamente modificato, creiamo un file nella root con il nome "./autorelabel" nel caso in cui stiate lavorando con SELINUX "enforcing" o "permissive".
touch ./autorelabel
  • Usciamo ora dall'ambiente chroot di /mnt/new-root
exit
  • Se le modifiche sono state apportate in base al tuo scenario, eseguiamo una delle ultime modifiche, ovvero modificare il file grub "/boot/grub/grub.conf", aggiungendo un nuovo menu (non modificare l'attuale opzione di avvio finché quello nuovo aggiunto non funziona correttamente).
# 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
  • Una volta apportate le modifiche al file grub, finiamo di rigenerare un nuovo file iso initrd :
cd /boot
cp -av initramfs-$(uname -r).img initramfs-$(uname -r).img.old
dracut -f
  • finalmente un riavvio :
init 6
# or
reboot
  • Una volta visualizzato il menu di grub, scegli quello nuovo aggiunto "CentOS 6 (2.6.32-573.el6.x86_64-lvroot)" e verifica che funzioni correttamente.
  • Se il sistema funziona correttamente e non utilizza "/dev/sda", può essere rimosso e scollegato dalla tua VM o server fisico.
dd if=/dev/zero of=/dev/sda bs=1
  • Ultima ripida imposta come voce predefinita la nuova voce aggiunta nel menu di grub "/boot/grub/grub.conf":
#default=0
default=1

Spero che le informazioni fornite in precedenza possano essere utili a qualcuno.

grazie in anticipo,

Manuel Lazo


Linux
  1. Come modificare il nome host in Linux

  2. Come cambiamo la password di root?

  3. CentOS / RHEL:come ridurre il file system radice LVM

  4. CentOS / RHEL:come aggiungere volume fisico (PV) a un gruppo di volumi (VG) in LVM

  5. Come creare una partizione di sistema EFI?

Come reimpostare o modificare la password di root in Linux

Come modificare l'UUID della partizione nel filesystem Linux

Come estendere la partizione radice XFS senza LVM in Linux

Come impostare o modificare il nome host in Linux

Come modificare la password di root in Linux

Come modificare la password di root in Kali Linux