37 votos

¿Cómo puedo mover de la memoria virtual de intercambio de archivos en una unidad o partición diferente?

nota: Esta es una pregunta que yo pregunté en Superusuario hace un tiempo. Yo estoy re-publicarlo aquí porque creo que pertenece aquí.

Por defecto, Mac OS X almacena sus archivos de intercambio en /private/var/vm/. Me gustaría lugar el intercambio de archivos en una ubicación diferente. ¿Cómo se puede hacer?

26voto

Sam Merrell Puntos 1206

nota: copia de Superusuario:

Para las anteriores versiones de OSX, ver este hilo en forums.macosxhints.com.

El crédito va a dblu para explicar el uso de plutil, ZILjr para la introducción de la wait4path comando, y ekl para simplificar el todo por la eliminación de la necesidad de un intermedio de secuencia de comandos de shell.

Solución completa:

1. Abre el Terminal y hacer una copia de seguridad de Apple por defecto dynamic_pager.plist:

$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}

2. Convertir el plist de binarios sin formato XML:

$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist

3. Abra la convierte plist con el editor de texto de su elección. (Yo uso pico, ver dblu de la respuesta para un ejemplo de uso vim):

$ sudo pico -w com.apple.dynamic_pager.plist

Debe verse de la siguiente manera:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
    <key>EnableTransactions</key>
    <true/>
    <key>HopefullyExitsLast</key>
    <true/>
    <key>Label</key>
    <string>com.apple.dynamic_pager</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/sbin/dynamic_pager</string>
        <string>-F</string>
        <string>/private/var/vm/swapfile</string>
    </array>
</dict>
</plist>

4. Modificar el ProgramArguments array (líneas 13 a 18 años) el uso de la wait4path shell de comandos antes de lanzar dynamic_pager. Ver nota #1 para los detalles sobre por qué esto es necesario. En el ejemplo siguiente, mi partición se llama Swap, y he optado por poner el swapfiles en un directorio oculto en esa partición, llamado .vm asegúrese de que el directorio que especifique en realidad existe. El XML debe quedar como sigue:

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>/bin/wait4path /Volumes/Swap/ &amp;&amp;
/sbin/dynamic_pager -F /Volumes/Swap/.vm/swapfile</string>
</array>

5. Guardar el plist, y volver a la ventana de terminal. El uso de pico, los comandos sería:

<ctrl+o> to save the file
<enter>  to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit

6. Convertir la modificación plist de vuelta a binario:

$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist

7. Reinicie su Mac. Si llegas a tener problemas, cambie a detallado en el modo de inicio manteniendo pulsadas las teclas Comando-v inmediatamente después de que el sonido de arranque. Esto le permitirá ver todos los mensajes de inicio que aparece durante el inicio. Si se ejecuta en un problema peor (es decir, nunca se ve a la pantalla de inicio de sesión), mantenga pulsada la tecla Comando-s en su lugar. Esto hará que la computadora arranque en modo de usuario único (sin interfaz gráfica de usuario, sólo un símbolo del sistema) y permite restaurar la copia de seguridad de com.apple.dynamic_pager.plist que usted hizo en el paso 1.

8. Una vez que se inicia el equipo, el fuego de la Terminal y comprobar que el intercambio de archivos han sido movidos:

$ cd /Volumes/Swap/.vm
$ ls -l

Usted debe ver algo como esto:

-rw-------  1 someUser  staff  67108864 18 Sep 12:02 swapfile0

9. Borrar el antiguo swapfiles:

$ cd /private/var/vm
$ sudo rm swapfile*

10. La ganancia!

Nota 1

La modificación de los argumentos a dynamic_pager en el plist sin usar wait4path no siempre funciona, y cuando falla, lo hace en una forma espectacular en el silencio. El problema deriva del hecho de que dynamic_pager se inició muy temprano en el proceso de inicio. Si su partición de intercambio no ha sido todavía montado, cuando dynamic_pager es la primera carga (en mi experiencia, esto ocurre el 99% del tiempo), entonces el sistema falsos, a su manera a través. Se creará un enlace simbólico en /Volúmenes directorio que tiene el mismo nombre que la partición de intercambio, pero apunta de nuevo a los predeterminados de archivo de intercambio de localización (/private/var/vm). Luego, cuando su partición de intercambio de los montes, se le dio el nombre Swap 1 (o YourDriveName 1). Usted puede ver el problema con la apertura de la Terminal y el listado de los contenidos de su /Volúmenes directorio:

$ cd /Volumes
$ ls -l

Usted verá algo como esto:

drwxrwxrwx  11 yourUser  staff   442 16 Sep 12:13 Swap -> private/var/vm
drwxrwxrwx  14 yourUser  staff     5 16 Sep 12:13 Swap 1 
lrwxr-xr-x   1 root      admin     1 17 Sep 12:01 System -> /

Tenga en cuenta que este error puede ser muy difícil de detectar. Si se va a revisar para la swapfiles como muestro en el paso 12, usted todavía podría verlos! El enlace simbólico haría parecer como si su swapfiles se había movido, aunque en realidad ellos estaban siendo almacenados en la ubicación predeterminada.

Nota 2

Originalmente fui incapaz de conseguir que esto funcione en Snow Leopard porque com.apple.dynamic_pager.plist se almacenan en formato binario. He hecho una copia del archivo original y lo abrió con Propiedad de Apple Editor de la Lista (disponible con Xcode) con el fin de hacer los cambios, pero este proceso agregó algunos atributos extendidos para el archivo plist que causó que el sistema ignore y sólo utilizar los valores predeterminados. Como dblu señalado, el uso de plutil a convertir el archivo XML simple funciona como un encanto.

Nota 3

Usted puede comprobar la aplicación de Consola para ver los mensajes que dynamic_pager_init echos a la pantalla. Si usted ve las líneas siguientes se repiten una y otra vez, hay un problema con la instalación. Me encontré con estos mensajes porque se me olvidó crear el '.vm' en el directorio que me especificado en dynamic_pager_init.

com.apple.launchd[1]  (com.apple.dynamic_pager[176]) Exited with exit code: 1
com.apple.launchd[1]  (com.apple.dynamic_pager) Throttling respawn: Will start in 10 seconds

Cuando todo está funcionando correctamente, puede ver el mensaje de arriba un par de veces solo, y entonces no hay más de la "Limitación de regeneración" de los mensajes. Esto significa que el sistema tenía que esperar para que la partición de la carga, pero al final fue un éxito.

Excluye la ruta de acceso de la Máquina del Tiempo

En OS X 10.7 y más tarde, usted puede hacer esto con tmutil. Ejemplo:

sudo tmutil addexclusion -p /Volumes/Swap/.vm

Por ejemplo, para revisar el resultado:

tmutil isexcluded /Volumes/Swap && tmutil isexcluded /Volumes/Swap/.vm

Si el volumen que se utiliza para el intercambio no necesita ser indexados

Uso mdutil. Ejemplo, apagar, a continuación, borrar la tienda:

sudo mdutil -i off /Volumes/Swap && sudo mdutil -E /Volumes/Swap

5voto

aramis Puntos 111

He sido incapaz de establecer un sistema permanente de inicio de la solución, ya que 10.10 ya no utiliza /etc/.rc en el arranque, y la com.apple.dynamic_pager.plist método ha fallado.... sin embargo...

sudo mkdir /Volumes/Swap/s
sudo chmod 755 /Volumes/Swap/s
sudo sysctl vm.swapfileprefix=/Volumes/Swap/s

cambia el almacenado prefijo según lo informado por

sysctl vm

para la duración de la sesión, y se sobrevive el reinicio.

esto podría ser envuelto como un comando de unix en un archivo de texto:

$/bin/sh
sysctl vm.swapfileprefix=/Volumes/Swap/s

y ejecutar al inicio de sesión.

-2voto

BKE Puntos 1

Solución Simple:

http://www.macupdate.com/app/mac/10771/swap-relocator

SwapRelocator 1.1.2 funciona muy bien en Maverick!

Uso (por ejemplo) Tinker Herramienta del Sistema para dejar de montaje de volúmenes antes de log-in, que resuelve el único problema que me encontré.

(Gracias Felipe, por fin puedo mover el swap desde el inicio duplicado el volumen de rayas volumen de caché (todos SSD))

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X