Swap: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 15: | Строка 15: | ||
Все дальнейшие операции необходимо выполнять с правами суперпользователя: | Все дальнейшие операции необходимо выполнять с правами суперпользователя: | ||
<syntaxhighlight lang="bash"> | |||
$ su- | |||
</syntaxhighlight> | |||
Удостовериться, что swap отсутствует: | Удостовериться, что swap отсутствует: | ||
swapon --show | <syntaxhighlight lang="bash"> | ||
# swapon --show | |||
</syntaxhighlight> | |||
Вывод должен быть пустой. | Вывод должен быть пустой. | ||
Начиная с ядра Linux 5.7, согласно документации ''mkswap'', для достижения "монолитности" заполнения пространства файла в файловой системе, swap-файл следует создавать с помощь утилиты ''dd'': | Начиная с ядра Linux 5.7, согласно документации ''mkswap'', для достижения "монолитности" заполнения пространства файла в файловой системе, swap-файл следует создавать с помощь утилиты ''dd'': | ||
dd if=/dev/zero of=/swapfile bs=4M count=1024 status=progress | <syntaxhighlight lang="bash"> | ||
# dd if=/dev/zero of=/swapfile bs=4M count=1024 status=progress | |||
</syntaxhighlight> | |||
Пояснения: | Пояснения: | ||
Строка 32: | Строка 38: | ||
В целях безопасности необходимо ограничить права, чтобы другие пользователи не могли взаимодействовать с файлом: | В целях безопасности необходимо ограничить права, чтобы другие пользователи не могли взаимодействовать с файлом: | ||
chmod 600 /swapfile | <syntaxhighlight lang="bash"> | ||
# chmod 600 /swapfile | |||
</syntaxhighlight> | |||
Тем самым право на чтение и запись будет только у суперпользователя, а всем остальным — запрещено всё: | Тем самым право на чтение и запись будет только у суперпользователя, а всем остальным — запрещено всё: | ||
ls -l /swapfile | <syntaxhighlight lang="bash"> | ||
$ ls -l /swapfile | |||
</syntaxhighlight> | |||
Вывод: | Вывод: | ||
<syntaxhighlight lang="bash"> | |||
-rw------- 1 root root 4294963200 июл 6 2020 /swapfile | -rw------- 1 root root 4294963200 июл 6 2020 /swapfile | ||
</syntaxhighlight> | |||
Вместо нулей создать внутри swap-файла специальную файловую систему ''swap'': | Вместо нулей создать внутри swap-файла специальную файловую систему ''swap'': | ||
mkswap /swapfile | <syntaxhighlight lang="bash"> | ||
# mkswap /swapfile | |||
</syntaxhighlight> | |||
Вывод: | Вывод: | ||
<syntaxhighlight lang="bash"> | |||
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes) | Setting up swapspace version 1, size = 4 GiB (4294963200 bytes) | ||
без метки, UUID=2dd19e70-e9aa-4226-aa04-41e1206ede28 | без метки, UUID=2dd19e70-e9aa-4226-aa04-41e1206ede28 | ||
</syntaxhighlight> | |||
Остаётся активировать подготовленный swap-файл: | Остаётся активировать подготовленный swap-файл: | ||
swapon /swapfile | <syntaxhighlight lang="bash"> | ||
# swapon /swapfile | |||
</syntaxhighlight> | |||
После активации swap-файла мы можем проверить его наличие командой: | После активации swap-файла мы можем проверить его наличие командой: | ||
swapon --show | <syntaxhighlight lang="bash"> | ||
# swapon --show | |||
</syntaxhighlight> | |||
[[Файл:Swap file3.png]] | [[Файл:Swap file3.png]] | ||
С тем учётом, что созданный swap включен вручную в рамках активной сессии, он будет работать только до перезапуска сессии (перезагрузки системы). Для постоянной работы необходимо прописать автоматическое монтирование в ''/etc/fstab'': | С тем учётом, что созданный swap включен вручную в рамках активной сессии, он будет работать только до перезапуска сессии (перезагрузки системы). Для постоянной работы необходимо прописать автоматическое монтирование в ''/etc/fstab'': | ||
echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab | <syntaxhighlight lang="bash"> | ||
# echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab | |||
</syntaxhighlight> | |||
Пояснения: | |||
* tee -a /etc/fstab — добавить запись в конец файла без перезаписывания существующих записей. | * tee -a /etc/fstab — добавить запись в конец файла без перезаписывания существующих записей. | ||
Проверить правильность заполнения ''fstab'': | Проверить правильность заполнения ''fstab'': | ||
findmnt --verify | <syntaxhighlight lang="bash"> | ||
# findmnt --verify | |||
</syntaxhighlight> | |||
В выводе не должно быть ошибок, кроме предупреждения, что файл используется напрямую без привязки (bind): | В выводе не должно быть ошибок, кроме предупреждения, что файл используется напрямую без привязки (bind): | ||
<syntaxhighlight lang="bash"> | |||
none | none | ||
[W] non-bind mount source /swapfile is a directory or regular file | [W] non-bind mount source /swapfile is a directory or regular file | ||
0 parse errors, 0 errors, 1 warning | 0 parse errors, 0 errors, 1 warning | ||
</syntaxhighlight> | |||
=== Удаление файла подкачки === | === Удаление файла подкачки === | ||
Перед удалением сначала необходимо отключить использование swap: | Перед удалением сначала необходимо отключить использование swap: | ||
<syntaxhighlight lang="bash"> | |||
# swapoff /swapfile | |||
</syntaxhighlight> | |||
После можно удалить файл: | После можно удалить файл: | ||
<syntaxhighlight lang="bash"> | |||
# rm /swapfile | |||
</syntaxhighlight> | |||
[[Файл:Swap file remove.png]] | [[Файл:Swap file remove.png]] | ||
Так же необходимо отключить автоматическое монтирование. Открыть ''/etc/fstab'' и удалить ранее внесённую строку: | Так же необходимо отключить автоматическое монтирование. Открыть ''/etc/fstab'' и удалить ранее внесённую строку: | ||
<syntaxhighlight lang="bash"> | |||
/swapfile none swap sw 0 0 | /swapfile none swap sw 0 0 | ||
</syntaxhighlight> | |||
Сохранить изменения и проверить ''fstab'': | Сохранить изменения и проверить ''fstab'': | ||
findmnt --verify | <syntaxhighlight lang="bash"> | ||
# findmnt --verify | |||
</syntaxhighlight> | |||
В выводе не должно быть ошибок: | В выводе не должно быть ошибок: | ||
<syntaxhighlight lang="bash"> | |||
Success, no errors or warnings detected | Success, no errors or warnings detected | ||
</syntaxhighlight> | |||
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}} |
Версия от 18:19, 7 ноября 2023
swap — это специальная системная область, предварительно выделенная на накопителе (жёстком диске) и используемая операционной системой с целью резервирования свободного пространства, которое может быть задействовано при нехватке ОЗУ.
В Linux используется два варианта области подкачки:
- В виде раздела на накопителе.
- В виде файла.
В современных условиях предпочтительнее использовать swap в виде файла.
Особенности swap-файла:
- Можно легко изменять размер или полностью удалить, что затруднительно для варианта в виде раздела.
- В сравнении со swap-разделом есть незначительное снижение производительности.
- Для использования гибернации требуется дополнительная подготовка (получение UUID и смещения заголовка) и пересоздание загрузочного образа initrd.
Создание swap-файла
Все дальнейшие операции необходимо выполнять с правами суперпользователя:
$ su-
Удостовериться, что swap отсутствует:
# swapon --show
Вывод должен быть пустой.
Начиная с ядра Linux 5.7, согласно документации mkswap, для достижения "монолитности" заполнения пространства файла в файловой системе, swap-файл следует создавать с помощь утилиты dd:
# dd if=/dev/zero of=/swapfile bs=4M count=1024 status=progress
Пояснения:
- if=/dev/zero — это виртуальное устройство, генерирующее нулевые байты. Из него будет браться поток нулей и записываться в файл.
- of=/swapfile — создаваемый и наполняемый нулями swap-файл.
- bs=4M — размер порции данных в мегабайтах.
- count=1024 — число порций данных, которые будут записаны в указанный файл. В виду того, что требуется записать 4096 МБ данных, то при размере порции 4 МБ необходимо 1024 порции.
- status=progress — показывать ход прогресса операции.
В целях безопасности необходимо ограничить права, чтобы другие пользователи не могли взаимодействовать с файлом:
# chmod 600 /swapfile
Тем самым право на чтение и запись будет только у суперпользователя, а всем остальным — запрещено всё:
$ ls -l /swapfile
Вывод:
-rw------- 1 root root 4294963200 июл 6 2020 /swapfile
Вместо нулей создать внутри swap-файла специальную файловую систему swap:
# mkswap /swapfile
Вывод:
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
без метки, UUID=2dd19e70-e9aa-4226-aa04-41e1206ede28
Остаётся активировать подготовленный swap-файл:
# swapon /swapfile
После активации swap-файла мы можем проверить его наличие командой:
# swapon --show
С тем учётом, что созданный swap включен вручную в рамках активной сессии, он будет работать только до перезапуска сессии (перезагрузки системы). Для постоянной работы необходимо прописать автоматическое монтирование в /etc/fstab:
# echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab
Пояснения:
- tee -a /etc/fstab — добавить запись в конец файла без перезаписывания существующих записей.
Проверить правильность заполнения fstab:
# findmnt --verify
В выводе не должно быть ошибок, кроме предупреждения, что файл используется напрямую без привязки (bind):
none
[W] non-bind mount source /swapfile is a directory or regular file
0 parse errors, 0 errors, 1 warning
Удаление файла подкачки
Перед удалением сначала необходимо отключить использование swap:
# swapoff /swapfile
После можно удалить файл:
# rm /swapfile
Так же необходимо отключить автоматическое монтирование. Открыть /etc/fstab и удалить ранее внесённую строку:
/swapfile none swap sw 0 0
Сохранить изменения и проверить fstab:
# findmnt --verify
В выводе не должно быть ошибок:
Success, no errors or warnings detected