Hlavní navigace

Jigdo: stahujte linuxové distribuce rychleji

18. 5. 2010
Doba čtení: 7 minut

Sdílet

Existuje několik různých způsobů, jak stáhnout linuxovou distribuci. Můžete stahovat klasicky přes HTTP nebo FTP či můžete využít modernější postupy typu BitTorrent, rsync nebo zsync. Velmi zajímavou alternativou je také jigdo, kterou se snaží prosazovat Debian, ale používají ji i jiné distribuce.

Proč není HTTP a FTP ideální

Předpokládám, že jste už určitě stahovali instalační ISO obraz nějaké linuxové distribuce. Využili jste k tomu jistě jeden z běžných kanálů: HTTP, FTP nebo BitTorrent. Stahování po HTTP či FTP asi nemusíme zdlouhavě popisovat, pravděpodobně se jedná o nejpoužívanější variantu. Je to logické – prostě stačí kliknout v prohlížeči na odkaz a už stahujete.

Bohužel tento postup má jednu zásadní nevýhodu – nejvíc vytěžuje stahovací servery. To poznáme zejména ve chvíli, kdy vyjde nová verze některé velmi oblíbené distribuce. Servery jsou vytížené, podávají data pomalu a čím víc lidí stahuje, tím je situace horší. Problém samozřejmě částečně řeší systém zrcadel, která se snaží rozdistribuovat zátěž po celém světě a nabídnout vám ke stahování nejbližší server. Při velkých zátěžích ale ani to nestačí a navíc tento způsob neumožňuje uživatele přesměrovat na jiné zrcadlo, pokud je to jeho opravdu přetížené.

Řešením je BitTorrent, který je přímo určený pro stahování velkých objemů dat. Ten je samozřejmě velmi populární, protože je (vy/zne)užíván pro stahování (a nelegální distribuci) audiovizuálního obsahu. Pro stahování linuxových distribucí je ideální, na předávání dat se podílí celá síť uživatelů a vše je tedy obvykle rychlé. Problémy mohou být ale dva: jednak to dobře funguje jen u souborů, které jsou aktuálně stahovány velkým množstvím uživatelů a také někteří poskytovatelé nemají BitTorrent rádi, protože jim velkým množstvím otevřených portů hltí NAT tabulky. Viděl jsem nemálo poskytovatelů, kteří po zapojení BitTorrentu uživatele na chvíli odpojili. Pokud uživatel klienta vypnul, za chvíli se připojení vrátilo.

Servery nejsou nafukovací

Kromě konečného přenosového pásma mají servery ještě jeden významný problém – omezenou kapacitu disků. Dnešní distribuce (třeba Debian) musejí svým uživatelům nabízet řadu různých médií. Od klasických CD (u Debianu 31), přes dnes obvyklá DVD (Debian má 5) až po Blu-ray. To vše navíc pro deset podporovaných platforem. Pokud dobře počítám, je to asi 600 GB dat. Pro jednu podporovanou větev. Pokud bychom počítali ještě další dvě, případně ještě oldstable, dostáváme se na několik terabajtů.

To vše je ještě znásobeno tím, že servery musejí obsahovat i jednotlivé deb balíčky kvůli repositářům a k tomu všemu všechny tyto položky podruhé ve formě zdrojových balíčků. Jednoduchý výpočet nás dostane asi na 8 TB dat. Každé zrcadlo by muselo mít takto ohromné pole a do budoucna se navíc bude distribuce spíše zvětšovat než zmenšovat. Protože Debian nemá žádné komerční zázemí a nemůže si dovolit tyto servery financovat, nastává problém.

Servery to řeší především tím, že neobsahují kompletní obsah hlavního zrcadla, ale vybírají si. Na všech tak najdete verzi pro x86 a amd64, ale u ostatních architektur už musíte hledat správný server. Stejně tak verze pro Blu-ray se vytváří jen na architektuře x86 a amd64. Na další obrazy jednoduše není na discích místo. Debian (a další distribuce) se tento problém snaží vyřešit pomocí Jigdo. Český server Debian.cz na svém zrcadle například vůbec Blu-ray obrazy nemá.

Proč Debian vymyslel Jigdo

Jigdo je funkční a pokročilá technologie pro stahování instalačních obrazů linuxových distribucí. Původně ji vytvořil projekt Debian, protože ten právě nejvíce pálí ohromné požadavky na diskový prostor, ale využívají jej také další systémy jako Ubuntu, Fedora, Solaris a FreeBSD. Minimálně pro Debian by se mělo časem jednat o hlavní způsob stahování.

Jigdo vychází z toho, co jsme si řekli výše – servery obsahují data vždy několikrát: balíčky, CD, DVD, Blu-ray. Zbytečně se tak vše duplikuje, přitom je instalační obraz možno velmi jednoduše sestavit právě z balíčků. Jigdo tedy odstraňuje ze serverů velké ISO soubory a nechává na klientském software u uživatele, aby si obraz(y) sám sestavil.

Takový postup pak kromě lepší dostupnosti všech typů médií přináší uživateli tu nejpraktičtější výhodu – vyšší rychlost. Vždy totiž můžete stahovat z nejbližšího zrcadla a nemusíte se přitom ohlížet na to, zda právě váš nejbližší a nejrychlejší server obsahuje ten obraz, který potřebujete.

Další výhodou celého procesu je, že dokáže využít už starší stažené soubory. Pokud tedy už máte na disku starší verzi instalačního média, Jigdo stahuje jen ty balíčky, které se od posledně změnily. Nakonec dá vše dohromady a vytvoří kompletní aktuální ISO obraz. Trochu to připomíná neméně zajímavý zsync, o kterém jsme psali nedávno.

Jak to funguje a jak to použít

Z hlediska uživatele je použití naprosto jednoduché a není třeba k němu vlastně vůbec nic vědět. Budete potřebovat jen Jigdo klienta. Ten existuje samozřejmě primárně pro Linux, z domovských stránek si ale můžete stáhnout i verzi pro MS Windows a jiné operační systémy.

Kromě tohoto budete potřebovat ještě řídící soubor, který naleznete na některém ze zrcadel. Soubor má příponu .jigdo a existuje pro každý finální ISO soubor, který budete stahovat. Je vlastně jedno, odkud budete tento soubor stahovat, hlavní stahování bude stejně probíhat z nejbližšího zrcadla. Můžete tedy jít rovnou na stahování:

$ jigdo-lite ftp://ftp.debian.cz/debian-cd/5.0.1/i386/jigdo-bd/debian-501-i386-BD-1.jigdo

Jigsaw Download "lite"
Copyright (C) 2001-2005  |  jigdo@
Richard Atterer          |  atterer.net
Loading settings from `/home/petr/.jigdo-lite'

Downloading .jigdo file
--2010-05-17 22:32:03--  ftp://ftp.debian.cz/debian-cd/5.0.1/i386/jigdo-bd/debian-501-i386-BD-1.jigdo
           => „debian-501-i386-BD-1.jigdo“
Překládám ftp.debian.cz… 195.113.161.73, 2001:718:1:4::2
Navazuje se spojení s ftp.debian.cz|195.113.161.73|:21… spojeno.
Probíhá přihlašování jako anonymous… Přihlášeno!
==> SYST ... hotovo.  ==> PWD ... hotovo.
==> TYPE I ... hotovo.==> CWD (1) /debian-cd/5.0.1/i386/jigdo-bd ... hotovo.
==> SIZE debian-501-i386-BD-1.jigdo ... 661381
==> PASV ... hotovo.  ==> RETR debian-501-i386-BD-1.jigdo ... hotovo.
Délka: 661381 (646K) (není směrodatné)

100%[=====================================================================================================================>] 661 381      686K/s   za 0,9s

2010-05-17 22:32:15 (686 KB/s) – „debian-501-i386-BD-1.jigdo“ uložen [661381]


-----------------------------------------------------------------
Images offered by `ftp://ftp.debian.cz/debian-cd/5.0.1/i386/jigdo-bd/debian-501-i386-BD-1.jigdo':
  1: 'Debian GNU/Linux 5.0.1 "Lenny" - Official i386 BD Binary-1 20090413-00:57 (20090413)' (debian-501-i386-BD-1.iso)

Further information about `debian-501-i386-BD-1.iso':
Generated on Mon, 13 Apr 2009 03:11:27 +0200

-----------------------------------------------------------------
If you already have a previous version of the CD you are
downloading, jigdo can re-use files on the old CD that are also
present in the new image, and you do not need to download them
again. Mount the old CD ROM and enter the path it is mounted under
(e.g. `/mnt/cdrom').
Alternatively, just press enter if you want to start downloading
the remaining files.
Files to scan:

Program se spustí a upozorní vás na to, že může ke slepení výsledku použít i data z některého adresáře na vašem disku. Pokud někde máte starší ISO obraz nebo adresář s různými balíčky, stačí programu ukázat cestu. V opačném případě prostě stiskněte Enter.

-----------------------------------------------------------------
The jigdo file refers to files stored on Debian mirrors. Please
choose a Debian mirror as follows: Either enter a complete URL
pointing to a mirror (in the form
`ftp://ftp.debian.org/debian/'), or enter any regular expression
for searching through the list of mirrors: Try a two-letter
country code such as `de', or a country name like `United
States', or a server name like `sunsite'.
Debian mirror [http://debian.mirror.web4u.cz/]:

Tady se program ptá, ze kterého zrcadla chcete stahovat. Automaticky použije ten, který máte nastavený jako standardní zrcadlo pro stahování balíčků v systému. Samozřejmě můžete udat i jiný server, pokud žádný neznáte, můžete napsat místo adresy jednoduše cz a program vypíše, která zrcadla v naší TLD zná:

http://ftp.cz.debian.org/debian/         # CZ Czech Republic
http://debian.sh.cvut.cz/debian/         # CZ Czech Republic (Prague)
http://ftp.zcu.cz/mirrors/debian/        # CZ Czech Republic (Plzen)
http://debian.mirror.web4u.cz/           # CZ Czech Republic (Prague)
http://ftp.cvut.cz/debian/               # CZ Czech Republic (Prague)
http://debian.ignum.cz/debian/           # CZ Czech Republic (Prague)
http://debian.mirror.dkm.cz/debian/      # CZ Czech Republic (Prague)
http://debian.superhosting.cz/debian/    # CZ Czech Republic

An up-to-date copy of the above list is available at
ftp://ftp.debian.org/debian/README.mirrors.txt

Vyberte si své oblíbené zrcadlo nebo prostě stiskněte Enter a stahování začne. Nejprve se stáhne soubor .template, který obsahuje seznamy balíčků pro stahování a také ta data, která nejsou v balíčcích. Jedná se například o instalátor systému a podobně. Pro aktuální Blu-ray médium má tento soubor 42 MB, pro každé DVD pak 4,4 MB. Poté se ještě program podívá na disk, jestli nenajde něco použitelného a začne samotné stahování:

Staženo: 9 souborů, 902K za 1,2s (757 KB/s)
Found 9 of the 22691 files required by the template
3%  735756k/19590506kwriting image

Pak stačí už jen čekat, až se stáhne vše potřebné. Poté program sám použije stažené soubory a pomocí utilitky mkisofs vytvoří výsledný soubor. Vše samozřejmě zkontroluje pomocí MD5 kontrolních součtů, aby zajistil, že výsledek skutečně odpovídá tomu, co zamýšleli vývojáři.

Další ke čtení

Debian Jigdo mini-HOWTO

Ubuntu: Jigdo Download Howto

CS24_early

Fedora: Using Jigdo to Download ISO Images

Domovská stránka Jigdo

JigdoOSX: port pro Mac OS X

Byl pro vás článek přínosný?

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.