Terminem „RamDysk” określamy przedzielenie określonego obszaru pamięci operacyjnej RAM z zamountowanie go jako dysku. Innymi słowy mamy dostęp do nowego dysku, który nie odwołuje się do fizycznego nośnika tylko bezpośrednio do pamięci RAM. Szybkość takiego dysku oczywiście nie ma konkurencji, gdyż od pamięci RAM szybsza jest tylko pamięć podręczna procesora 🙂
Głównym celem tworzenia RAMDYSKu w systemie jest przeniesienie plików tymczasowych na których często wykonuje się operacje zapisu i odczytu. Szczególne znaczenie ma to w przypadku dysków SSD, dzięki temu zwiększamy żywotność dysku SSD jak i znacznie przyśpieszamy pracę programów, które korzystają z plików tymczasowych.
Wielkość RAMDYSKu uzależnione jest od ilości pamięci RAM jaką dysponujemy, jeśli mamy zbyt mało pamięci RAM tworzenie RAMDYSKu może nie być zalecane. W przypadku OS X absolutne min. to 4GB RAM, od 8GB w górę możemy już sobie pozwolić na o wiele więcej 🙂
UTWORZENIE RAMDYSK`u
W systemie OS X nie musimy zaopatrywać się w zewnętrzne oprogramowanie, program do utworzenia RAMDYSKu znajduje się już na naszym systemie, programem tym jest konsolowy hdutil.
Dla przykładu tworzymy RamDysk o pojemności 768MB:
diskutil erasevolume HFS+ "RamDisk" `hdiutil attach -nomount ram://1572864`;
Jedynymi zmiennymi to nazwa naszego RAMDYSKu ( podajemy ją w cudzysłowie po nazwie określającej typ systemu plików: HFS+ ) a na samym końcu nadajemy wartość określającą wielkość naszego RAMDYSKu. W powyższym przykładzie zostanie utworzony ( zamountowany ) dysk o nazwie RamDisk o wielkości 768MB. Jak szybko i łatwo określić wielkość w MB ? Musimy pomnożyć wartość w MB przez 2048, np.: 768 * 2048 = 1572864 stąd taka liczba podana w poleceniu hdiutil.
Niestety po restarcie musimy ponownie ręcznie utworzyć RAMDYSK, aby zautomatyzować proces trzeba napisać prosty skrypt w bashu.
AUTOMATYCZNE TWORZENIE RAMDYSK`u
W pierwszej kolejności należy utworzyć plik w którym zapiszemy nasz skrypt, nazwiemy go: ramdisk.sh
sleep 10 if [ ! -e "/Volumes/RamDisk" ]; then diskutil erasevolume HFS+ "RamDisk" `hdiutil attach -nomount ram://1500000`; fi
Skrypt uruchamia się z 10-sekundowym opóźnieniem, zmiana parametru na mniejszy może spowodować, iż RamDysk się nie utworzy, gdyż nie będzie miał odpowiednich uprawnień do utworzenia katalogu. Po prawidłowym utworzeniu katalog RamDisk będzie odpowiednie uprawnienia ( katalog jest tworzony automatycznie w katalogu /Volumes/ )
Właściciel katalogu RamDisk to: [Uzytkownik]:staff z uprawnieniami: drwxrwxr-x czyli 775.
Mamy już nasz plik ze skryptem, teraz należy powiadomić system, aby był uruchamiany przy starcie systemu.
Tak więc przystępujemy do utworzenia pliku startowego w katalogu: /Library/LaunchDeamons/, nasz nowy plik będzie się nazywał: com.user.ramdisk.plist słowo „user” możemy zastąpić naszą nazwą użytkownika. Właściciel pliku to root:wheel także należy utworzyć go przez sudo.
Tworzenie pliku właściwości: com.user.ramdisk.plist:
Zawartość pliku powinna przedstawiać się tak jak poniżej:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.user.ramdisk</string> <key>ProgramArguments</key> <array> <string>/bin/sh</string> <string>/Users/USER/Documents/ramdisk.sh</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
Modyfikacja pliku w naszym przypadku będzie się ograniczać tylko do dwóch właściwości: Label z nazwą pliku uruchamiającego: com.user.ramdisk bez rozszerzenia plist i ciąg ze ścieżką prowadzącą do pliku z naszym skryptem tworzącym RAMDYSK.
<b><string>com.user.ramdisk</string></b> - nazwa pliku uruchamiającego bez rozszerzenia plist <b><string>/Users/USER/Documents/ramdisk.sh</string></b> - ścieżka do naszego skryptu tworzącego RamDysk.
Testowane na systemach OS X: Lion, Mountain Lion, Mavericks.