Dirijo una granja de servidores de Mac minis. Por razones de rendimiento y longevidad del SSD, he ( Mojave) particionado el SSD en APFS y montado la nueva partición con el noatime
y limitar las construcciones a esa partición. Ahora que Catalina y más allá tienen la opción /System/Volumes/Data
partición como parte del sistema operativo, me pregunto si hay una manera de habilitar el noatime
opción para esa partición sin indagar en /etc/fstab
es decir, de una manera sancionada por Apple.
Respuesta
¿Demasiados anuncios?Sí, podría añadir el noatime
a la opción de montaje /System/Volumes/Data
partición de forma persistente con un demonio launchd. Esto me funcionó en MacOS Catalina, Big Sur y Monterey.
He creado un archivo /Library/LaunchDaemons/local.noatime.plist con este contenido:
<?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">
<!-- Install: copy to /Library/LaunchDaemons/, chown root:wheel and chmod 644 -->
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.noatime</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<!-- first get the current mount options to see if there are any default options that we missed to provide here -->
<!-- as mount overwrites the default options except the ones it reads out from the filesystem table -->
<string>mnt=/System/Volumes/Data; mount | grep -F " $mnt "; mount -vuwo nobrowse,noatime "$mnt"</string>
</array>
<!-- launchd appends the output to the log file so write it to /tmp that is removed on each reboot -->
<key>StandardOutPath</key>
<string>/tmp/noatime.log</string>
<key>StandardErrorPath</key>
<string>/tmp/noatime.log</string>
<key>RunAtLoad</key>
<true/>
<key>LaunchOnlyOnce</key>
<true/>
<key>KeepAlive</key>
<false/>
</dict>
</plist>
Puede elegir cualquier nombre de LaunchDaemon que desee en lugar de local.noatime
que aún no existe, pero creo que la etiqueta en el config y el nombre del archivo (sin la extensión .plist) deben ser los mismos.
Normalmente, este LaunchDaemon se iniciará en cada arranque por lo que añadirá el noatime
después de un reinicio.
Pero veo que tienes una granja de servidores y supongo que un reinicio para todas esas máquinas no es lo ideal, así que podrías activar manualmente el demonio sin reiniciar:
sudo launchctl bootstrap system /Library/LaunchDaemons/local.noatime.plist
Si compruebas el archivo de registro deberías ver algo como esto:
cat /tmp/noatime.log
/dev/disk3s1 on /System/Volumes/Data (apfs, local, journaled, nobrowse)
/dev/disk3s1 on /System/Volumes/Data (apfs, local, journaled, noatime, nobrowse)
La primera línea contiene las opciones de montaje originales y la segunda las nuevas. Creo que es una buena idea para mantener alrededor de las opciones de montaje originales en caso de que Apple añade algunas otras opciones por defecto al lado de nobrowse
(las otras opciones se añaden automáticamente desde la tabla del sistema de archivos) ya que no encontré la forma de añadir el noatime
sin eliminar las opciones de montaje anteriores. Con esto dicho, use esto bajo su propio riesgo.