This is an old revision of the document!
vpsAdmin od verze 2.0 umožňuje členům samostatně vyřešit většinu problémů s poškozeným VPS, tj. když nestartuje nebo není přistupná po síti. K rozbití VPS může dojít například při aktualizaci systému, špatně zvoleným příkazem či konfigurací, apod.
Neznamená to, že vám s VPS nepomůžeme na podpoře. Zdatní administrátoři si však mohou zprovoznit VPS sami rychleji a bez čekání na naši pomoc.
Pro zvolení správného postupu je nutné zjistit, v jakém stavu se VPS nachází. V každém případě potřebujeme vzdálenou konzoli ve vpsAdminu, můžou se tam objevit důležité informace.
Ve VPS buď chybí/je rozbit init systém nebo jiná důležitá součást systému. Pokračuj připojením rootfs.
Pravděpodobně se na něčem zaseknul init, nebo jen není nastavená síť. Nahlédnutím do vzdálené konzole ve vpsAdminu lze zjistit, na čem se start VPS zastaví, jaké služby se nepodaří zapnout, apod.
vpsAdmin umožňuje připojít *jakýkoliv* dataset do *kterékoli* VPS. Tzn. je možné připojit dataset, na němž je rootfs rozbité VPS, do jiné, funkční, VPS. K tomuto účelu může posloužit buď playground nebo i jiná produkční VPS.
Mount se vytvoří následovně: Detail záchranné VPS → Create mount → vybrat dataset rozbité VPS.
Tento text dále počítá s mountem rootfs rozbité VPS do /mnt/recovery
.
Pokud problém nastal během posledních 14 dní, je možné VPS buď rovnou obnovit ze zálohy, nebo porovnat konfiguraci s funkční zálohou a pokusit se systém opravit.
Ve vpsAdminu připojíme vybranou zálohu do záchranné VPS. Poté můžeme porovnat
např. /etc
. Jestliže je záloha připojena do /mnt/snapshot
, může příkaz
pro porovnaní vypadat následovně:
# diff -qr /mnt/recovery/etc /mnt/snapshot/etc
/mnt/snapshot/etc
neexistuje, jedná se o lokální snapshot a je nutné
použít jinou cestu: /mnt/snapshot/private/etc
.
Nyní se musí prozkoumat nalezené rozdíly a zvážit, jestli může mít jejich změna vliv na funkčnost systému.
Dle typu závady může být nutné se do poškozeného systému chrootnout, třeba k práci s balíčkovacím systémem, nebo jinými programy.
Jestliže je rootfs připojen do /mnt/recovery
, chroot se provede následovně:
# cd /mnt/recovery # mount -t proc proc proc/ # mount -t sysfs sys sys/ # mount -o bind /dev dev/ # chroot /mnt/recovery /bin/bash
Nyní lze k opravě využít programy z poškozené VPS.
Konkrétní postup je závislý na distribuci - kontrola logů, oprava balíčkovacího systému, apod.
Po dokončení práce vše odpojíme:
# umount proc # umount sys # umount dev
Běží-li VPS, ale nereaguje po síti, zkontrolujeme, zda má:
ip addr
, popřípadě ifconfig -a
ip route list
Chybí-li default routa, lze ji přidat pomocí ip r a default dev venet0
.
Takto přidaná routa po restartu VPS zmizí, není to trvalé řešení.
Nemá-li VPS IP adresy nebo routu, může to znamenat, že buď je z nějakého důvodu poškozená konfigurace sítě, nebo se jedná o bug ve vzctl, které např. zatím nepodporuje nainstalovanou verzi distribuce.
Skripty, kterými vzctl nastavuje ve VPS síť si lze prohlédnout na https://src.openvz.org/projects/OVZL/repos/vzctl/browse/etc/dists.
iptables lze vyčistit přes vzdálenou konzoli např. příkazem
service iptables stop
, záleží na použité distribuci. Manuálně by to mohlo
vypadat následovně:
# iptables -F # iptables -X # iptables -P INPUT ACCEPT # iptables -P FORWARD ACCEPT # iptables -P OUTPUT ACCEPT
Bez přístupu ke vzdálené konzoli je nutné buď nalézt soubor, do kterého se ukládají perzistentní pravidla a smazat jeho obsah, nebo vypnout službu iptables. Poté restartovat VPS.
Pokud je disk zaplněn, VPS nepůjde zapnout. Lze zkusit připojit dataset do jiné VPS a promazat data. Pokud by nešlo ani to, obrať se na podporu.
Po vytvoření nového webu se může do /etc/fstab zapsat bind mount s parametrem
_netdev
. Start VPS se kvůli tomutu parametru zasekne při připojování
souborových systémů, je nutné jej odstranit.
Pro správné nastavení sítě je nutné mít nainstalován ifconfig
z balíčku
net-tools
.
Setkali jsme se s rozbitím konfigurace např. kvůli existenci
/etc/network/interfaces.head
nebo tail
, jenž obsahoval statickou
konfiguraci sítě a přebil tak konfiguraci, kterou vytvořilo
vzctl.