RAMDisk + SSD = Raid 1? Bota OSX

1

É possível criar RAID 1 com RAMDisk e SSD no OSX?

Algo como: Boot Mac, OSX-Partition será carregado a partir do SSD no RAMDisk. Inicialize no RAMDisk e use-o como qualquer outra unidade de sistema. Por causa do RAID 1 (--write-mostly / write-behind) qualquer coisa feita no RAMDisk será persistida no SSD. Então, se eu desligar o Mac, tudo será mantido no SSD e poderá ser carregado novamente na próxima inicialização ...

Para uma melhor experiência, os aplicativos mais usados podem ser instalados na partição do sistema OSX (SSD), que também estará disponível no RAMDisk.

É claro que haverá uma segunda partição de "dados" no SSD para todas as outras coisas.

Como posso conseguir a configuração descrita - é possível até mesmo com o OSX? Qual Bootloader posso usar (Grub?)?

    
por mfuesslin 03.03.2016 / 12:32

1 resposta

0

A partir de comentários, aqui estão os ossos de como eu faço uma configuração do RAMDisk & copiar de volta.

Não é a estrutura completa, então não será compilada como está [haverá muitas declarações ausentes, já que eu tenho um conjunto de outras estruturas antes de chegar a este ponto, que não são genéricas o suficiente para valer a pena copiando em], mas fornece as rotinas para criação, copiar & copiar de volta. Salve como um aplicativo & inicie isso em vez do seu aplicativo.

Também não há nenhuma provisão nele para dizer ao seu aplicativo para usá-lo - que, para mim, é uma estrutura separada usando apenas os prefs & algumas instruções —settings no lançamento.

Ele também está definido para cobrir se ocorrer uma incompatibilidade - porque tenho várias versões desse aplicativo em particular, & caches não devem ser misturados. Você provavelmente pode deixar essa seção.

-- 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
    
por 03.03.2016 / 13:24