Файловые системы#

Нюансы выбора файловой системы и флагов монтирования#

В отличие от Windows, в Linux-подобных системах выбор файловой системы не ограничивается в обязательном порядке со стороны дистрибутива, и может применяться исходя из личных предпочтений пользователя с оглядкой на поддержку со стороны ядра.

В Linux файловые системы можно разделить на два типа:

  • Классические: ext4, F2FS, XFS.

  • Системы на базе механизма CoW (Copy-on-Write): Btrfs, Bcachefs, ZFS и другие.

Классические системы#

Эти системы как правило согласно тестам показывают более высокие скорости операций ввода-вывода (IOPS) и скорости записи/чтения, но в тоже время могут не обладать некоторым дополнительным функционалом, например сжатие "налету", возможность создания снимков, дедупликация и прочие возможности.

Файловая система ext4#

Данная система уже давно зарекомендовала себя как простое универсальное решение. Это своего рода как NTFS в Windows, и если вы не уверены какую файловую систему вам выбрать под свои задачи, то можно использовать ext4 - особо ничего не потеряете, особенно если вы начинающий пользователь.

ext4 по умолчанию используется во многих дистрибутивах Linux. Подходит как для жестких дисков (HDD), так и для SSD, хотя для последних есть варианты и получше.

Настройка внешнего журнала ext4#

Вынесение журнала файловой системы на более быстрый накопитель (желательно SSD) является безопасным и очень эффективным способом приблизиться к раскрытию потенциала жёсткого диска. Результаты простых бенчмарков ты можешь найти тут.

Размер внешнего журнала должен определяться в зависимости от предполагаемой нагрузки на диски, но, в целом, рекомендуемым значением для накопителей от 1 ТБ является 1-2 ГБ.

Для внешнего журнала необходимо создать отдельный раздел нужного размера, а после отформатировать его командой:

mke2fs -O journal_dev /dev/nvme0n1p2

После чего подключить новый журнал к существующей файловой системе:

tune2fs -J device=/dev/nvme0n1p2 /dev/sda

Оптимальные параметры монтирования для ext4#

Если вы используете внешний журнал, то оптимальными параметрами будут:

relatime,commit=300,journal_async_commit,nodelalloc,data=journal

Если же не используете, то относительно безопасным вариантом будет:

relatime,commit=300,data=ordered

В последнем параметр data=ordered можно заменить на data=writeback, что отключит использование журнала вовсе, но может вызывать потери данных или их повреждение при аварийном отключении питания.

Подробное описание всех параметров монтирования можно найти здесь.

Внимание

Параметр commit=300 может вызывать повышенное потребление оперативной памяти и иногда портить данные на диске. Можете установить значение на более консервативное, например, commit=100.

Всех параметры монтирования нужно прописывать в файл /etc/fstab для соответствующих разделов.

Файловая система XFS#

Высокопроизводительная файловая система, которая отлично подходит для HDD. Благодаря особенностям архитектуры данная система отлично справляется с задачами хранения различных данных. Данная система разрабатывалась в первую очередь для HDD, однако она также неплохо работает и на SSD, особенно когда дело касается баз данных.

Файловая система F2FS#

Файловая система разработанная компанией Samsung. Как уверяется специально для NAND накопителей (SSD, флешки и т.п.). Иногда может выделяться немного большими показателями IOPS и скоростью линейного чтения, но большими задержками по сравнению с той же Ext4 (от 0,5 мс и доходящих до пятикратной разницы). Поддерживает функцию сжатия "налету".

Системы CoW#

Файловые системы построенные на базе CoW (так называемое копирование при записи) примечательны тем, что они не создают полную копию данных файла при его копировании или изменении, а лишь накладывают новые блоки поверх уже существующих путём обновления метаданных, тем самым минимизируя избыточность данных хранимых на носителе. Это позволяет использовать более эффективный способ архивирования данных при помощи так называемых "снимков", когда каждая следующая архивная копия содержит в себе лишь набор изменений, произведенных по сравнению с предыдущий копией.

Также данные системы поддерживают разного рода дополнительные функции, например возможность сжатия "налету". Ценой дополнительной нагрузки на CPU можно сжимать записываемые данные на носитель, тем самым экономя место и его ресурс, что может быть особенно полезно при использовании на SSD. Однако стоит отметить, что далеко не все файлы хорошо поддаются сжатию, и зачастую при этом страдает скорость записи данных на диск, особенно при высоких уровнях сжатия.

Файловая система btrfs#

Данная файловая система выделяется большим функционалом и возможностями:

  • Отсутствие единой точки отказа в виде журнала файловой системы, так как Btrfs построен на базе механизма CoW, то даже в случае аварийного отключения питания это не приведёт к полному повреждению файловой системы.

  • Наличие подтомов (так называемый subvol), которые могут быть использованы в том числе для установки сразу нескольких дистрибутивов Linux на один и тот же раздел.

  • Сжатие на лету для экономии места при записи на SSD.

  • Возможность создания быстрых и легковесных резервных копий всей системы или отдельных её директорий при помощи так называемых снапшотов (snapshots).

Несмотря на изобилие различных возможностей, данная ФС может проигрывать другим файловым системам по скорости операций ввода-вывода (IOPS) и скорости чтения/записи в связи с использованием механизма CoW, а также из-за наличия фрагментации, что может быть критично для HDD. CoW можно отключить, однако тогда Btrfs потеряет практически весь свой функционал и становится проще использовать классические файловые системы как ext4.

По умолчанию используется во многих дистрибутивах Linux, например таких как Fedora, SteamOS (Steam Deck), CachyOS и т. д.

Оптимальные флаги монтирования#

Вот оптимальные параметры для SSD носителей. Описание каждого из них вы можете найти - здесь.

rw,relatime,compress=zstd:3,ssd_spread,max_inline=256,commit=300

Оптимальные параметры монтирования для HDD:

rw,relatime,max_inline=256,commit=300,autodefrag

Прежде всего, отметим, что вы можете изменить relatime на noatime или lazytime - все три параметра отвечают за запоминание времени доступа к файлами и прочим связанным с ними атрибутам.

Параметр noatime полностью выключает данную функцию, что может привести к некоторым багам в приложениях зависимых от времени изменения файлов (например git), однако это встречается довольно редко. Параметр lazytime успешно будет выполнять все функции времени, но выполнять их промежуточную запись в оперативной памяти, что позволит избежать замедления без потери функционала, однако lazytime может иметь свои проблемы в связи с реализацией, так как при данные могут быть утеряны при аварийных отключениях питания.

Если вы не уверены в том, какой из этих флагов вам лучше подходит, то можете остановиться на relatime, но флаг noatime в большинстве случаев для домашнего использования вполне пригоден.

Рекомендуется также минимизировать использование CoW в Btrfs для HDD во избежание излишней фрагментации. Сделать это лучше выборочно, то есть не используя опцию монтирования nodatacow. Полное отключение CoW по сути лишает Btrfs всех присущих преимуществ, а также ведет к отключению проверки целостности файлов, что может привести к ожидаемым поломкам или полному повреждению файловой системы. Поэтому мы должны использовать специальный атрибут файловой системы, чтобы применение механизма СoW только для отдельных директорий/файлов. Часто это могут быть:

1) Директория для торрентов. Автор крайне рекомендует выполнять загрузку всех торрентов в отдельную директорию и отключать для неё CoW во избежание фрагментации:

sudo chattr -R +C ~/Torrents # Укажите свою директорию с торрентами

2) Файлам баз данных очень чувствительны к фрагментации при CoW. Как правило все они расположены в директории /var/db, но часть пользовательских приложений любит их создавать в ~/.local/share:

sudo chattr -R +C /var/db
sudo chattr -R +C ~/.local/share

3) Для образов виртуальных машин также не следует использовать CoW, иначе это приведет к обильной фрагментации.

Только учтите, что изменения не применяются к уже существующим файлам, а только к новосозданным.

Прописывать их нужно в файл /etc/fstab для корневого и домашнего разделов. Некоторые из данных флагов будут применяться только для новых файлов.

../_images/file-systems-1.png

Внимание

При использовании Btrfs для корневого раздела, обязательно установите пакет btrfs-progs.

Сжатие в файловой системе Btrfs#

В файловой системе Btrfs есть возможность включения сжатия налету. Все записываемые файлы по возможности будут сжиматься и экономить пространство на носителе HDD или SSD.

Для SSD это может быть важно в связи с их ограниченным ресурсом на запись.

Согласно wiki Btrfs, официально поддерживается 3 алгоритма сжатия без потерь:

  • zlib - высокая степень сжатия, но низкая скорость сжатия и распаковки

  • lzo - высокая скорость сжатия и распаковки, но наименьший уровень сжатия из представленных алгоритмов

  • zstd - степень сжатия сравнимая с zlib и более быстрые сжатие и распаковка, однако уступающие по скорости lzo

Для включения алгоритма сжатия в файловой системе необходимо отредактировать файл etc/fstab, добавив для необходимого раздела с файловой системой Btrfs следующий флаг монтирования:

compress='алгоритм':N

Где N - степень сжатия:

  • Для zlib N может быть от 1 до 9 включительно.

  • Для lzo - выбор уровня сжатия не предусмотрен, поэтому :N - не указываются

  • При использовании zstd N может быть от 1 до 15 включительно.

Чем больше значение N, тем сильнее будут сжиматься данные. Конечно при условии, что это возможно, но при этом будет повышенная нагрузка на процессор, поскольку сжатие выполняется за счет его ресурсов. Cогласно официальной документации Btrfs, оптимальным значением N по отношению степени сжатия и скорости считается 3.

Например, для zstd со степенью сжатия 3 запись флагов монтирования будет выглядеть примерно следующим образом, если учесть приведенные выше флаги монтирования:

rw,relatime,compress=zstd:3,ssd_spread,max_inline=256,commit=600

После добавления данного флага монтирования сжиматься начнут только новые файлы при записи на диск. Для сжатия уже имеющихся данных необходимо выполнить команду:

sudo btrfs filesystem defragment -calg /path

Где -calg - алгоритм сжатия (указывается как czlib, clzo или czstd в зависимости от выбранного алгоритма), path - путь, данные на которого требуется сжать.

Для сжатия уже существующих данных в папке или целого раздела необходимо указать ключ -r перед -calg:

sudo btrfs filesystem defragment -r -calg /path

Определение эффективности сжатия#

Если вы хотите определить эффективность сжатия на вашем разделе/диске, то вам необходимо воспользоваться программой compsize. Установить ее можно с помощью команды:

sudo pacman -S compsize

Для выполнения проверки на эффективность необходимо использовать команду:

sudo compsize /path

(Где path - путь к разделу, папке или файлу)

Пример вывода команды:

../_images/compsize.png

Пояснения:

  • Первый столбец:
    • Строка TOTAL - итоговые данные, которые учитывают все сжатые и не сжатые файлы и разные алгоритмы (если такие имеются).

    • Строка none - данные, которые не были сжаты.

    • Далее отображаются все использованные алгоритмы (в данном случае - zstd).

  • Второй столбец показывает данные в процентах.

  • Третий столбец отображает фактически использованное место на диске/разделе.

  • Четвертый столбец показывает данные без сжатия.

  • Пятый - видимый размер файла, тот, который зачастую отображается в системе.

Скорость обработки алгоритма zstd на примере AMD Ryzen 7 3700X#

Для сравнения степеней сжатия алгоритма zstd использовалась бенчмарк платформа phoronix-test-suite. В данной программе, для проверки скорости сжатия и распаковки данных, доступно три степени - 3, 8, 19. Для получения информации о падении скорости выполнения сжатия нам будет достаточно и первых двух, поскольку степень сжатия 19 на данный момент не поддерживается (однако данные также приведены для ознакомления), и если обратить внимание на полученные данные, то это и не имеет особого смысла. Далее представлены результаты замеров:

../_images/zstd_3.png ../_images/zstd_8.png ../_images/zstd_19.png

Как можно видеть из графиков, падение скорости при перехода от степени 3 к степени 8 сопровождается падением скорости сжатия более чем в 4,7 раз (не говоря о более высоких степенях сжатия) и практически не изменяется при выполнении распаковки, что может негативно сказаться на скорости установки программ и возможно в некоторых других ситуациях которые требует выполнения записи на диск.

Стоит отметить, что в случае выполнения установки игр с использованием степени сжатия 15, было замечено повышение нагрузки на процессор вплоть до 72-75% в тех случаях, когда файлы поддавались сжатию.

Список протестированных игр на эффективность сжатия (Спасибо @dewdpol!)#

Далее представлен список протестированных игр на сжатие в файловой системе Btrfs. Данные были получены с помощью программы compsize и являются округленными, поэтому информация может нести частично ознакомительный характер.

Игра

Алгоритм

Уровень сжатия

Необходимое место (N)

Используемое место(U)

U/N

Экономия

1

A Plague Tale: Innocence

zstd

3

41 GB

41 GB

99%

182 MB

15

306 MB

2

A Story About My Uncle

zstd

3

1,1 GB

1,1 GB

94%

63 MB

15

93%

74 MB

3

Aegis Defenders

zstd

3

1,3 GB

240 MB

17%

1,10 GB

15

230 MB

16%

1,11 GB

4

Among Us

zstd

3

429 MB

284 MB

66%

145 MB

15

279 MB

65%

150 MB

5

Aragami

zstd

3

7,6 GB

5,4 GB

71%

2,20 GB

15

5,3 GB

69%

2,27 GB

6

Armello

zstd

3

1,6 GB

1,5 GB

95%

73 MB

15

94%

83 MB

7

Bastion

zstd

3

1,1 GB

1,1 GB

94%

67 MB

15

1,0 GB

93%

81 MB

8

BattleBlock Theater

zstd

3

1,8 GB

1,7 GB

93%

117,8 MB

15

118,7 MB

9

Beholder

zstd

3

1,9 GB

1,0 GB

55%

0,77 GB

15

1,1 GB

58%

0,82 GB

10

Beholder 2

zstd

3

2,5 GB

2,2 GB

85%

385 MB

15

2,1 GB

81%

483 MB

11

Blasphemous

zstd

3

854 MB

805 MB

94%

48 MB

15

802 MB

93%

51 MB

12

Blue Fire

zstd

3

6,0 GB

4,9 GB

81%

1,10 GB

15

4,7 GB

77%

1,30 GB

13

Brothers - A Tale of Two Sons

zstd

3

1,2 GB

1,1 GB

95%

53 MB

15

52 MB

14

Castle Crashers

zstd

3

199 MB

183 MB

92%

15,4 MB

15

91%

15,8 MB

15

Celeste

zstd

3

1,1 GB

897 MB

78%

251 MB

15

871 MB

75%

277 MB

16

Child of light

zstd

3

2,3 GB

2,3 GB

99%

15 MB

15

9,5 MB

17

Children of Morta

zstd

3

1,6 GB

1,5 GB

94%

87 MB

15

92 MB

18

CODE VEIN

zstd

3

35 GB

35 GB

99%

75 MB

15

124 MB

19

Cortex Command

zstd

3

97 MB

65 MB

67%

32 MB

15

64 MB

66%

33 MB

20

Cuphead

zstd

3

3,6 GB

3,3 GB

93%

223 MB

15

233 MB

21

Curse of Dead Gods

zsrd

3

2,7 GB

1,4 GB

53%

1,25 GB

15

51%

1,29 GB

22

D-Corp

zstd

3

1,2 GB

720 MB

57%

525 MB

15

697 MB

55%

549 MB

23

Dark Souls: Prepare To Die Edition

zstd

3

3,7 GB

3,7 GB

99%

1,57 MB

15

1,61 MB

24

Dark Souls III

zstd

3

24 GB

24 GB

99%

0,53 MB

15

0,60 MB

25

Darkest Dungeon

zstd

3

3,2 GB

2,8 GB

88%

394 MB

15

87%

410 MB

26

Darkestville Catle

zstd

3

1,7 GB

798 MB

40%

0,99 GB

15

682 MB

38%

1,02 GB

27

Darksiders III

zstd

3

24 GB

24 GB

99%

22 MB

15

30 MB

28

Dead Cells

zstd

3

1,1 GB

1,1 GB

97%

24 MB

15

1,0 GB

31 MB

29

Death's Door

zstd

3

3,6 GB

2,1 GB

58%

1,48 GB

15

57%

1,54 GB

30

Death's Gambit: Afterlife

zstd

3

1 GB

729 MB

66%

367 MB

15

720 MB

65%

376 MB

31

Deponia: The Complete Journey

zstd

3

9,5 GB

9,5 GB

99%

24,2 MB

15

25,6 MB

32

Devil May Cry 5

zstd

3

33 GB

33 GB

99%

82 MB

15

86 MB

33

Disco Elysium

zstd

3

9,5 GB

9,1 GB

96%

305 MB

15

95%

391 MB

34

Don't Starve Together

zstd

3

2,5 GB

1,8 GB

74%

651 MB

15

73%

679 MB

35

Eldest Souls

zstd

3

1,0 GB

720 MB

69%

314 MB

15

708 MB

68%

326 MB

36

Evergate

zstd

3

2,9 GB

1,9 GB

64%

1,01 GB

15

63%

1,03 GB

37

Frostpunk

zstd

3

8,9 GB

8,9 GB

99%

24 MB

15

25,2 MB

38

Furi

zstd

3

4,3 GB

2,7 GB

62%

1,53 GB

15

63%

1,52 GB

39

Gato Roboto

zstd

3

440 MB

415 MB

94%

25,5 MB

15

414 MB

26,1 MB

40

Gears Tactics

zstd

3

29 GB

29 GB

99%

66 MB

15

97 MB

41

Ghost of a Tale

zstd

3

4,7 GB

3,7 GB

79%

0,90 GB

15

0,94 GB

42

Ghostrunner

zstd

3

24 GB

20 GB

84%

3,7 GB

15

43

Gibbous - a Cthulhu Adventure

zstd

3

9,0 GB

4,2 GB

47%

4,76%

15

4,1 GB

46%

4,87 GB

44

Gris

zstd

3

3,2 GB

1,5 GB

47%

1,70 GB

15

46%

1,73 GB

45

Hades

zstd

3

11 GB

10 GB

95%

480 MB

15

498 MB

46

Hand of Fate

zstd

3

2,5 GB

2,2 GB

90%

255 MB

15

89%

287 MB

47

Hand of Fate 2

zstd

3

4,1 GB

4,1 GB

99%

35 MB

15

38 MB

48

Hellblade: Sanua's Sacrifice

zstd

3

18 GB

16 GB

87%

2,3 GB

15

18 GB

96%

693 MB

49

Helldivers

zstd

3

6,4 GB

6,4 GB

99%

25 MB

15

27 MB

50

Hob

zstd

3

2,4 GB

2,2 GB

90%

230 MB

15

2,1 GB

89%

250 MB

51

Hollow Knight

zstd

3

7,5 GB

1,5 GB

20%

5,87 GB

15

1,4 GB

19%

5,98 GB

52

Inmost

zstd

3

1,3 GB

649 MB

47%

709 MB

15

638 MB

720 MB

53

Jotun

zstd

3

3,8 GB

1,8 GB

48%

1,91 GB

15

49%

1,84 GB

54

Journey

zstd

3

3,3 GB

1,8 GB

55%

1,49 GB

15

1,9 GB

56%

1,44 GB

55

Katana ZERO

zstd

3

216 MB

178 MB

82%

38 MB

15

177 MB

81%

39 MB

56

Kate

zstd

3

254 MB

104 MB

40%

151 MB

15

100 MB

39%

155 MB

57

Limbo

zstd

3

98 MB

97 MB

98%

1,7 MB

15

1,8 MB

58

Little Nightmare

zstd

3

8,9 GB

5,8 GB

65%

3,1 GB

15

4,8 GB

54%

4,1 GB

59

Loop Hero

zstd

3

140 MB

116 MB

83%

22,8 MB

15

115 MB

82%

23,9 MB

60

Magicka

zstd

3

1,6 GB

1,6 GB

96%

68 MB

15

95%

71 MB

61

Magicka 2

zstd

3

2,9 GB

99%

8,1 MB

15

2,9 GB

8,7 MB

62

Mark of the Ninja: Remastered

zstd

3

7,5 GB

6,9 GB

92%

564 MB

15

591 MB

63

Master of Anima

zstd

3

1,5 GB

1,2 GB

81%

292 MB

15

80%

308 MB

64

METAL GEAR RISING: REVENGEANCE

zstd

3

24 GB

24 GB

99%

17,8 MB

15

19,4 MB

65

Moonlighter

zstd

3

1,1 GB

577 MB

48%

608 MB

15

572 MB

613 MB

66

Move or Die

zstd

3

666 MB

572 MB

85%

94 MB

15

567 MB

99 MB

67

My Friend Pedro

zstd

3

3,5 GB

2,9 GB

82%

637 MB

15

81%

666 MB

68

Nier:Automata

zstd

3

40 GB

37 GB

91%

3,5 GB

15

3,3 GB

69

Nine Parchments

zstd

3

5,7 GB

5,7 GB

98%

68 MB

15

78 MB

70

Ori and the Blind Forest: Definitive Edition

zstd

3

10 GB

4,9 GB

48%

5,3 GB

15

4,7 GB

46%

5,5 GB

71

Ori and the Will of the Wisps

zstd

3

11 GB

5,5 GB

48%

5,8 GB

15

5,3 GB

46%

6,1 GB

72

Othercide

zstd

3

6,0 GB

5,9 GB

98%

94 MB

15

113 MB

73

Out of Line

zstd

3

1,3 GB

497 MB

37%

836 MB

15

476 MB

35%

857 MB

74

Outland

zstd

3

675 MB

593 MB

87%

82 MB

15

589 MB

86 MB

75

Overcooked! 2

zstd

3

7,9 GB

7,7 GB

98%

161 MB

15

97%

169 MB

76

Papers, Please

zstd

3

58 MB

45 MB

77%

13 MB

15

44 MB

76%

13,6 MB

77

Path of Exile

zstd

3

27 GB

27 GB

99%

27 MB

15

29 MB

78

Peace, Death!

zstd

3

83 MB

76 MB

91%

7,2 MB

15

7,5 MB

79

Peace, Death! 2

zstd

3

34 MB

26 MB

78%

7,04 MB

15

7,51 MB

80

Pummel Party

zstd

3

2,1 GB

1,4 GB

67%

712 MB

15

66%

723 MB

81

Remember Me

zstd

3

6,7 GB

6,6 GB

99%

57 MB

15

58 MB

82

Rocket League

zstd

3

18 GB

18 GB

99%

20 MB

15

46 MB

83

RUINER

zstd

3

10 GB

10 GB

99%

50 MB

15

77 MB

84

Salt and Sanctuary

zstd

3

563 MB

540 MB

95%

23 MB

15

24 MB

85

Samorost 1

zstd

3

68 MB

68 MB

99%

19 KB

15

23 KB

86

Samorost 2

zstd

3

141 MB

141 MB

99%

1,22 MB

15

140 MB

98%

1,33 MB

87

Samorost 3

zstd

3

1,1 GB

1,0 GB

99%

9,5 MB

15

96%

43 MB

88

Sekiro: Shadow Die Twice

zstd

3

13 GB

13 GB

99%

1,5 MB

15

1,6 MB

89

Severed Steel

zstd

3

4,0 GB

2,7 GB

68%

1,22 GB

15

67%

1,26 GB

90

Shadow Tactics: Blades of the Shogun

zstd

3

7,3 GB

5,0 GB

69%

2,2 GB

15

4,8 GB

66%

2,5 GB

91

Shadowrun Returns

zstd

3

2,8 GB

1,1 GB

39%

1,68 GB

15

1,0 GB

37%

1,74 GB

92

Shattered - Tale of the Forgotten King

zstd

3

6,3 GB

6,3 GB

99%

14,7 MB

15

15,7 MB

93

Shiro

zstd

3

80 MB

74 MB

91%

6,5 MB

15

73 MB

6,7 MB

94

Skul: The Hero Slayer

zstd

3

1016 MB

1001 MB

98%

14,5 MB

15

987 MB

97%

29 MB

95

SpeedRunners

zstd

3

662 MB

651 MB

98%

11 MB

15

650 MB

12 MB

96

Spiritfarer: Farewell

zstd

3

6,0 GB

2,3 GB

38%

3,60 GB

15

39%

3,58 GB

97

Stoneshard: Prologue

zstd

3

289 MB

261 MB

90%

27,2 MB

15

260 MB

89%

28,4 MB

98

Stories: The Path of Destinies

zstd

3

1,6 GB

1,6 GB

99%

13,8 MB

15

14,8 MB

99

Styx: Master of Shadow

zstd

3

6,7 GB

6,6 GB

98%

108 MB

15

114 MB

100

Styx: Shards of Darkness

zstd

3

10 GB

10 GB

99%

17,1 MB

15

22,9 MB

101

Sundered: Eldritch Edition

zstd

3

2,2 GB

1,7 GB

75%

584 MB

15

1,5 GB

69%

719 MB

102

SYNTHETIK

zstd

3

599 MB

518 MB

86%

81 MB

15

516 MB

83 MB

103

Tabletop Simulator

zstd

3

2,7 GB

1,7GB

65%

0,91 GB

15

63%

0,95 GB

104

The Escapists 2

zstd

3

2,4 GB

1,7 GB

71%

710 MB

15

717 MB

105

The Life and Suffering of Sir Brante

zstd

3

2,7 GB

1,1 GB

42%

1,52 GB

15

43%

1,48 GB

106

The Cave

zstd

3

1,1 GB

1,1 GB

98%

22 MB

15

24 MB

107

The Red Solstice

zstd

3

2,7 GB

1,4 GB

52%

1,31 GB

15

51%

1,34 GB

108

They Always Run

zstd

3

10 GB

4,2 GB

39%

6,6 GB

15

3,8 GB

34%

7,1 GB

109

This War of Mine

zstd

3

2,6 GB

2,5 GB

98%

34 MB

15

36 MB

110

Titan Souls

zstd

3

206 MB

183 MB

88%

21,9 MB

15

182 MB

22,5 MB

111

Transistor

zstd

3

3,0 GB

2,7 GB

88%

364 MB

15

87%

384 MB

112

Trine

zstd

3

1,3 GB

1,3 GB

97%

41 MB

15

96%

44 MB

113

Undertale

zstd

3

155 MB

141 MB

90%

14,2 MB

15

140 MB

14,9 MB

114

Valiant Hearts: The Great War

zstd

3

1,2 GB

1,1 GB

99%

9,8 MB

15

10,2 MB

115

Vanquish

zstd

3

18 GB

18 GB

99%

7,7 MB

15

12,3 MB

116

Vesper

zstd

3

2,8 GB

998 NB

34%

1,88 GB

15

964 MB

32%

1,92 GB

117

Void Bastards

zstd

3

5,7 GB

2,3 GB

40%

3,30 GB

15

41%

3,28 GB

118

Wasteland 2: Director's Cut

zstd

3

14 GB

13 GB

91%

1,24 GB

15

1.10 GB

119

Wasteland 3

zstd

3

26 GB

24 GB

91%

2,11 GB

15

23 GB

89%

2,71 GB

120

Witch It

zsta

3

4,2 GB

4,1 GB

98%

85 MB

15

97%

95 MB

121

Wizard of Legend

zstd

3

786 MB

475 MB

60%

312 MB

15

468 MB

59%

318 MB

Итого

zstd

3

761 GB

666 GB

87%

94 GB

15

664 GB

97 GB

Кэш шейдеров представленных здесь игр в Steam

zstd

3

26 GB

25 GB

99%

217 MB

15

218 MB

Примечания:

  • По возможности данный список будет расширяться новыми играми и другими алгоритмами сжатия.

  • U/N - выраженное в процентах соотношение количества фактически занятого места к необходимому, т.е. если от 100% отнять U/N можно получить процент сэкономленного места на диске. Из чего следует, что чем меньше данный показатель, тем лучше.

  • Экономия рассчитывалась вручную с округлением в меньшую сторону. Другими словами, если получалось 1,3087... GB, то записывалось как 1,30 GB.

Промежуточные результаты#
  • 64 игр из представленных 121 - практически не сжимаются, экономия места достигает всего 0-10%.

  • 33 игр из представленных 121 - сжимаются с низкой эффективностью, экономия места составляет 11-40%.

  • 22 игры из представленных 121 - сжимаются со средней эффективностью, экономия места составляет 41-70%.

  • 2 игры из представленных 121 - сжимаются хорошо, экономия места составляет 71-90%.

  • Кэш шейдеров, который собирается и хранится на диске в Steam (при включении данной функции) сжимается незначительно - менее 1% экономии.

  • С учетом разницы в экономии места порядка 3 GB между максимальной доступной степенью сжатия 15 и рекомендуемой для Btrfs - 3, и значительного падения скорости выполнения сжатия, а следовательно и скорости записи на диск, можно отметить, что использование для игр степени сжатия выше 3 выглядит крайне сомнительно.

    Во многом полученные результаты можно объяснить тем что в играх с ростом их объема все чаще могут использоваться алгоритмы сжатия, из-за чего сжатие на уровне файловой системы уже менее эффективно.

Файловая система bcachefs#

Относительно новая файловая система с использованием CoW, которую не так давно добавили в основную ветку ядра Linux в качестве экспериментальной. Активно разрабатывается, но последнее время возникает ряд разногласий между разработчиком файловой системой и разработчиками ядра.