Jak zamontować dysk RAM podczas uruchamiania?


6

Próbuję zamontować dysk RAM podczas uruchamiania za pomocą tego:

/Users/Aram/Development/Tools/ramdisk.sh

diskutil erasevolume HFS+ "RamDisk" `hdiutil attach -nomount ram://800000`

com.aram.ramdisk.plist

<?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.aram.ramdisk</string>
        <key>ProgramArguments</key>
        <array>
            <string>/bin/sh</string>
            <string>/Users/Aram/Development/Tools/ramdisk.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>

A następnie działa:

  • sudo chown root:wheel /Library/LaunchDaemons/com.aram.ramdisk.plist
  • sudo launchctl load -w /Library/LaunchDaemons/com.aram.ramdisk.plist

Ale dostaję je w konsoli:

1/08/12 1:29:25.982 PM fseventsd[64]: could not open <</Volumes/RamDisk/.fseventsd/fseventsd-uuid>> (No such file or directory)
1/08/12 1:29:25.982 PM fseventsd[64]: log dir: /Volumes/RamDisk/.fseventsd getting new uuid: 102D7293-F1F1-4640-AA50-D547C365339F

1/08/12 1:29:24.561 PM sudo[1193]:     Aram : TTY=ttys000 ; PWD=/Library/LaunchDaemons ; USER=root ; COMMAND=/bin/launchctl load -w /Library/LaunchDaemons/com.aram.ramdisk.plist

1/08/12 1:40:17.052 PM com.apple.launchd[1]: (com.aram.ramdisk) Throttling respawn: Will start in 8 seconds

Działa, jeśli ustawię KeepAlive na true, ale wtedy tworzy dysk RAM co 10 sekund.

Czy istnieje sposób na opóźnienie skryptu o 10 sekund przed uruchomieniem?


Jakiej wersji OSX używasz?
— de_an777

Mountain Lion ...
— Aram Kocharyan

Odpowiedzi:


2

Możesz opóźnić wykonanie polecenia diskutil w skrypcie ramdisk.sh, przygotowując wiersz sleep 10.

Tryb uśpienia zawiesza wykonanie na pewien czas, w sekundach.

Twój nowy ramdisk.sh staje się:

sleep 10
diskutil erasevolume HFS+ "RamDisk" `hdiutil attach -nomount ram://800000`

Aktualizacja nr 1: uruchamianie ramdisk.sh co 10 sekund i tworzenie dysku RAM tylko wtedy, gdy go nie ma, jest obejściem. Zobacz ten przykładowy skrypt dla takiej kontroli warunkowej:

sleep 10
RD=RamDisk
if [ ! -e "/Volumes/$RD" ];  then
    diskutil erasevolume HFS+ "$RD" `hdiutil attach -nomount ram://800000`
fi

Twój błąd może być spowodowany, ponieważ / Volumes nie jest już tworzone w procesie rozruchu w momencie uruchomienia uruchomionego zadania. Dlatego możesz najpierw sprawdzić obecność / Volumes, zanim jeszcze wykonasz skrypt, na przykład:

if [ -e "/Volumes" ];  then
    RD=RamDisk
    if [ ! -e "/Volumes/$RD" ];  then
        diskutil erasevolume HFS+ "$RD" `hdiutil attach -nomount ram://800000`
    fi
fi

A gdy tworzenie się powiedzie, możesz chcieć zwolnić com.aram.ramdisk.plist od launchctl do następnego uruchomienia.


2
Może to być dobre zastosowanie dla QueueDirectoriessłowa kluczowego w uruchomionej konfiguracji (aby upewnić się, że /Volumesjest dostępne)
— nohillside

Mam ten sam problem ze skryptem tworzenia dysku RAM. I ten sam problem, działa tylko wtedy, gdy dodam sleep 10na początku. Chciałbym dowiedzieć się dokładnie, dlaczego sen jest potrzebny. Próbowałem sprawdzić / Volumes, ale jest tam od samego początku, więc musi to być coś innego.
— l008com

0

Korzystając ze świetnej odpowiedzi Pro Backup, zestawiłem to i działa:

#!/bin/bash
NAME="RamDisk"
while [ ! -d /Volumes ]
do
    echo "waiting..."
    sleep 2
done
if [ ! -d /Volumes/$NAME ]; then
    echo "creating ramdisk..."
    diskutil erasevolume HFS+ $NAME `hdiutil attach -nomount ram://800000`
fi

Potrzebowałem tego, aby moja przeglądarka nie buforowała mojego dysku SSD, więc usunąłem to:

rm -rf /Users/Aram/Library/Caches/Google/Chrome/Default

I utworzył dowiązanie symboliczne:

ln -s /Volumes/RamDisk/ /Users/Aram/Library/Caches/Google/Chrome/Default

EDYTOWAĆ:

Właśnie dodałem skrypt jako aplikację startową w ustawieniach użytkownika na moim komputerze Mac, zawsze działa, chociaż pozostawia terminal otwarty. Nic wielkiego dla mnie.


Dlaczego nie chcesz, aby Twoja przeglądarka buforowała dysk SSD? Aby uzyskać więcej miejsca?
— Shane Hsu

1
Głównie w celu zmniejszenia drobnych zapisów przy każdej zmianie pamięci podręcznej. Potrzebuję pamięci podręcznej, aby przyspieszyć przeglądanie, i używam komputera przez cały dzień, więc posiadanie go w pamięci RAM nie ma żadnego innego wpływu niż ograniczenie użycia dysku. Możliwe, że różnica w oczekiwanej długości życia nie wpłynie na mnie, ale przez wiele lat może być różnica.
— Aram Kocharyan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.