Jump to content
From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи zram. Дата последней синхронизации: 28 марта 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- Пространство подкачки
- zswap (Русский)

zram, ранее известный как compcache, — это модуль ядра Linux, позволяющий создать сжатое блочное устройство в ОЗУ, то есть RAM-диск со сжатием на лету. Создаваемое этим модулем блочное устройство можно использовать в качестве подкачки или как обычный RAM-диск. Чаще всего zram используется для хранения временных файлов (`/tmp`) и для подкачки. Изначально zram выполнял только последнюю функцию, отсюда и первоначальное название «compcache» («compressed cache»).

## Использование в качестве подкачки

### Отключение zswap

Так как zswap включен по умолчанию, перед включением zram его стоит отключить, чтобы он не работал как кэш подкачки перед zram. Включение их обоих также приводит к отображению некорректной статистики в zramctl(8), и zram остаётся в основном неиспользуемым, потому что zswap перехватывает и сжимает страницы памяти до того как они попадут в zram.

### Автоматически

zram-generator предоставляет юнит `systemd-zram-setup@.service` для автоматической инициализации устройства zram без необходимости включать/запускать шаблон или его экземпляры. Смотрите zram-generator(8) и zram-generator.conf(5).

Например, чтобы создать подкачку в zram, использующую сжатие `zstd` и способную занимать всю доступную ОЗУ, установите пакет zram-generator и создайте такой файл:

    /etc/systemd/zram-generator.conf

    [zram0]
    zram-size = ram
    compression-algorithm = zstd

Затем перезагрузитесь и проверьте статус подкачки на настроенном вами устройстве `/dev/zramN`, посмотрев статус экземпляра юнита `systemd-zram-setup@zramN.service` или используя zramctl(8).

В качестве альтернативы можно использовать пакет zramswapAUR, который предоставляет автоматический скрипт для настройки подкачки с высоким приоритетом и размером по умолчанию 20% от размера ОЗУ вашей системы. Чтобы делать это автоматически при каждой загрузке, включите службу `zramswap.service`. Также есть пакет zramdAUR, позволяющий автоматически настроить zram с использованием сжатия zstd по умолчанию, его конфигурацию можно изменить в `/etc/default/zramd`. Его можно запустить при загрузке системы, включив службу `zramd.service`.

### Вручную

Пример: чтобы настроить одно устройство zram со сжатием lz4 с ёмкостью 32 ГиБ и приоритетом выше обычного (только для текущего сеанса):

    # modprobe zram
    # echo lz4 > /sys/block/zram0/comp_algorithm
    # echo 32G > /sys/block/zram0/disksize
    # mkswap --label zram0 /dev/zram0
    # swapon --priority 100 /dev/zram0

Для выключения можно перезагрузиться или выполнить

    # swapoff /dev/zram0
    # modprobe -r zram

Подробное объяснение всех шагов, опций и потенциальных проблем описано в официальной документации модуля zram.

#### Подкачка в zram с использованием правила udev

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

Сперва включите автоматическую загрузку модуля:

    /etc/modules-load.d/zram.conf

    zram

Настройте количество требуемых устройств `/dev/zram`:

    /etc/modprobe.d/zram.conf

    options zram num_devices=2

Создайте правило udev:

    /etc/udev/rules.d/99-zram.rules

    ACTION=="add", KERNEL=="zram[0-1]", ATTR{comp_algorithm}="zstd", ATTR{disksize}="512M", RUN="/usr/bin/mkswap -U clear /dev/%k", TAG+="systemd"

Добавьте `/dev/zram` в ваш fstab.

    /etc/fstab

    /dev/zram0 none swap defaults 0 0
    /dev/zram1 none swap defaults 0 0

Category:

- Kernel (Русский)