Создание разреженного (автоматически расширяющегося и сжатого) файла подкачки с поддержкой отверстий

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

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

Предположим, что у нас есть 1 жесткий диск объемом 10 ГБ. Мы можем создать разреженный файл подкачки через (это было получено из обходных путей обхода файлов BTRFS):

swapfile=$(losetup -f) truncate -s 10G /swap losetup $swapfile /swap mkswap $swapfile swapon $swapfile 

Нам нужно было сделать это, потому что swapon не разрешает разреженные файлы.

Итак, у нас есть две проблемы:

  1. Быстрое сокращение фрагментации, хотя это снижает производительность, это не должно мешать ему работать правильно?
  2. Редкий файл не сокращается по размеру, поэтому нам нужно выполнить перфорирование отверстий ( https://stackoverflow.com/a/2026015/582917 & https://unix.stackexchange.com/a/52029/56970 ), поэтому возможно, мы можем просто периодически запускать fallocate -d /swap или fallocate -d $swapfile (я еще не пробовал это делать), чтобы пробивать отверстия в файл подкачки, чтобы сделать контракт после использования.

Мы можем установить vm.swappiness = 0 или vm.swappiness = 1 чтобы сделать так, чтобы процессы (которые важнее для меня) вряд ли использовали этот обмен.

Наконец, это будет работать с спящим режимом в соответствии с инструкциями в https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file ?

Interesting Posts

Разделение RGB-файла в 3 файла, по одному для каждого канала?

iCloud перестает работать при подключении к OpenVPN

Строка состояния экрана для отображения текущей директории для оболочки zsh / bash

systemd и OpenVPN после обновления Ubuntu

Проблемы с установкой PCRE на ubuntu

Ping список IP-адресов и вывод дубликатов

Как предотвратить добавление / удаление цикла udev

Нормально ли иметь дубликат / var mount при использовании докеров?

Как установить vncserver с паролем?

Не может ssh beaglebone?

Как я могу поговорить с моим знакомым по Linux Cinnamon

человек xargs говорит, что стандартный ввод ограничивается пробелами; но так ли?

как смонтировать хранилище центров обработки данных на сервере, чтобы пользователь мог получить к нему доступ удаленно?

Есть ли способ сканирования локальной сети с включенной dhcp для просмотра IP-адреса подключенных устройств с компьютера GNU / Linux?

Командная строка SQLite3: как вы отменяете команду?

Linux и Unix - лучшая ОС в мире.