Chytré externí disky, které se umí vypnout v případě, že je nemáte připojené k počítači vypadají na prospektech velmi dobře. (Mluvíme zejména o řadě My Book od Western Digital) Nicméně Mac OS X s nimi má evidetně problém nebo disky mají problém s Mac OS X. Těžko říci na čí straně je chyba. Osobně bych se přikláněl spíše k problému na straně Western Digital a nikoliv Apple.
Jádro pudla je totiž v automatickém uspávání disku. Elektronika disku totiž sama určuje, kdy je třeba uspat disk a občas(= v závisloti na tom, jak moc disk používáte) a uspí disk tak, že o tom systému nic neřekne. Systém při pokus o přístup k disku zjistí, že disk není přístupný a 1. disk automaticky odpojí s hláškou Device removal, 2. sekne se dokud není odpojen disk nebo si hodně dlouho nepočkáte a pak odpojíte disk. Algorytmus pro uspání disku je jednoduchý: Pokud se 10 minut na disk nešáhlo, bude uspán.
Z toho hned vyplývá jedno důležité řešení, pokud můžete, nepoužívejte externí disky, které mají v sobě zabudovanou "inteligenci" případě "úsporu energie". Ušetříte si spoustu starostí. Pokud i přes to se nepodaří vyřešit problém tímto způsobem, protože disk již máte doma. Zkuste druhou možnost.
Zjistěte si, jestli není k dispozici aktualizace firmware disku. Konkrétně pro My Book Studio vyšla aktualizace Firmware, který mimo jiné řeší i problémy s nedostupností disku. (Viz odkazy dole u článku)
Pokud se na vás výrobce vykašlal, existuje ještě jedno řešení. Není nijak úžasné, ale alespoň relativně jednoduché. Princip tohoto řešení je v tom, že "přinutí" inteligenci disku, aby přehodnotila uspání disku díky tomu, že se na disk neustále zapisuje. Toho nejsnáze dostaneme tím, že se budeme "dotýkat" jednoho souboru a nejlépe skriptem.
Skript nemusí spouštět jako root, i když bych to doporučil. Obsah skriptu je jednoduchý, jen misto VELKYDISK doplňte jméno vašeho disku:
#!/bin/sh
if [ -d /Volumes/VELKYDISK/ ]; then
touch /Volumes/VELKYDISK/.hiddentouchfile
fi
Jelikož si skript přeji spouštět jako root umístím ho do /var/root/ adresáře pod jménem disknosleep.sh
Příkazem sudo crontab -e si spustím editaci a kde napíši:
*/5 * * * * /var/root/disknosleep.sh
Tím se každých 5 minut spustí skript, který se dotkne souboru na disku. Může se stát, že frekvenci budete potřebovat upravit, protože 5 minut je příliš dlouhý interval. V tom případě změňte číslo 5 na nějaké menší číslo (nikoliv však nulu!). Podotýkám, že hvězdičky zde mají svůj význam a je nutné je zachovat. Pokud si chcete přečíst něco o cronu, podívejte se například na stránky Používáme Linux Cron (viz níže). Jestliže nechci skript spouštět jako root, můžete napsat příkaz crontab -e čímž budete spouštět skript jako aktuální uživatel.