RAMDisk + SSD = RAID 1? Starten Sie OSX

1

Ist es möglich, RAID 1 mit RAMDisk und SSD in OSX zu erstellen?

Etwas wie: Mac booten, OSX-Partition wird von SSD in RAMDisk geladen. Booten Sie auf RAMDisk und verwenden Sie es wie jedes andere Systemlaufwerk. Aufgrund von RAID 1 (--write-mostly / write-behind) bleibt alles, was auf der RAMDisk ausgeführt wird, auf der SSD erhalten. Wenn ich den Mac ausschalte, bleibt alles auf der SSD und kann beim nächsten Start wieder geladen werden ...

Für eine bessere Erfahrung können die am häufigsten verwendeten Anwendungen auf der OSX-System-Partition (SSD) installiert werden, die auch auf der RAMDisk verfügbar sein wird.

Natürlich wird es eine zweite "Daten" -Partition auf der SSD für alle anderen Sachen geben.

Wie kann ich das beschriebene Setup erreichen - ist es überhaupt mit OSX möglich? Welchen Bootloader kann ich verwenden (Grub?)?

mfuesslin
quelle
Ähm ... wie groß hast du vor, die Ramdisk zu haben? Ramdisk ist nur so groß wie Ihr RAM. Die kleinste Größe der Mac SSD ist 128 GB, es sei denn, Sie planen 128 GB RAM? Ich bezweifle, dass das, was Sie wollen, überhaupt möglich ist. Und wenn Sie darüber nachdenken, bedeutet RAID1 auf RAMDISK und SSD, dass das RAID-Set nur so schnell arbeiten kann wie die langsamste Komponente, nämlich die SSD. Sie erhalten keinen Leistungsgewinn, selbst wenn dies überhaupt möglich ist.
Darius
Ich dachte, ich kann ein Software-Raid verwenden (weiß nicht, ob ich nur bestimmte Partitionen in einem Hardware-Raid verwenden kann), um nur eine Partition mit installiertem OSX + einigen Apps (ca. 30 GB?) Zu verwenden. Ich habe 64GB Ram und würde 30GB für RAMDisk verwenden (in einem RAID 1 mit SSD-Partition gleicher Größe). Eine andere Möglichkeit könnte darin bestehen, eine kleine 32-GB-SSD dafür zu kaufen. Mit "--write-mostly / --write-behind" ist es möglich, die Datenreplikation etwas zu verzögern (um der ssd etwas Zeit zu geben, um mit der Ramdisk fertig zu werden).
mfuesslin
1
Technisch könnte dies möglich sein. Wenn Sie zwei 'Laufwerke' haben (eine Ramdisk und eine Partition auf der SSD - Sie müssen nicht den gesamten Speicherplatz der SSD nutzen). Es kann jedoch sinnvoller sein, den Standardtrick für dauerhafte RAM-Disks zu verwenden. Akak bootet, kopiert (automatisch) Daten auf die Ramdisk. Und beim Herunterfahren haben Sie eine Kopie zurück zum dauerhaften Speicher.
Hennes
@Hennes - so gehe ich mit einem ziemlich thrashigen Cache für eine Anwendung um, die ich verwende. Erstellen Sie eine RAMDisk und kopieren Sie sie beim Start. Starten Sie die App. Schreiben Sie beim Beenden zurück in einen doppelten Cache-Ordner und tauschen Sie nach dem sicheren Kopieren die Ordner aus und löschen Sie den älteren.
Tetsujin
@Hennes - Aber dann bin ich nicht in der Lage, die OSX-Umgebung zu beschleunigen ... Ok, es ist schon schnell genug, aber es wäre trotzdem schön, wenn die Dinge sofort geöffnet würden. Aber vielleicht kann ich nach dem Booten eine Ramdisk laden und dann die am häufigsten verwendeten Apps kopieren und einen Symlink zu ihren Anhängern auf der Ramdisk erstellen, um sie schnell zu starten? Aber dann muss spotlight neu indizieren, damit ich die "richtige" Safari eröffnen kann (im RAM und nicht auf meiner SSD) ... mhm ... irgendwelche Tricks, wie dies ein automatischer Workflow sein könnte? Sollte ich die ssd-safari in einen nicht komprimierenden Reißverschluss stecken, damit sie nicht mehr im Rampenlicht sichtbar ist (also nur in der RAM-Version?)
mfuesslin

Antworten:

0

Aus den Kommentaren geht hervor, wie ich ein RAMDisk-Setup durchführe und zurückkopiere.

Es ist nicht die vollständige Struktur und wird daher nicht kompiliert [es werden viele Deklarationen fehlen, da ich eine ganze Reihe anderer Strukturen habe, bevor ich zu diesem Teil komme, die nicht generisch genug sind, um kopiert zu werden] , aber gibt die Routinen zum Erstellen, Kopieren und Zurückkopieren. Speichern Sie es als Anwendung und starten Sie es anstelle Ihrer App.

Es ist auch nicht vorgesehen, dass Ihre App sie verwenden soll. Für mich ist dies eine separate Struktur, die nur die Einstellungen der App und einige —settingsAnweisungen beim Start verwendet.

Es wird auch festgelegt, um zu decken, wenn eine Nichtübereinstimmung auftritt - das liegt daran, dass ich mehrere Versionen dieser bestimmten App habe und Caches nicht gemischt werden sollten. Sie können diesen Abschnitt wahrscheinlich weglassen.

-- RAM Disk setup
        set copying to 0
        if not {exists disk RAMDisk} then
            set VolumeName to RAMDisk
            set SizeInMB to 1024
            -- can choose size using this dialog
            --display dialog "RAM Disk Size:" default answer SizeInMB buttons {"OK", "Cancel"}      
            set NumSectors to ((2 * 1024 * SizeInMB))
            set DeviceName to do shell script "hdid -nomount ram://" & NumSectors
            tell current application to do shell script "diskutil eraseVolume 'HFS+' '" & VolumeName & "' " & DeviceName        
            set foundDisk to false
            repeat until (foundDisk = true)
                if exists disk RAMDisk then
                    foundDisk = true
                    delay 1
                    -- do copy...   
                    duplicate full_path to disk RAMDisk
                    exit repeat
                else
                    delay 1 -- waiting for RAM disk to appear, if it's slow
                end if
            end repeat -- end disk wait
        else -- if RAMDisk exists already           
            set p to (folders of disk RAMDisk)
            if (exists folder cache_name of disk RAMDisk) then
                if p is {} then -- disk's empty
                    duplicate full_path to disk RAMDisk
                end if
            else -- if not (exists folder cache_name of disk RAMDisk) then
                display alert "RAM Disk contents are from a different version.\nErasing first..." giving up after 4
                try --deletes entire contents of RAMDisk, doesn't throw to Trash
                    --Folder in Trash can still cause "disk full" error.
                    --'quoted form' in shell scripts (unix) enables spaces in file names (ie RAMDisk name)
                    tell current application to do shell script "rm -rf Volumes/" & quoted form of RAMDisk & "/"
                end try
                duplicate full_path to disk RAMDisk
                delay 2
            end if -- end cache name check
        end if -- end RAMDisk check

(*at this point, launch your app, the script will sit & wait for it to quit*)

-- after app quits, copy back & tidy up
        display dialog "Quitting or just restarting 'app'?" buttons {"Quitting", "restarting"} ¬
            default button "Quitting" giving up after 30
        set thebutton to button returned of result as string
        if thebutton is "Quitting" then

            set toCopy to true -- to test for copyback
            if folder backup_location exists then
                display dialog "Safety folder already exists\nDelete & continue copy-back or just quit?" buttons {"Delete", "Just Quit"} default button "Delete" giving up after 30
                set thebutton to button returned of result as string
                if thebutton is "Delete" then
                    delete folder backup_location
                else
                    set toCopy to false -- will bypass copyback
                end if
            end if
            if toCopy is true then
                -- set a backup folder name before copying
                set name of folder full_path to cache_name & " - old"
                delay 1
                duplicate contents of folder cache_name of disk RAMDisk to folder custom_caches_base_path
                delay 1
                delete folder backup_location
            end if
        end if -- end quit sequence
Tetsujin
quelle