Pokud připravujete disk, je zapotřebí, aby si program pro přípravu a správu disků na začátku vždy načetl geometrii disku. Tedy počet cylindrů, hlav, sektorů a dalších údajů definujících disk. Zajímavé je to, že u paměťových nosičů typu CF, SD a dalších karet vlastně na daném médiu nejsou žádné cylindry, hlavy, ani sektory, ale interní logika daného zařízení překládá LBA strukturu disku do CHS uspořádání. Je zajímavé, jak se každý z uvedených programů s tímto překladem popere po svém. Jen pro zajímavost shrnuji geometrii jednoho stejného disku (8 GB SD SanDisk) v různých programech.
Jak amiga přistupuje k disku
- Aplikace
- Dos.library (tvoří partitiony)
- Souborový systém
- scsi.device
- Gayle
- Řadič disku
- Práce s bloky, tedy čtení a zápis
- device 37.64 (v kickstartu 3.0 Amigy 1200) Limit 4, resp. 7,87 GiB
- device 40.12 (v kickstartu 3.1 Amigy 1200) Limit 4, resp. 7,87 GiB
- device 43.35 (v AmigaOS 3.9) disky do 128 GiB (limit LBA28 )
- device 43.45 (autoři Hodges, Wilen, Sauer) disky nad 128 GiB (limit LBA48 )
- device 44.20 (Doobrey) disky nad 128 GiB (limit LBA48 )
V tomto textu uvádím měrné jednotky GiB a GB. 1 GiB = 1024 MB.
1 KiB = 1024 B = 1024^1 = 2^10
1 MiB = 1 048 576 B = 1024 kB = 1024^2 = 2^20
1 GiB = 1 073 741 824 B = 1024 MB = 1024^3 = 2^30
1 TiB = 1 099 511 627 776 B = 1024 GB = 1024^4 = 2^40
Více viz wikipedie.
4 GiB
Původní scsi.device (do verze 40.12 včetně) dokáže pracovat s disky do kapacity 4 GiB (4,3 GB). Toto číslo vychází ze schopnosti scsi.device adresovat množství diskové paměti o velikosti maximálně 2^32 bajtu. Je to přesně 4 294 967 296 bajtů, po zaokrouhlení tedy 4,3 GB, tedy 4 GiB. Limit je dán architekturou scsi.device, kdy disky s kapacitou 4 GiB a více byly sci-fi, resp. v té době tento limit nebyl potřeba řešit.
Tento limit se týká kombinace použití originálního scsi.device a souborového systému FastFileSystem, tedy používání standardních příkazů pro přístup k disku CMD_READ a CMD_WRITE.
Co to znamená prakticky: pokud pořídíte do standardní amigy disk, compact flash, SD nebo jiné médium o kapacitě do 4 GB včetně, nemusíte řešit nic ohledně patchování scsi.device a výměny souborového systému, tedy nemáte žádný problém. Např. compact flash karta o prodávané kapacitě 4 GB má skutečnou velikost 4 000 000 000 bajtů, což je cca 3,73 GiB, tedy limit 4 GiB nepřekročíte.
7,87 GiB – CHS 16383-16-63
Výše popsaný limit 4 GiB lze obejít použitím souborových systémů Smart File System (SFS) nebo Professional File System (PFS) (dále jen moderní souborový systém). Tyto souborové systémy, kromě toho, že výrazně zrychlují čtení i zápis dat, podporují příkazy pro práci s diskem nejenom po bajtech (cmd_read; cmd_write), ale i po blocích (hd_scsicmd). Tuto sadu příkazů, (nazývající se DirectSCSI) musí podporovat souborový systém i scsi.device (a scsi.device s těmito příkazy pracovat dokáže).
Příkazy DirectSCSI přistupují k disku nikoli po bajtech, ale po blocích, tedy po násobcích 512 bajtů, a nevztahuje se na ně omezení 2^32 bajtu. Nicméně vztahuje se na ně omezení standardu ATA-5, jehož limity jsou 16 383 cylindrů, 16 hlav a 63 sektorů. Součin těchto hodnot dává počet použitelných sektorů, tedy 16 514 064, který když vynásobíme velikostí bloku (512 bajtů), dostaneme se na limit 8 455 200 768 použitelných bajtů, tedy necelých 8,5 GB, resp. 7,87 GiB (8 455 200 768/2^30=7,87 451 934 814 453 125).
Co to znamená prakticky: pokud pořídíte do amigy disk o kapacitě 8 GB včetně, ve skutečnosti má většina takto prodávaných disků kapacitu do 7,45 GiB, takže se bezpečně do kritického limitu 7,87 GiB vejdete, tedy takový disk lze použít v amize bez jakéhokoli patchování scsi.device. Podmínkou je ale použití moderního souborového systému typu PFS3, resp. jeho části PDS3, která využívá pro přístup k disku DirectSCSI příkazy.
Výjimky
Výše uvedené limity platí, pokud nenarazíte na výjimky. Na trhu jsou totiž některá zařízení, která v sobě mají logiku, která při se při překročení limitu „postará“ o převod na ATA-6, tedy tato zařízení lze ve standardní amize používat bez nutnosti patchování scsi.device, stačí jen použít moderní souborový systém.
128 GiB – LBA28
Pokud zamýšlíte v běžné amize použít disk o kapacitě více než 8 GB, budete muset použít moderní souborový systém a povýšit scsi.device na verzi, která umí pracovat s disky o kapacitě 7,87 GiB a více. Vývojáři AmigaOS 3.5 i 3.9 (Haage&Partners) si byli limitu originálního commodoráckého scsi.device vědomi a do nových systémů připravili scsi.device, které zvládne pracovat s disky o mnohem vyšší kapacitě. Jedná se o scsi.device ve verzích 43.34 (OS 3.5), 43.35 (OS 3.9) a 43.43 (OS 3.9 – BB2). Scsi.device v AmigaOS 3.5 a vyšších adresuje úložný prostor na disku za pomocí logických bloků (LBA). Nicméně v době vývoje AmigaOS 3.5 a 3.9 (rok 1999 a 2000) byl k dispozici standard pouze LBA28, který dokázal obsloužit 2^28 bloků, tedy 268 435 456 bloků × 512 bajtů na blok = 137 438 953 472 bajtů, tedy cca 137 GB, resp. 128 GiB (2^28bloků*512 bajtů/2^30). Na přelomu tisíciletí byla potřeba disků s vyšší kapacitou ještě dost vzdálená, takže se to neřešilo.
Kupodivu tento limit obsahovaly i WindowsXP (vydané v roce 2001). Až první Service pack (2002) tento limit posunul dále použitím LBA48.
128 PiB – LBA48
Pokud byste zamýšleli k amize připojit disk o kapacitě 128 GB a více, musíte povýšit scsi.device na verzi 43.45 nebo 44.20. Za verzí 43.45 stojí vývojáři Wilen, Hodges a Sauer, verzi 44.20 vytvořil Doobrey. Obě uvedená scsi.device zvládnou adresovat logické bloky v počtu 281 474 976 710 656 (2^48, tedy LBA48 ) a pokud budeme stále považovat blok za 512 bajtů, máme limit 144 115 188 075 855 872 bajtů, což je 144 PB, tedy 128 PiB. Tak jsem zvědav, kdy bude potřeba tento limit zase o kousek posunout .
Kromě upgrade scsi.device je potřeba použít moderní souborový systém. U takto velkých disků je potřeba vědět, že PFS3 resp. PDS3 má limit na partition 104 GiB, souborový systém SFS má limit 128 GiB na partition a FastFileSytem v AmigaOS 3.9 127 GiB na partition. Další limity naleznete zde.
Moje osobní zkušenost je taková, že scsi.device ve verzi 43.45 mi jede na všech standardních amigách bezchybně, scsi.device 44.20 se mi nepodařilo rozjet s procesorem 68060, s nižšími řadami jede dobře. Možná je problém jen 68060 knihovně, možné někde jinde. Pokud byste měli s scsi.device 44.20 na cpu 68060 zkušenost, podělte se o ni ve fóru nebo dole v komentářích. Ještě doplním, že použití scsi.device 44.20 by mělo být oproti 43.45 „papírově“ rychlejší.
Příkazy pro přístup k disku
- CMD_READ; CMD_WRITE – „originální“ příkazy
- HD_SCSICMD – Direct SCSI příkazy
- NSCMD_TD_READ64; NSCMD_TD_WRITE64 – NSD příkazy (Haage&Partners)
- TD_READ64; TD_WRITE64 – TD64 příkazy (Phase5)
Uvedené pořadí je mj. rozhodovacím algoritmem použití příkazů pro přístup k disku souborového systému PFS3.
CHS
CHS je zkratkou pro Cylinders, Heads and Sectors, česky stopa-hlava-sektor nebo válec-povrch-výseč. Tento způsob adresování disku má limit 16383 stop, 16 hlav a 63 sektorů a u moderních paměťových nosičů má význam pouze informační, protože se prakticky používá adresování LBA. V amize je to jediný způsob definice geometrie disku. Týká se disků všech velikostí. Nicméně je možné o obejít patchnutím scsi.device nebo použitím magického zařízení.
Přednosti souborového systému Professional File System 3 – PFS3
- Vývojář je stále aktivní (Toni Wilen);
- souborový systém lze nasadit do jakékoli amigy s kickstartem 1.3 a vyšším;
- souborový systém lze nasadit na jakoukoli amigu s procesorem Motorola 68000 a novějším;
- na disk s tímto souborovým systémem lze přistupovat nejenom základními příkazy cmd_read, cmd_write, ale i DirectSCSI přikazy, NSD a TD64. Tedy takovýto disk se dá přečíst, zapsat na něj i připravit jej v jakékoli verzi HDToolboxu včetně AmigaOS 4.1.
- velikost bootovacího partitionu 7,87 GiB bez nutnosti patchování, velikost ostatních partitionů 104 GiB
Velikost bootovacího partitonu a velikost souboru
Doporučená velikost bootovacího partitionu při použití FFS (verze 40.1 z WB 3.1) je cokoli do 2 GiB (2^32/2). Maximální velikost souboru při použití FFS může být 2 GiB. Doporučuji se těchto hodnot držet.
Při testování jsem přišel na to, že HDToolBox umožní při použití FFS vytvořit i 4 GiB partition (2^32 bajtu). Takto velký partition je plně funkční a je zcela bezpečné na něj ukládat data, ale Workbench 3.1 si se soubory o kapacitě nad 2 GiB neporadí.
Při použití PFS3 doporučuji vytvořit bootovací partition taktéž do velikosti 2 GiB (2^32/2), protože i PFS3 nedokáže pracovat se soubory o kapacitě 2 GiB a více. Vlastně žádný aktuálně existující souborový systém na amize nezvládá práci s 2> GiB partitiony. Při pokusu o zkopírování takto velkého souboru hodí Workbench i Directory Opus při použití PFS3 stejnou chybu jako FFS.
Takto velké soubory na amize pravděpodobně nikdy nepoužijete. Jestliže problém s velikostí souboru pomineme, při použití PFS3 můžete vytvořit a bezpečně používat bootovací partition až o velikosti 7,87 GiB (16383 cylindrů × 16 hlav × 63 sektorů × 512 bajtů v bloku). U takto velkého partitionu se pro práci s diskem používají DirectSCSI příkazy.
Pokud bychom patchnuli scsi.device na verzi podporující velké disky, mohl by být bootovací partition při použití PFS3 až o velikosti 104 GiB. Při bootování bez startup sekvence (nebo z diskety) by ale prostor nad 7,87 GiB nebyl dostupný, což by mohlo být docela dost nebezpečné, tuto možnost tedy nedoporučuji.
Jestliže bychom bootovali nikoli z scsi.device, ale z 1230scsi.device (ovladač pro SCSI Kit) nebo blizzppc.device (ovladač na BlizzarduPPC) a měli bychom moderní souborový systém, limity 4 GiB, resp. 7,87 GiB bychom taktéž nemuseli řešit.
Nicméně z historického pohledu byl na amize bootovací partition vždy malý. Kdysi, když byly disky o velikosti např. 40 MB, bylo obvyklé mít bootovací partition o velikosti např. 5 MB, tedy skutečně jen pro workbench a pár doplňujících utilit. Bylo taktéž obvyklé, že se programy ukládaly na samostatný partition, např. Work.
Na velkých discích (2 GB a více) nastavuji velikost bootovacího partitionu na 100 – 300 MB a stejně jej mám většinou téměř prázdný.
Low level format
Low level formát disku je způsob formátování disku bez použití mezivrstvy souborového systému. Jedná se o přímý přístup k disku přes jeho řadič a fyzické přemazání všech bloků na disku nulami. Opakem Low level formátu je High level format, kdy se o formátování disku „starají“ vrstvy operačního systému.
MaxTransfer
MaxTransfer je hodnota, která uvádí, kolik dat v jeden okamžik/cyklus dokáže amiga přenést přes IDE. O tok dat přes interní IDE standardních amig je hardwarově postaráno čipem Gayle (Amiga 600 a Amiga 1200) a čipem Bridgette (Amiga 4000). Tyto čipy jsou osmibitové, resp. zpracovávají příkazy o šířce 8 bitů. Z toho vychází i maximální hodnota přenosu dat v jednom cyklu. Je to součin nejvyššího osmibitového čísla (255) a velkosti bloku (512 bajtů), což je 130 560 bajtů. Po převodu této hodnoty do hexadecimální soustavy dostáváme notoricky známou hodnotu 1fe00. Nižší hodnoty zbytečně degradují datový tok, vyšší naopak vedou k chybnému čtení/zápisu souborů větších než 130 kB, vlastně co jen nad 130 kB, tak se „ořeže“ a ztratí.
Pozor, hodnotu MaxTransfer je vhodné nastavit správně podle používaného řadiče. Tedy jiné hodnoty maxtrasferu budou na řadičích do Amigy 500/2000 (AlfaPower, GVP, atd.) a jiné na moderních řadičích Blizzard SCSI Kit, či CyberStormu).
Mám MaxTranfer správně nastavený? Jeho hodnotu lze zjistit v HDToolBoxu nebo podobném programu. Hodnota MaxTransferu se dá vždy převézt z 16 soustavy na desítkovou (třeba na kalkulačce ve Windows) a porovnat si, kde se její hodnota nachází vůči doporučené 1fe00. Hodnota MaxTranferu musí být dělitelná velikostí bloku, tedy 512 bajty. Výsledek musí být celé číslo.
Pokud byste měli pochybnosti o správné hodnotě MaxTransferu, lze použít utilitu MaxTransTest (od Thomase Rappa), která aktuálně nastavený MaxTranfer otestuje na zkušebních souborech.
Někdy se může stát, že se zapisované soubory „kazí“ a nemusí to být špatně nastaveným MaxTransferem. Problém může být pamětech, disku, zavirování počítače atd. Příčin může být více.
Maska
DMA (Direct Memory Access) je způsob přístupu do paměti bez zatížení procesoru. DMA využívají mj. zákaznické čipy Lisa, Gayle (v A1200), Paula a další.
Správu přístupu do paměti má na starosti zákaznický čip Alice (v ne-aga amigách Agnus), který umožňuje všem zákaznickým čipům přístup do paměti Chip v lichých cyklech a procesoru v sudých cyklech. Alice je mj. DMA řadičem zákaznických čipů.
Paměť Chip i Fast je v aga amigách plně 32bitová, pracuje tedy s šířkou 2^32, nebo chcete-li FFFFFFFF.
Nastavením masky stanovujete limit pro diskové operace, tedy v které části paměti se bude nacházet buffer pro čtení a zápis dat.
Maska:
- 0x001FFFFF – nutí provádět diskové operace vprvních 2 097 151 bajtech, tedy v Chip paměti;
- 0x00FFFFFF – nutí provádět diskové operace v prvních 16 777 215 bajtech, tedy pouze ve 24 bitové paměti (toto se hodí pro většinu Zorro II řadičů v Amigách 500, 2000, 3000 atd., jejichž řadič neumí obsloužit více než 2^24 bajtu paměti);
- 0xFFFFFFFF – umožňuje provádět diskové operace v jakékoli části 32 bitové paměti;
- 0x7FFFFFFF – nutí provádět diskové operace v dolní půlce 32 bitové paměti 7FFFFFFF je polovina z FFFFFFFF.
Maska může končit:
- 0x…F – zarovnání na jakoukoli délku;
- 0x…E – zarovnání na 16, resp. 32 bitů (slovo, dlouhé slovo);
- 0x…C – zarovnání na 32 bitů (dlouhé slovo).
Doporučené hodnoty:
- 0xffffffff pro řadiče bez DMA řadiče;
- 0x7ffffffe pro jakékoli 32 bitové řadič
Pozor, nastavené hodnoty MaxTransferu a Masky můžou na jedné konfiguraci fungovat bez problémů, na jiné konfiguraci ale můžou způsobovat problémy. Příklad: připravený disk pod řadičem FastATA nemusí provádět korektní diskové operace po přesunu disku do Amigy 1200 v základu.
HDToolBox vs. HDInstTools
Disk je na amize možné připravit ve dvou programem. HDToolbox je program, který je součástí jakéhokoli workbenche, takže pokud máte nainstalovaný Workbench 2.0 a vyšší, najdete ho vždy v SYS:Tools.
Druhým často používaným programem vhodným pro přípravu disku je HDInstTools. Jedná se o velmi oblíbený a často používaný program.
Rozdíly mezi nimi jsou, ale v podstatě je jedno, který z uvedených programů na přípravu disku použijete. Oba jsou dostatečně kvalitní.
HDToolBox ve verzi 3.0 a 3.1 nedokáže správně vizualizovat velikosti disků a jejich partitionů nad 4GB, nicméně se jedná jen o vizuální záležitost. To že tedy v HDToolBoxu vidíte záporné hodnoty velikosti disků není s největší pravděpodobností problém.
Pozor: rozhodně nepřipravujte disk částečně v HDToolBoxu a částečně v HDInstTools. Oba programy používají jiné zarovnání diskový dat a dodatečná úprava např. velikosti partitionu v HDInstTools (pokud byla předtím geometrie disku načtena v HDToolBoxu) vede většinou k nenávratné ztrátě struktury partitionů a tím přístupu k jejich datům. Naopak (tedy načtení geometrie v HDInstTools a následná úprava disku v HDToolBoxu) toto nebezpečí hrozí stejně.
Pokud připravujete malý i velký disk (<4 GB, >4 GB) disk ve Workbenchi 3.1, je jedno, který z uvedených programů použijete. Pokud připravujete velký disk, je možné jej připravit v HDToolBoxu AmigaOS 3.5, AmigaOS 3.9 nebo i AmigaOS 4.1 FE.
Programy lze spustit z AmigaDosu příkazy:
- Hdtoolbox – HDToolBox si sám „ošahá“ dostupná zařízení vybere výchozí;
- Hdtoolbox scsi.device – tímto HDToolBoxu „vnucujeme“ načtení scsi.device;
- Hdtoolbox uaehf.device – tímto HDToolBoxu „vnucujeme“ načtení scsi.device;
- Hdinsttools – HDInstTools si „ošahá“ dostupná zařízení a vybere výchozí;
- Hdinsttools scsi.device – tímto HDInstToolsu vnucujeme načtení scsi.device;
- Hdinsttools uaehf.device –HDInstTools bohužel neumí pracovat s uaehf.device, v emulátoru jej použít nemůžete.
Smazání disku
Pokud máte v úmyslu v amize začít používat disk, který není nový a který jste již předtím používali třeba jako systémový nebo datový v počítači, nebo v případě SD či CF karet jste kartu měli ve foťáku, telefonu či jiném zařízení, je rozumné tento disk před použitím v amize smazat.
Asi nejjednodušší způsob smazání je klasický Rychlý formát. Ten na disku smaže jen bloky obsahující strukturu disku, tedy MBR, resp. na moderních discích GUID Partition Table.
Stejného výsledku lze dosáhnout "windowsím" příkazem DiskPart, který lze spustit z cmd. Jeho zápis je:
- DiskPart
- List disk
- Select disk X (kdy X je číslo disku, který chceme smazat)
- Clean (tento příkaz smaže jen MBR, resp. GPD, význam je tedy stejný jako při QuickFormátu). Příkaz Clean lze doplnit o parametr All, čímž se smažou nejenom zaváděcí bloky disku, ale všechny bloky. Smazání všech bloků je většinou zbytečné. Jednak je to časově zdlouhavé a u paměťových nosičů typu SD a CF karet to nemá význam
- Exit – odchod zdiskpartu
Odkazy:
Většina zde uvedených informací je průnikem níže zmíněných odkazů:
- Partitioning 16 GB Compact Flash card with WinUAE andPFS3
- CF / SD and large drives FAQ
- CF / SD and large drives FAQ
- IDE & Max Transfer
- Using a Compact Flash card on a600/a1200 IDE
- FAQ about the 4GB problem
- File System Limits
- a mých zkušeností.
Uvedené postupy vychází z mých zkušeností, vše jsem mnohonásobně prověřoval a testoval, nicméně pokud se do přípravy disku pustíte, činíte tak na vlastní nebezpečí 😉.