Cosa fanno esattamente i parametri Linux 'allow-discards' e 'root_trim'?


10

Molte istruzioni online su SSD attualmente dicono che dovresti aggiungere allow- discards e root_trim = yes al tuo GRUB_CMDLINE_LINUX. Devo ancora trovarne uno che dica perché dovresti farlo, cioè cosa fanno esattamente (se mai!) Questi parametri. Dov'è la documentazione su questo e cosa dice dello scopo di questi due parametri?

Secondo le note di rilascio di Cryptsetup 1.4.0 ,

Dal kernel 3.1, i dispositivi dm-crypt opzionalmente (non per impostazione predefinita) supportano i comandi di blocco degli scarti (TRIM). Se vuoi abilitare questa operazione, devi abilitarla manualmente ad ogni attivazione usando --allow-discards

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

ma è lo stesso quando viene passato al kernel (tramite GRUB_CMDLINE_LINUX)?

Modifica: l'elenco dei parametri del kernel di Kernel.org (attualmente, almeno gennaio 2013) non ha nessuna di queste opzioni.


Forse dai un'occhiata a webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Non dà spiegazione, ma una procedura rapida ...
alci,

1
Come ho detto, la rete è piena di istruzioni senza spiegazioni. Sto seguendo le spiegazioni, non la procedura.
Jani Uusitalo,

Risposte:


6

Da quanto ho capito, il parametro di avvio root_trim=yesè specifico di Gentoo. All'interno genkernelc'è uno script che cerca il parametro e imposta l'opzione --allow-discardscon cryptsetup (vedi il loro repository git ). Inoltre ho trovato molte segnalazioni di utenti Ubuntu o Debian che dicevano che funzionava senza il root_trimparametro. Inoltre non ho trovato righe nello update-initramfsscript di Ubuntus .

Quindi tutto sommato non è un parametro di avvio, ma più un parametro per cryptsetup. La documentazione di --allow-discardspuò essere trovata nella manpage di cryptsetup (8) :

--allow-discards
Consenti l'utilizzo di richieste di scarto (TRIM) per il dispositivo. Questa opzione è rilevante solo per create , luksOpen o loopaesOpen .

ATTENZIONE : valutare attentamente i rischi specifici per la sicurezza prima di abilitare questa opzione. Ad esempio, consentire gli scarti su dispositivi crittografati può portare alla perdita di informazioni sul dispositivo di testo cifrato (tipo di filesystem, spazio utilizzato ecc.) Se i blocchi scartati possono essere facilmente individuati sul dispositivo in un secondo momento.

È richiesta la versione del kernel 3.1 o più recente. Per le versioni precedenti l'opzione è ignorata.

Basato su questo blog su TRIM e dm-crypt , TRIM è un'operazione in cui il livello superiore (ad es. Filesystem) informa il dispositivo su quali settori non sono più utilizzati (non contengono più dati validi) e che il dispositivo non ha bisogno di conservare quel contenuto di dati .

Nella terminologia Linux questa operazione si chiama discard. Nel mondo SCSI è indicato come comando UNMAP.

L'operazione di eliminazione può essere utilizzata per due scopi: thin provisioning (informa che l'area di dati può essere restituita al pool di allocazione) e per l'ottimizzazione dell'operazione SSD.

Discards è molto utile per l'ottimizzazione dell'SSD poiché l'architettura interna utilizza blocchi più grandi rispetto ai settori e che i blocchi devono essere cancellati prima di poter eseguire un'operazione di scrittura. Le informazioni su settori che non necessitano di conservare i dati sono molto utili poiché il filesystem sarebbe in grado di organizzare i blocchi in modo più efficace in modo tale da ridurre al minimo la frammentazione dei dati e aumentare anche la durata del disco.


Quindi, nessuna delle opzioni è necessaria se il filesystem non è codificato? Perché due opzioni se tutto ciò che fanno è abilitare un comando a funzionare?
Jani Uusitalo,

Grazie per aver sottolineato la relazione tra il parametro del kernel e l'opzione mount / devicemapper nella risposta aggiornata. +1 questa volta. :)
gertvdijk,

Questa risposta sta iniziando a sembrare buona. Ho anche trovato allow_discards nella documentazione corrente di dm-crypt ; tutto sembra implicare che non è un parametro del kernel ma un'opzione per il target device-mapper dm-crypt. Sto ancora cercando di scoprire se quelli possono essere passati dalla riga di comando di Linux. Ciò spiegherebbe le istruzioni pappagallo dappertutto, altrimenti è probabilmente solo disinformazione.
Jani Uusitalo,

1
@JaniUusitalo Non ha davvero senso per me rendere questo un parametro (globale) del kernel. 1) vuoi davvero specificare questo filesystem / dispositivo specifico piuttosto che a livello di sistema, 2) le opzioni mount / fstab ti permettono di farlo già, 3) all'avvio (prima che initramfs abbia montato il tuo /come read / write) tu ' probabilmente non sarà necessaria questa funzionalità.
gertvdijk,

4
La parametrizzazione del kernel di allow-discards potrebbe essere un Archism: apparentemente in Arch, si notifica a GRUB una radice crittografata con (es.) "Cryptdevice = / dev / mapper / root: root: allow-discards". Ciò che viene raccolto dagli utenti di Ubuntu potrebbe essere dovuto al fatto che la wiki di Arch viene definita come "Migliore riferimento" dai EncryptedFilesystems della wiki di Ubuntu .
Jani Uusitalo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.