Agaton.cz

Běžná aktualizace systému se dělá opět pomocí příkazu yum.

yum upgrade

Takto se však aktualizují pouze balíčky, které byly také původně přes yum nainstalovány. Balíčky, které byly instalovány/kompilovány ručně, se neaktualizují, anebo, což je horší, mohou se přepsat (pokud se balíček kompiloval ze src.rpm pomocí rpmbuild). Proto je zapotřebí si vést evidenci takovýchto balíčků a při upgrade je z příkazu yum vyloučit a aktualizovat je ručně.

yum upgrade --exclude=roundcubemail

Pokud jsme si jisti, že chceme aktualizovat všechno, je možné yum spustit neinteraktivně, s pomocí parametru -y (na všechny otázky si odpoví yes).

Protože příkaz yum stahuje aktualizační data z internetu, bylo by při upgrade více serverů vhodné vytvořit si lokální repozitář a upgrade provádět z něj. Protože se však starám jen o menší množství serverů (cca 10 plus pár serverů u zákazníků) a aktualizace neprovádím hromadně v jednu dobu, zatím jsem tento stav neřešil. Možná, že si časem spustím rsync nějakého mirroru, ale zatím to nepovažuji za nezbytné....

Přechod na novou verzi

Naše servery se dávali do provozu postupně, vždy, když došlo k rozhodnutí nějakou službu spustit dedikovaně. Proto i verze systému odpovídaly době, kdy se uváděl do chodu. To při údržbě systému komplikuje život, navíc starší verze už nejsou podporovány (nedávno jsem u jednoho zákazníka "objevil" server, který ještě běžel na RH5). Proto lze provést upgrade na stejnou (nejnovější) verzi systému. Naposledy jsem aktualizoval 6 serverů na nejnovější verzi Fedora 11, navíc všechno dálkově - no, pravda, u tří serverů byla ta dálka jen vzdálenost cca 500m z domova do práce, u dvou to bylo 8km a jeden 20km - v případě průšvihu by se tam dalo dojet, ale komu by se ve dvě v noci chtělo.... Ale vše proběhlo bez problémů.

yum install preupgrade
yum clean all
preupgrade-cli "Fedora 11 (Leonidas)"

pokud při některém s předchozích upgrade byl aktualizován i kernel a server nebyl od té doby rebootován (pracuje stále na starší verzi kernelu), je vhodné po příkazu "yum clean all" provést reboot. Na jakou verzi je možné upgradovat sdělí příkaz preupgrade-cli bez parametru.

Po spuštění příkazu preupgrade-cli se nejprve načítají z internetu patřičné balíčky pro upgrade systému. Je potřeba počítat s tím, že jich je hodně a je také zapotřebí mít cca 900MB volného místa v / (i po stažení všech potřebných balíčků, takže bych to odhadoval na potřebu cca 2,5GB free).

Po stažení všech dat je pro následující reboot upraven příkazový řádek pro grub (jednorázově - i pokud se upgrade neprovede, je při následujícím rebootu už zase ve správném tvaru).  Že se upgrade neprovede jsem zažil na jednom serveru (naštěstí domácím), kde nebyl v / dostatek diskového prostoru. Při dálkovém upgrade by to ovšem byl průšvih, protože systém o tomto stavu vypíše zprávu a čeká na potvrzení z klávesnice. V tomto okamžiku je potřeba buď to lokální potvrzení, nebo zajistit dálkový restart (systém v tuto chvílí není nabootován, není tedy možné se na něj přihlásit. Po restartu pak nabootuje původní verze systému bez jakýchkoliv změn.

Je také zapotřebí počítat s tím, že během provádění upgrade na serveru neběží žádná služba a může se jednat o méně, než hodinový "výpadek" v případě rozumně dimenzovaného HW, ale na nějakém méně výkonném stroji to může trvat odhadem i několik hodin. Na nejslabším "domácím" stroji s AMD Athlon X2 model 4850e 2,1Ghz, paměť 2GB, systémový disk 320GB SATA to trvalo asi 1,5 hodiny. Takže provádění v pozdních nočních až ranních hodinách je pak nutností, hlavně třeba v případě mail-serveru. Jo, a v žádném případě bych si netroufl upgradovat dva servery zaroveň :-)