Рейтинг@Mail.ru

NetCloud

Простыми словами о сетевых технологиях

Linux Swap: Меняем раздел на файл

На заре Linux мы измеряли оперативную память в мегабайтах. Тогда ее хватало на запуск всего нескольких приложений. Чтобы поддерживать систему в рабочем состоянии, необходим был файл подкачки [swap].

Но зачем он теперь, когда на новых компьютерах ОЗУ хоть отбавляй? Дело в том, что раздел подкачки очень пригодится в тех редких случаях, когда памяти все же будет мало.

По умолчанию в Ubuntu вместо раздела по умолчанию используется файл подкачки. Рекомендуется на него отводить либо 2% свободного места на диске, либо 2 ГБ, в зависимости от того, что меньше. Учтите, что раздел подкачки вдвое больше размера вашей оперативной памяти; в моем случае это дважды по 4 ГБ, то есть 8 ГБ. Это значит, что я сберегу 6 ГБ дискового пространства.

Создать новый файл подкачки легче, чем создать новый раздел или изменить его объем. При чистой установке Ubuntu 17.04 установщик создаст файл подкачки, если вы специально не попросите создать раздел. С другой стороны, во время обновления используется ваш текущий раздел подкачки.

Что же остается пользователям, желающим обновиться? Пользоваться старой системой они не хотят, но не хотят и целиком ее переустанавливать. Решение есть, и это не так сложно, хотя рекомендуется соблюдать осторожность; поэтому позаботьтесь припасти диск восстановления. Если у вас не Ubuntu, не расстраиваетесь. Процедура достаточно проста и  применима к другим дистрибутивам.

Создание файла подкачки

Создать файл подкачки можно командой fallocate, либо dd. Сохранить его надо в корневом каталоге. Быстрее всего это делается с fallocate, но она использует действующую файловую систему, так что не с каждой будет работать хорошо. Зато для ext4 она подходит:

$ sudo fallocate -l 2G /swapfile

Данной командой создаем файл подкачки с именем swapfile размером 2 ГБ.

С dd данная процедура займет чуть больше времени, но этот способ более надежен:

$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=2147483648

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

$ sudo chown root:root /swapfile

$ sudo chmod 0600 /swapfile

Инициализируйте файл как файл подкачки:

$ sudo mkswap /swapfile

Проверьте, что ваш текущий файл подкачки имеет приоритет -1, то есть что приоритет не назначен:

$ swapon -show

ryagxden

Чтобы убедиться, что система использует новый файл подкачки, при запуске файла подкачки используйте параметр задания приоритета. Пространство подкачки с наименьшим приоритетом выключится быстрее.

Ваш текущий раздел подкачки будет отключен (установлен в -1) по умолчанию:

$ sudo swapon -p 10 /swapfile 

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

$ swapon -show

bl0vpylo

Увидев, что система использует ваш файл подкачки, вы можете отключить swap (можно использовать swapoff -a) для своего раздела. В идеале ваш старый раздел подкачки должен быть пустым, но это необязательно:

$ sudo swapoff /dev/sda10

Команда swapoff способна выйти из строя из-за ошибки ядра, без каких-либо видимых системных эффектов, поэтому проверьте, исчез ли раздел из списка:

$ swapon -show

qpivsuex

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

Закрепляем изменения

Чтобы использовать файл подкачки, надо сделать так, чтобы система запускала его при загрузке. Простейший способ сделать это — добавить строку в файл fstab, например, так:

$ sudo nano /etc/fstab

И добавляем строку:

/swapfile none swap 0 0 

После чего сохраняемся.

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

/swapfile_1 none swap defaults,pri=100 0 0

/swapfile_2 none swap defaults,pri=10 0 0

Система использует swapfile_1 чаще, чем swapfile_2, и было бы полезно, если бы swapfile_2 находился на другом диске. Вам также потребуется удалить раздел подкачки из того же файла. Но fstab — более старый инструмент, и в большинстве дистрибутивов systemd-fstabgenerator во время загрузки преобразует его в файл подкачки.

Теперь может показаться, что раздел подкачки в системе не используется, но посмотрите, что делает systemd-gpt-auto-generator. Он находит все разделы подкачки и создает соответствующий файл в начале процесса загрузки. Если вы хотите загрузить систему один или два раза, прежде чем восстанавливать раздел подкачки, не нужны другие меры. Чтобы получить раздел подкачки, но не использовать его, надо его замаскировать:

$ systemctl mask dev-sdXX

Теперь попробуйте систему некоторое время и убедитесь, что места для подкачки достаточно. Решив вернуть наше дисковое пространство, мы удалим раздел. Для этого подойдет GParted, fdisk или подобное. В systemd операция может закончиться неудачей.


 

Обсуждение закрыто.