Linux LUKS e scelta del filesystem


12

Quale filesystem mostra le migliori prestazioni quando viene eseguito su una partizione crittografata LUKS? Ha senso usare f2fs quando la partizione LUKS si trova su un SSD o l'astrazione Device Mapper rende inutili le ottimizzazioni SSD di f2fs?

Risposte:


8

Ci sono molti consigli, ma pochissimi risultati empirici per l'efficienza dell'uso della crittografia.

Ho trovato uno di questi studi: benchmarking SSD Linux: confronto tra filesystem e metodi di crittografia . Nella tabella seguente, le misure sono reali / utente / sistema e i risultati migliori sono di colore verde mentre i peggiori sono di colore rosso:

clicca per ingrandire l'immagineclicca per ingrandire l'immagine

Sulla base di questi risultati, l'autore ha deciso di utilizzare dm-crypt in modalità aes-xts-plain con lunghezza chiave a 128 bit e btrfs con allineamento ssd e compress=lzo.

Un altro articolo utile è l'impatto sulle prestazioni della crittografia del disco Linux su Ubuntu 14.04 LTS . Ha studiato l'utilizzo della CPU durante l'installazione sulle tre configurazioni delle opzioni di installazione stock (nessuna crittografia del disco), il metodo di crittografia completa del disco utilizzando LUKS su LVM e la crittografia della directory principale basata su eCryptfs. I risultati sono riassunti nel grafico seguente e la conclusione è che l'installazione senza crittografia ha registrato una media del 26%, mentre i LUKS su LVM e la crittografia eCryptfs hanno entrambi una media di circa il 30 ~ 31%, quindi sono quasi equivalenti in termini di prestazioni.

clicca per un'immagine grandeclicca per ingrandire l'immagine

Un articolo che non ha risultati empirici ma molti buoni consigli sono LinuX, SSD e crittografia del disco . Consiglio di leggere questo articolo, ed ecco il consiglio principale dato:

  1. Per la partizione SSD dovresti almeno aggiungere le opzioni di montaggio noatimee nodiratimesopprimere la contabilità dei tempi di accesso per file e directory.
  2. Imposta i ramdisk usando tmpfs per i file temporanei.
  3. Modificare lo scheduler del disco per utilizzare noop o scadenza .
  4. Abilita cache di scrittura a livello di dispositivo
  5. Parametrizzare il browser in modo da non utilizzare una cache del disco.

5

Ho fatto alcuni test con un sistema di fascia medio-bassa. Risultati sotto.

tavolo

In conclusione, sembra che la crittografia non renda inutili le ottimizzazioni di un filesystem. Come puoi vedere nella tabella, per dmcrypt / LUKS (AES256), il F2FSfilesystem era più veloce che EXT4in quasi tutti gli scenari in cui era più veloce di default (senza crittografia, cioè). Un po 'sorprendentemente, ha anche fornito un notevole vantaggio nei casi in cui non sarebbe stato privo di crittografia, vale a dire Bonnie++ Sequential Output (Per char)i Flexible I/O Tester Sequential Readtest e.

Per questo stesso scenario è stato anche più lento in due test (Scrittura sequenziale - Bonnie ++ e FIO), ma comunque non molto più lento. Il tuo chilometraggio può variare.

Non ho testato EXT4 con AES-128bits a causa del tempo limitato poiché non sarebbe essenziale per questa risposta.

Nota: ho osservato deviazioni molto grandi e strane nei test con AES-128 bit. Fino al 15% di variazioni nella maggior parte dei test e persino il 37% (!) In un caso. Non so perché. Non ho usato il sistema per nient'altro per la durata dei test. Il sistema (root) è esso stesso crittografato con AES-256, quindi posso pensare a una spiegazione ipotetica che coinvolge pipeline / opcache della CPU, ma ... Davvero non posso ancora dire. (Ciò accade anche quando si esegue il test da un CD live, senza mai sbloccare la partizione AES-256bit, quindi non è questo il motivo).

La deviazione è stata mantenuta inferiore al 3,6% (1,4% tipico) ovunque. Sto adottando un margine di errore del 4%. Pertanto, differenze inferiori al 4% dovrebbero essere ignorate per questi risultati.

Configurazione di prova:

SSD: Kingston SV300S37A/120G
Mainboard: ASUS Sabertooth 990FX R2.0
CPU: AMD FX-6350 @ stock
Kernel version: 4.11.3
IO Scheduler: CFQ
All tests were run using an 80GB secondary partition.

Tabella dei risultati in formato ASCII (le differenze ritenute "irrilevanti" sono omesse):

                                                                                                                |+===================================+| 
                                                                                                                ||            % Change               ||
                                      |+=====================+=====================+=================+|         ||--------+--------+--------+--------||
                                      ||   (no encryption)   |       AES-256       |    AES-128      ||         ||   F2FS / EXT4   |Crypto / NoCrypto||
|+============+========================+----------+----------+----------+----------+------+----------||=========||--------+--------+--------+--------+|
|| Test suite | Test Method            | EXT4     | F2FS     | EXT4     | F2FS     | EXT4 | F2FS     || Unit    ||nocrypto| aes256 | aes128 | aes256 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
|| Manual     | Read                   | 390.6    | 391.59   | 320      | 325.6    | -    | 345.36   || MiB/s   ||        |        | -11.81 | -16.85 ||
||(cp and dd) | Write (zeros)          | 501.96   | 517.17   | 96.9     | 96.7     |      | 112.16   || MiB/s   ||        |        | -78.31 | -81.30 ||
||            | Write (random data)    | 100.44   | 97.99    | 91.8     | 89.5     |      | 97.64    || MiB/s   ||        |        |        | -08.66 ||
||--------------------------------------------------------------------------------------------------------------||--------|--------|--------|--------||
||            | Seq. Output – Per char | 80.68    | 83.76    | 63.56    | 80.59    | -    | 75.56    || MiB/s   ||        | +26.79 | -09.79 |        ||
||            | Seq. Output – Block    | 498.92   | 492.42   | 104.74   | 101.13   |      | 90.9     || MiB/s   ||        |        | -81.54 | -79.46 ||
|| Bonnie++   | Seq. Output – Rewrite  | 196.4    | 198.99   | 74.69    | 70.8     |      | 70.27    || MiB/s   ||        | -05.21 | -64.69 | -64.42 ||
||            | Seq. Input - Per char  | 86.93    | 86.04    | 84.01    | 81.25    |      | 87.84    || MiB/s   ||        |        |        | -05.57 ||
||            | Seq. Input – Block     | 352.57   | 355.99   | 286.36   | 289.24   |      | 304.5    || MiB/s   ||        |        | -14.46 | -18.75 ||
||            | Random seeks           | 9452.9   | 9102.2   | 8142.3   | 8224.8   |      | 7431.4   || ops/s   ||        |        | -18.36 | -09.64 ||
||--------------------------------------------------------------------------------------------------------------||--------|--------|--------|--------||
|| Fs-mark    | 1000 files, 1 thread   | 193.7    | 236.6    | 93.6     | 103.7    | -    | 73.9     || files/s || +18.13 | +10.79 | -68.77 | -56.17 ||
||            | 5000 files, 4 threads  | 310.1    | 348.8    | 90.9     | 99       |      | 91.6     || files/s || +11.10 | +08.91 | -73.74 | -71.62 ||
||--------------------------------------------------------------------------------------------------------------||--------|--------|--------|--------||
||            | Random read            | 56.77    | 69.86    | 58.79    | 63.51    |      | 61.93    || MiB/s   ||        |        |        |        ||
||            |                        | 14188    | 17461    | 14695    | 15874    |      | 15479    || IOPS    || +23.07 | +08.02 | -11.35 | -09.09 ||
|| Flexible   |                        |          |          |          |          | -    |          ||         ||        |        |        |        ||
|| I/O        | Random write           | 59.91    | 78.99    | 52.2     | 63.75    |      | 67.75    || MiB/s   ||        |        |        |        ||
|| Tester     |                        | 14973    | 19745    | 13046    | 15935    |      | 16934    || IOPS    || +31.87 | +22.14 | -14.24 | -19.30 ||
||            |                        |          |          |          |          |      |          ||         ||        |        |        |        ||
||            | Sequential read        | 284.02   | 247.57   | 95.14    | 95.17    |      | 95.98    || MiB/s   ||        |        |        |        ||
||            |                        | 71001    | 61889    | 23781    | 23788    |      | 23991    || IOPS    || -12.83 |        | -61.24 | -61.56 ||
||            |                        |          |          |          |          |      |          ||         ||        |        |        |        ||
||            | Sequential write       | 94.06    | 100.77   | 100.63   | 96.56    |      | 86.93    || MiB/s   ||        |        |        |        ||
||            |                        | 23512    | 25188    | 25153    | 24137    |      | 21728    || IOPS    || +07.13 | -04.04 | -13.74 | -04.17 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
_
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.