Řešení 1:
Rychlá aktualizace z mé strany. Kontext:dnes jsem dostal online nainstalovaný dedikovaný server se schématem fyzických oddílů místo LVM. Byly zde 3 oddíly:
/boot (ext4) - 512M/ (ext4) - 730Gswap - 8G
Vzhledem k povaze neexistence přístupu ke konzoli bylo konečným cílem převést existující kořenový oddíl na LVM.
Vzhledem k tomu, že ext4 nelze zmenšit, jediným způsobem bylo znovu použít odkládací oddíl jako dočasný root. Také jsem se rozhodl nastavit dočasný kořenový adresář s LVM, abych se ujistil, že proces může fungovat správným způsobem.
Nejprve došlo k výměně:
swapoff -a
Poté změňte velikost oddílu přes parted (původně to bylo spuštěno z 742 na 750):
parted
resize 3 742 744
a vytvořil oddíl pro LVM:
mkpart primary ext2 744 750
set 4 lvm on
Vytvoření PV/VG/LV/systému souborů pro dočasného kořenového adresáře:
pvcreate /dev/sda4
vgcreate VolGroup00 /dev/sda4
lvcreate -L 5.73G -n tmproot VolGroup00
mkfs.ext4 /dev/VolGroup00/tmproot
Dalším krokem bylo zkopírovat kořenový adresář na dočasné místo:
mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/
Jakmile tam bylo vše, bylo třeba změnit také položku pro kořenový souborový systém v /media/etc/fstab:
/dev/VolGroup00/tmproot / ext4 defaults 1 1
Téměř tam, poslední a řekněme nejnechtěnější částí bez přístupu ke konzole byla úprava souboru /boot/grub/grub.conf:
původní záznam:
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
upravený záznam:
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
Jen pro jistotu:insmod lvm byl přidán spolu s parametrem dolvm pro jádro a kořenová cesta byla také změněna na root=/dev/mapper/VolGroup00-tmproot. V tuto chvíli je důležité použít cestu /dev/mapper/. Jako bezpečnou zálohu jsem také přidal parametr panic=10 a nezměnil výchozí zaváděcí položku v záhlaví. Místo toho jsem to zkusil a řekl grubu, aby spustil s novým nastavením pouze jednou a v případě selhání mohl původní záznam fungovat:
grub
savedefault --default=1 --once
A nakonec:
reboot
Poprvé to pro mě bylo v pořádku, takže jsem zopakoval celý postup s vytvořením nové skupiny svazků nad původním kořenovým oddílem a nakonec jsem pomocí LVM dostal root na správné místo.
Doufám, že to pomůže.
Řešení 2:
V Linuxu není nic nemožné, ale museli byste být odhodlaní a blázni, abyste se pokusili o to, co popisujete. Mějte na paměti, že pokud máte pouze SSH přístup, je velká šance, že ztratíte přístup k serveru, pokud uděláte chybu. Pokud máte vzdálenou „sériovou“ konzoli a virtuální vypínač, mohlo by to trochu pomoci. To znamená, že pokud máte zcela novou instalaci bez ztráty dat, proč to nezkusit? Našel jsem návod, jak vzdáleně převést systém Linux na RAID1; kroky, které byste zkusili pro LVM, by byly analogické.
Nejprve se podívejme na nutnost dočasného úložného prostoru. Za předpokladu, že na serveru nemáte druhý disk, můžete stávající oddíly zmenšit pomocí parted
. To samozřejmě vyžaduje, aby vaše bootovací a kořenové oddíly využívaly méně než polovinu disku a musely používat zmenšitelný souborový systém. (Například XFS a JFS nelze zmenšit.)
Po zmenšení stávajících oddílů můžete v uvolněném prostoru vytvořit fyzický svazek LVM, v něm skupinu svazků a logické svazky. Replikujte své souborové systémy. (Při replikaci vašeho kořenového souborového systému byste měli zabít vše kromě sshd
a ideálně být v režimu pro jednoho uživatele. Pravděpodobně budete muset použít rsync
spíše než dd
protože replikujete připojený souborový systém.)
Pak byste připravili initrd s podporou LVM a řekli GRUBu, aby zavedl nový systém, jak je popsáno v tutoriálu Warrena Togamiho. Jakmile to uděláte, je jednoduché odstranit staré souborové systémy pomocí parted
a rostoucí objemy LVM.
Hodně štěstí! Dejte nám vědět, jestli to fungovalo!
Řešení 3:
Dříve jsem migroval svůj kořenový oddíl „/“, který ukazoval na diskový oddíl „/dev/sda2“ s 10G na centos 6, na oddíl LV, provedené kroky byly následující:
- Přidejte pevný disk do VMware 10G.
- rozpoznat disk bez restartování systému.
ls /sys/class/scsi_host/| while read x ; do echo "- - -" > /sys/class/scsi_host/${x}/scan ; done
- Vytvořte oddíl na novém disku, předpokládejme, že můj nový disk je /dev/sdb
- Práce s :
fdisk /dev/sdb
- Být v rozhraní "fdisk" umožňuje vytvořit oddíl s klíčem "n" přiřazujícím kapacitu +9G, poté změnit typ oddílu pomocí klíče "t" přiřazujícího "8e" (oddíl lvm) a nakonec klíčem "w" pro použití změn, pokud chcete vidět, jak vypadá tabulka oddílů, můžete stisknout klávesu "p".
- Jakmile je oddíl vytvořen, můžeme ověřit, že bylo zařízení vytvořeno pomocí následujícího příkazu (příkaz funguje, když není disk používán):
partprobe /dev/sdb
- Jakmile se zařízení fyzicky ukončí, můžete vytvořit objekty LVM v následujícím pořadí:
pvcreate /dev/sdb1 vgcreate vg_root /dev/sdb1 lvcreate -v -n lv_root vg_root -L 9G
- Jakmile budou jednotky LV vytvořeny, přiřaďte FS a připojte jej k aktuálnímu systému.
mkfs -t ext4 /dev/vg_root/lv_root mkdir /mnt/new_root/ mount -t ext4 /dev/vg_root/lv_root /mnt/new_root/
- Pokud nevíte, jaký je FS aktuálního oddílu, lze to zjistit pomocí příkazů jako:
df -lhT cat /etc/fstab blkid
- po připojení nového LV můžeme přistoupit ke kopírování všech souborů systému.
find / -xdev | cpio -pmvd /mnt/new_root/
- Jakmile jsou soubory zkopírovány, můžeme přistoupit ke změně "chroot", ale předtím připojíme některé oddíly:
cd /mnt/new_root/ mount -t proc /proc proc mount -t sysfs /sys sys/ mount --rbind /dev dev/
- teď změníme chroot
chroot /mnt/new_root/
- Jakmile jsme v novém kořenovém adresáři, upravte soubor:
vi /etc/fstab
- ponecháváme soubor téměř podobný :
#UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa / ext4 defaults 1 1 /dev/mapper/vg_root-lv_root / ext4 defaults 1 1
- Jakmile je soubor správně upraven, vytvořte soubor v kořenovém adresáři s názvem "./autorelabel" pro případ, že byste pracovali s SELINUX "vynucováním" nebo "povolením".
touch ./autorelabel
- Pojďme nyní opustit chroot prostředí /mnt/new-root
exit
- Pokud byly změny provedeny na základě vašeho scénáře, proveďte jednu z posledních změn, to znamená upravit soubor grub "/boot/grub/grub.conf" přidáním nové nabídky (neupravujte aktuální možnost spouštění dokud nový přidaný nebude fungovat správně).
# 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
- Jakmile jsou provedeny změny v souboru grub, dokončete regeneraci nového souboru iso initrd:
cd /boot cp -av initramfs-$(uname -r).img initramfs-$(uname -r).img.old dracut -f
- konečně restart:
init 6 # or reboot
- Jakmile se zobrazí nabídka grub, vyberte novou přidanou „CentOS 6 (2.6.32-573.el6.x86_64-lvroot)“ a ověřte, zda funguje správně.
- Pokud systém funguje správně a nepoužívá „/dev/sda“, lze jej odebrat a odpojit od vašeho virtuálního počítače nebo fyzického serveru.
dd if=/dev/zero of=/dev/sda bs=1
- Poslední strmé nastavení jako výchozí položka nová položka přidaná do nabídky grub "/boot/grub/grub.conf":
#default=0 default=1
Doufám, že dříve poskytnuté informace někomu pomohou.
předem děkuji,
Manuel Lazo