Linux LUKS i wybór systemu plików

12

Który system plików wyświetla najlepszą wydajność, gdy działa na zaszyfrowanej partycji LUKS? Czy sensowne jest używanie f2fs, gdy partycja LUKS znajduje się na dysku SSD, czy też abstrakcja mapowania urządzenia czyni bezużyteczną optymalizację SSD f2fs?

Kevin
źródło

Odpowiedzi:

8

Jest wiele porad, ale bardzo niewiele wyników empirycznych dotyczących wydajności korzystania z szyfrowania.

Znalazłem jedno takie badanie: Benchmarking SSD Linux: porównanie systemów plików i metod szyfrowania . W poniższej tabeli miary są rzeczywiste / user / sys, a najlepsze wyniki są oznaczone kolorem zielonym, a najgorsze - kolorem czerwonym:

Kliknij, aby powiększyć obrazekKliknij, aby powiększyć obrazek

Na podstawie tych wyników autor zdecydował się na użycie dm-crypt w trybie aes-xts-plain ze 128-bitową długością klucza i btrfs z wyrównaniem ssd i compress=lzo.

Innym przydatnym artykułem jest Wpływ wydajności szyfrowania dysków w systemie Linux na Ubuntu 14.04 LTS . Zbadano użycie procesora podczas instalacji na trzech konfiguracjach standardowych opcji instalacji (bez szyfrowania dysku), pełnej metody szyfrowania dysku przy użyciu LUKS na LVM i szyfrowania katalogu domowego na bazie eCryptfs. Wyniki podsumowano na poniższym wykresie, a wniosek jest taki, że instalacja bez szyfrowania wyniosła średnio 26%, podczas gdy LUKS na LVM i szyfrowanie eCryptfs średnio około 30 ~ 31%, więc oba są prawie równoważne pod względem wydajności.

kliknij, aby zobaczyć duży obrazKliknij, aby powiększyć obrazek

Artykuł, który nie ma wyników empirycznych, ale zawiera wiele dobrych porad, to LinuX, dyski SSD i szyfrowanie dysków . Polecam przeczytanie tego artykułu, a oto główna rada:

  1. W przypadku partycji SSD należy przynajmniej dodać opcje montowania noatimei nodiratimezlikwidować księgowanie czasów dostępu do plików i katalogów.
  2. Skonfiguruj ramdyski za pomocą tmpfs dla plików tymczasowych.
  3. Zmień harmonogram dysku, aby używał noop lub terminu .
  4. Włącz pamięć podręczną zapisu na poziomie urządzenia
  5. Sparametryzuj przeglądarkę, aby nie używać pamięci podręcznej dysku.
harrymc
źródło
5

Zrobiłem kilka testów z systemem od niskiego do środkowego końca. Wyniki poniżej.

stół

Podsumowując, wydaje się, że szyfrowanie nie czyni optymalizacji systemu plików bezużytecznymi. Jak widać w tabeli, w przypadku dmcrypt / LUKS (AES256) F2FSsystem plików był szybszy niż EXT4w prawie wszystkich scenariuszach, w których był domyślnie szybszy (bez szyfrowania). Nieco zaskakujące, zapewniło także zauważalną korzyść w przypadkach, w których nie działa bez szyfrowania - a mianowicie Bonnie++ Sequential Output (Per char)i Flexible I/O Tester Sequential Readtestów.

W tym samym scenariuszu był również wolniejszy w dwóch testach (Zapis sekwencyjny - Bonnie ++ i FIO), ale i tak niewiele wolniejszy. Twój przebieg może się różnić.

Nie testowałem EXT4 z AES-128bits z powodu ograniczonego czasu, ponieważ nie byłoby to konieczne dla tej odpowiedzi.

Uwaga: zaobserwowałem bardzo duże, dziwne odchylenia w testach z AES-128bits. Do 15% zmian w większości testów, a nawet 37% (!) W jednym przypadku. Nie pewny dlaczego. Na czas testów nie korzystałem z systemu do niczego innego. Sam system (root) jest zaszyfrowany za pomocą AES-256, więc mogę wymyślić hipotetyczne wyjaśnienie dotyczące potoków procesorów / opcache, ale ... Naprawdę nie mogę jeszcze powiedzieć. (Dzieje się tak również podczas testowania z live CD, bez odblokowywania partycji AES-256bit, więc nie jest to powód).

Odchylenie utrzymywano poniżej 3,6% (typowo 1,4%) wszędzie indziej. Przyjmuję margines błędu 4%. Dlatego różnice mniejsze niż 4% należy zignorować dla tych wyników.

Konfiguracja testowa:

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.

Tabela wyników w formacie ASCII (pominięto różnice uznane za „nieistotne”):

                                                                                                                |+===================================+| 
                                                                                                                ||            % 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 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
_
Marc.2377
źródło