1 votos

"Ralentizar" el arranque hasta que todos los dispositivos estén disponibles

Estoy usando OS X como servidor, ejecutando Servidor.app 4.0 para proporcionar alojamiento de correo electrónico/etc.

Adjunto a esta máquina tengo un Unidad RAID PROMISE Pegasus R2 montado en /Volumes/RAID6-11TB y yo ha cambiado el lugar de almacenamiento del servicio por defecto para que los datos de Server.app se encuentren en la unidad RAID (por redundancia, y para que Backblaze pueda hacer una copia de seguridad de mi preciado correo electrónico, que normalmente ignora /Library ).

El problema es que al reiniciar la máquina, Server.app no se inicia correctamente, porque algo durante el proceso de arranque es crear un directorio vacío /Volumes/RAID6-11TB/Library/Server/Web/Data/Sites/Default/NetBoot . Cuando la matriz RAID se monta posteriormente de forma automática, su punto de montaje por defecto ya existe, por lo que se monta en /Volumes/RAID6-11TV 1 que no causa ningún bien.

¿Hay alguna forma de arreglar el reinicio para que:

  1. Server.app no se iniciará hasta que el disco RAID esté listo, o
  2. ¿Retrasar el arranque del sistema operativo para que no termine de iniciarse hasta que el disco RAID esté listo?

En cuanto a (1), he editado /Library/LaunchDaemons/com.apple.serverd.plist para añadir un QueueDirectories pero eso no parece tener ningún efecto, y WatchPaths Parece que tiene una semántica equivocada, así que me da reparo intentarlo.

En cuanto a (2), si arranco en modo de usuario único (manteniendo pulsado Command+S durante el arranque), entonces espera hasta todo mensajes se han completado, entonces golpear Ctrl+D para continuar el arranque, /Volumes/RAID6-11TB está montado correctamente como se pretende.

Sin embargo, esto no ayuda a los reinicios automáticos cuando estoy fuera (por ejemplo, después de los cortes de energía). (Vale, la respuesta "adecuada" es hacer copias de seguridad de la batería para que la máquina no se reinicie, pero ignoremos eso por ahora...)

¿Hay alguna manera de hacer que esto funcione?

1voto

zomgdavidbowie Puntos 43

Es Server.app el que está creando esa misteriosa carpeta que está atascando tu trabajo.

Evita que el Server.app se inicie cuando el servidor arranca, y entonces puedes crear un cronjob que lanza a través de un .sh script.

script debería ser algo como

#!/bin/bash
/Applications/Server.app

y como la persona dijo en el enlace, la entrada del cronjob sería algo parecido a

@reboot sleep 60 && my_script.sh

Esto debería dar a su RAID el tiempo suficiente para montar correctamente antes de que Server.app aparezca y cree esa carpeta.

1voto

jonp Puntos 158

Dividí la diferencia con @zomgdavidbowie: He creado un nuevo script /usr/local/bin/start-server-app :

#!/bin/sh

sleep 120

exec /Library/PrivilegedHelperTools/com.apple.serverd

Luego edité /Library/LaunchDaemons/com.apple.serverd.plist y sustituyó todas las instancias de /Library/PrivilegedHelperTools/com.apple.serverd con /usr/local/bin/start-server-app :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.apple.serverd</string>
    <key>MachServices</key>
    <dict>
        <key>com.apple.serverd</key>
        <true/>
    </dict>
    <key>OnDemand</key>
    <false/>
    <key>Program</key>
    <string>/Library/PrivilegedHelperTools/com.apple.serverd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Library/PrivilegedHelperTools/com.apple.serverd</string>
    </array>
</dict>
</plist>

Esto me permite quedarme con el mecanismo de lanzamiento por defecto sin ahondar en cronómetro (8), sin dejar de retrasar la com.apple.serverd hasta que se haya montado la unidad externa.

0voto

Kemo Puntos 1

Qué tal esto, en vez de esperar, haz lo siguiente:

#!/bin/sh

if [[ ! -e /Volumes/<volname ]]; then
sleep 60
else
exec /Library/PrivilegedHelperTools/com.apple.serverd
fi
exit 0

Esto debería comprobar si el volumen existe, si no, espera 60 segundos, si sí, inicia la aplicación del servidor.

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