¿Qué hacen exactamente los parámetros de Linux 'allow-descartes' y 'root_trim'?

10

Muchas instrucciones en línea relacionadas con SSD en la actualidad dicen que debe agregar allow-descartes y root_trim = yes a su GRUB_CMDLINE_LINUX. Todavía tengo que encontrar uno que diga por qué debería hacer eso, es decir, qué hacen exactamente (si es que lo hacen) esos parámetros. ¿Dónde está la documentación sobre esto y qué dice sobre el propósito de esos dos parámetros?

De acuerdo con las Notas de lanzamiento de Cryptsetup 1.4.0 ,

Desde el kernel 3.1, los dispositivos dm-crypt opcionalmente (no por defecto) admiten comandos de descarte de bloque (TRIM). Si desea habilitar esta operación, debe habilitarla manualmente en cada activación usando --allow-descartes

cryptsetup luksOpen --allow-discards /dev/sdb test_disk 

pero es lo mismo cuando se pasa al kernel (a través de GRUB_CMDLINE_LINUX)?

Editar: la lista de parámetros del kernel de Kernel.org no tiene (actualmente, enero de 2013, al menos) ninguna de estas opciones.

Jani Uusitalo
fuente
Tal vez eche un vistazo a webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html No da explicaciones, sino un procedimiento rápido ...
alci
1
Como dije, la red está llena de instrucciones sin explicaciones. Estoy tras las explicaciones, no el procedimiento.
Jani Uusitalo

Respuestas:

6

Según tengo entendido, el parámetro de arranque root_trim=yeses específico de Gentoo. Dentro genkernelhay un script que busca el parámetro y establece la opción --allow-discardscon cryptsetup (vea su repositorio git ). Además, encontré muchos informes de usuarios de Ubuntu o Debian que decían que funcionaba sin el root_trimparámetro. Tampoco encontré líneas en el update-initramfsscript de Ubuntus .

Así que, en general, no es un parámetro de arranque, sino más bien un parámetro cryptsetup. La documentación de --allow-discardsse puede encontrar en la página de manual de cryptsetup (8) :

--allow-descartes
Permite el uso de solicitudes de descarte (TRIM) para el dispositivo. Esta opción solo es relevante para create , luksOpen o loopaesOpen .

ADVERTENCIA : Evalúe los riesgos de seguridad específicos cuidadosamente antes de habilitar esta opción. Por ejemplo, permitir descartes en dispositivos encriptados puede conducir a la pérdida de información sobre el dispositivo de texto cifrado (tipo de sistema de archivos, espacio utilizado, etc.) si los bloques descartados se pueden ubicar fácilmente en el dispositivo más adelante.

Se requiere Kernel versión 3.1 o más reciente. Para versiones anteriores se ignora la opción.

Basado en este blog sobre TRIM y dm-crypt , TRIM es una operación en la que la capa superior (por ejemplo, el sistema de archivos) informa al dispositivo qué sectores ya no se usan (ya no contienen datos válidos) y que el dispositivo no necesita mantener ese contenido de datos .

En la terminología de Linux, esta operación se llama descarte. En el mundo SCSI se le conoce como el comando UNMAP.

La operación de descarte se puede usar para dos propósitos: aprovisionamiento delgado (informa que el área de datos se puede devolver al grupo de asignación) y para la optimización de la operación SSD.

Los descartes son más útiles para la optimización de SSD ya que la arquitectura interna utiliza bloques más grandes que los sectores y que los bloques deben borrarse antes de que se pueda realizar una operación de escritura. La información sobre sectores que no necesitan conservar datos es muy útil ya que el sistema de archivos podría organizar bloques de manera más efectiva de tal manera que se minimice la fragmentación de datos y también aumente la vida útil del disco.

qbi
fuente
Entonces, ¿ninguna de las opciones es necesaria si el sistema de archivos no está encriptado? ¿Por qué dos opciones si todo lo que hacen es habilitar un comando para que funcione?
Jani Uusitalo
Gracias por señalar la relación entre el parámetro del kernel y la opción mount / devicemapper en su respuesta actualizada. +1 esta vez. :)
gertvdijk
Esta respuesta comienza a verse bien. También encontré allow_discards en la documentación actual de dm-crypt ; todo parece implicar que no es un parámetro del kernel sino una opción para el destino del mapeador de dispositivos dm-crypt. Todavía estoy tratando de averiguar si se pueden pasar en la línea de comando de Linux. Eso explicaría las instrucciones repitidas por todos lados, de lo contrario, probablemente sea solo información incorrecta.
Jani Uusitalo
1
@JaniUusitalo Realmente no tiene sentido para mí hacer de este un parámetro de núcleo (global). 1) realmente desea especificar este sistema de archivos / específico del dispositivo en lugar de todo el sistema, 2) las opciones mount / fstab ya le permiten hacerlo, 3) en el momento del arranque (antes de que el initramfs haya montado su /lectura / escritura) No es probable que necesite esta funcionalidad.
gertvdijk
44
La parametrización del kernel de allow-descartes podría ser un Archism: aparentemente en Arch, usted notifica a GRUB de una raíz encriptada con (por ejemplo) "cryptdevice = / dev / mapper / root: root: allow-discards". Esto podría ser recogido por los usuarios de Ubuntu podría deberse a que la wiki de Arch se conoce como "La mejor referencia" por EncryptedFilesystems de Ubuntu wiki .
Jani Uusitalo