Nota: Essa é uma pergunta que eu fiz no SuperUser há pouco tempo. Estou postando novamente aqui porque acho que pertence aqui.
Por padrão, o Mac OS X armazena seus arquivos de permuta /private/var/vm/
. Eu gostaria de colocar os arquivos de troca em um local diferente. Como pode ser feito?
/private/var/vm/sleepimage
no Superusuário: Devo vincular meu diretório / private / var / vm a outro volume no OS X Lion? (20/09/2011) - há uma resposta que recomenda não usar o mesmo volume separado para arquivos de troca externos e imagem de sono.Respostas:
Nota: copiado do SuperUser:
Para versões mais antigas do OSX, consulte este tópico em forums.macosxhints.com.
O crédito é atribuído ao dblu por explicar o uso de
plutil
, ZILjr por introduzir owait4path
comando e ekl por simplificar tudo, eliminando a necessidade de um shell script intermediário.Solução completa:
1. Abra o Terminal e faça uma cópia de backup do dynamic_pager.plist padrão da Apple:
2. Converta o plist de XML binário em XML simples:
3. Abra o plist convertido com o seu editor de texto de sua escolha. (Eu uso
pico
, veja a resposta do dblu para um exemplo usandovim
):Deve ter a seguinte aparência:
4. Modifique a matriz ProgramArguments (linhas 13 a 18) para usar o
wait4path
comando shell antes de iniciar o dynamic_pager. Veja a nota 1 para detalhes sobre por que isso é necessário. No exemplo a seguir, minha partição é chamadaSwap
e eu escolhi colocar os arquivos de troca em um diretório oculto nessa partição, chamada.vm
certifique-se de que o diretório que você especificar realmente exista . O XML deve ter a seguinte aparência:5. Salve o plist e retorne ao prompt do terminal. Usando
pico
, os comandos seriam:6. Converta o plist modificado novamente em binário:
7. Reinicie o Mac. Se você tiver problemas, alterne para o modo de inicialização detalhado, mantendo pressionada a tecla Command-v imediatamente após o toque da inicialização. Isso permitirá que você veja todas as mensagens de inicialização que aparecem durante a inicialização. Se você tiver problemas ainda piores (ou seja, nunca verá a tela de login), mantenha pressionada a tecla Command-s. Isso inicializará o computador no modo de usuário único (sem interface gráfica do usuário, apenas um prompt de comando) e permitirá restaurar a cópia de backup de com.apple.dynamic_pager.plist que você fez na etapa 1.
8. Depois que o computador inicializar, inicie o Terminal e verifique se os arquivos de troca foram realmente movidos:
Você deve ver algo assim:
9. Exclua os arquivos de troca antigos:
10. Lucro!
Nota 1
Modificar os argumentos para dynamic_pager no plist sem usar
wait4path
nem sempre funciona e, quando falha, ocorre de maneira espetacularmente silenciosa. O problema decorre do fato de o dynamic_pager ser iniciado muito cedo no processo de inicialização. Se sua partição de troca ainda não foi montada quando o dynamic_pager é carregado pela primeira vez (na minha experiência, isso acontece 99% do tempo), o sistema irá falsificar seu caminho. Ele criará um link simbólico no diretório / Volumes que tem o mesmo nome que sua partição de troca, mas aponta para o local padrão do arquivo de troca (/ private / var / vm). Então, quando sua partição de troca real for montada, ele receberá o nomeSwap 1
(ouYourDriveName 1
). Você pode ver o problema abrindo o Terminal e listando o conteúdo do seu diretório / Volumes:Você verá algo assim:
Observe que essa falha pode ser muito difícil de detectar. Se você fosse procurar os arquivos de troca como mostro na etapa 12, ainda os veria ! O link simbólico faria parecer que seus arquivos de troca foram movidos, mesmo que eles estivessem realmente sendo armazenados no local padrão.
Nota 2
Inicialmente, não consegui fazer isso funcionar no Snow Leopard porque o com.apple.dynamic_pager.plist estava armazenado em formato binário. Fiz uma cópia do arquivo original e abri-o com o Editor de lista de propriedades da Apple (disponível com o Xcode) para fazer alterações, mas esse processo adicionou alguns atributos estendidos ao arquivo plist, o que fez com que o sistema o ignorasse e apenas usasse os padrões . Como o dblu apontou, usar
plutil
para converter o arquivo em XML simples funciona como um encanto.Nota 3
Você pode verificar o aplicativo Console para ver as mensagens que dynamic_pager_init ecoam na tela. Se você vir as seguintes linhas repetidas vezes sem conta, há um problema com a instalação. Encontrei essas mensagens porque esqueci de criar o diretório '.vm' especificado em dynamic_pager_init.
Quando tudo estiver funcionando corretamente, você poderá ver a mensagem acima apenas algumas vezes e, em seguida, não haverá mais as mensagens "Aceleração do reaparecimento". Isso significa que o sistema precisou esperar o carregamento da partição, mas no final foi bem-sucedida.
Excluir o caminho do Time Machine
No OS X 10.7 e posterior, você pode fazer isso com o tmutil . Exemplo:
sudo tmutil addexclusion -p /Volumes/Swap/.vm
Para esse exemplo, para revisar o resultado:
tmutil isexcluded /Volumes/Swap && tmutil isexcluded /Volumes/Swap/.vm
Se o volume usado para troca não precisar ser indexado
Use mdutil . Exemplo, para desligar e apagar a loja:
sudo mdutil -i off /Volumes/Swap && sudo mdutil -E /Volumes/Swap
fonte
;)
Não consegui estabelecer uma solução permanente de inicialização do sistema, pois a 10.10 não usa mais o /etc/.rc na inicialização e o método com.apple.dynamic_pager.plist falhou .... no entanto ...
altera o prefixo armazenado conforme relatado por
pela duração da sessão e ela sobrevive à reinicialização.
isso pode ser agrupado como um comando unix em um arquivo de texto:
e execute no login.
fonte
Solução simples:
http://www.macupdate.com/app/mac/10771/swap-relocator
SwapRelocator 1.1.2 funciona muito bem no Maverick!
Use (por exemplo) o Tinker Tool System para permitir a montagem de volumes antes do login, que resolve o único problema que encontrei.
(Obrigado Filippo, finalmente posso mover a troca do volume de inicialização espelhado para um volume de cache distribuído (todo SSD))
fonte