1

Можно ли создать RAID 1 с RAMDisk и SSD в OSX?

Что-то вроде: Boot Mac, OSX-Partition будет загружаться с SSD в RAMDisk. Загрузитесь с RAMDisk и используйте его как любой другой системный диск. Из-за RAID 1 (--write-главным образом /write-behind) все, что делается на RAMDisk, будет сохранено на SSD. Так что, если я выключу Mac, все будет сохранено на SSD и может загрузиться снова при следующем запуске ...

Для лучшего опыта наиболее часто используемые приложения могут быть установлены на том OSX-системном разделе (SSD), который также будет доступен на RAMDisk.

Конечно, на SSD будет второй раздел "data" для всего остального.

Как мне выполнить описанную настройку - возможно ли это с OSX? Какой загрузчик я могу использовать (Grub?)?

1 ответ1

0

Из комментариев, вот косточки того, как я делаю настройку RAMDisk и копирую обратно.

Это не полная структура, поэтому не будет компилироваться в том виде, в каком она есть [будет много пропущенных объявлений, так как у меня есть целый набор других структур, прежде чем я доберусь до этого бита, которые не являются достаточно общими, чтобы их стоило копировать] , но дает процедуры для создания, копирования и копирования обратно. Сохраните его как приложение и запустите его вместо вашего приложения.

В нем также нет положений, предписывающих вашему приложению использовать его - для меня это отдельная структура, использующая только prefs и некоторые инструкции —settings при запуске.

Он также покрывает случаи несоответствия - это потому, что у меня есть несколько версий этого конкретного приложения, и кэши не должны смешиваться. Вы, вероятно, можете оставить этот раздел вне.

-- 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .