- SWAP — как создать, подключить, очистить и отключить файл подкачки в Linux
- Что такое SWAP
- Когда может понадобиться своп
- Преимущества SWAP
- Недостатки SWAP
- Как создать и подключить файл подкачки SWAP
- Проверка наличия свопа в системе
- Проверка наличия свободного места на диске
- Какого размера создать swap
- Создание файла SWAP
- Как подключить SWAP файл
- Добавление свопа в автозагрузку
- Дополнительные вопросы
- Как очистить SWAP в Linux
- Как безопасно отключить своп навсегда и вернуть пространство? (на Debian Jessie)
- 5 ответов
- Как безопасно отключить своп навсегда и освободить место? (на Debian Джесси)
SWAP — как создать, подключить, очистить и отключить файл подкачки в Linux
Что такое SWAP
SWAP (своп) — это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) перемещается на хранение на HDD (жёсткий диск), SSD (твёрдотельный накопитель), флеш-накопитель или иное вторичное хранилище. Как правило, swapping (свопинг) происходит, когда оперативная память переполнена, и ей для работы требуется дополнительное пространство.
Когда может понадобиться своп
Зачастую, от недостатка свободной памяти первой страдает база данных. Вы можете сталкиваться с проблемами типа:
- Постоянное падение сайта: Ошибка соединения с базой данных — означает, например, что MySQL упал;
- При внимательном изучении логов /var/log/mysql.log обнаруживается ошибка InnoDB: Fatal error: cannot allocate memory for the buffer pool . Она свидетельствует о том, что базе данных не хватает выделенной ей оперативной памяти для создания буфера.
При подобных симптомах и ошибках может помочь своппинг.
Преимущества SWAP
Сравнение стоимости оперативной памяти и SSD | ||
(цены актуальны на 7 июля 2017 года) | IHOR | FirstVDS |
Оперативная память, в среднем за 1 гигабайт | 100 рублей в месяц | 170 рублей в месяц |
SSD, в среднем за 1 гигабайт | 10 рублей в месяц | 13 рублей в месяц |
Как видно из таблицы, экономия выйдет примерно в 10 раз.
Недостатки SWAP
SWAP — это не замена оперативной памяти, а всего лишь его поддержка.
Как создать и подключить файл подкачки SWAP
Далее, в работе используется командная строка SSH.
Инструментарий: Far Manager или Putty.
Для примера приводятся команды из под root . Если Вы работаете не под root , перед командами задавайте префикс sudo
Проверка наличия свопа в системе
Для начала, нужно убедиться, что своп ещё не подключен:
Если команда выдала пустой результат или что-то навроде:
— значит, своп, скорее всего отсутствует.
Дополнительно проверим командой:
Если в таблице в строке swap стоит 0, значит своп отсутствует.
Проверка наличия свободного места на диске
Теперь, надо проверить, сколько свободного места есть на диске:
В результате, мы увидим что-то подобное:
Как мы видим, доступно 9 гигабайт дискового пространства — вполне достаточно, чтобы создать своп-файл.
Какого размера создать swap
Исходите из принципа — сколько может понадобиться, столько и выделяйте. Как правило, можно начинать с размера объёма оперативной памяти, либо его удвоенного количества. Например, если у вас в системе 2 гигабайта оперативки, своп можно сделать размером 2-4 гигабайта, как правило, этого должно хватать. Но, Вы можете скорректировать его размер под себя.
Создание файла SWAP
Допустим, мы хотим создать swap-файл размером 4 гигабайта.
Далее, здесь существует 2 подхода, традиционный медленный и новый быстрый:
Быстрый способ Используем fallocate :
Результатом будет пустая строка, это нормально.
В отличие от dd , результат будет получен почти сразу, и я рекомендую именно его. Традиционный, медленный способ Или используем команду:
Синтаксис команды простой:
- dd — команда предназначена для того, чтобы что-то куда-то копировать побайтово;
- if=/dev/zero — указывает на источник, т.е. на то, откуда копируем, в данном случае из /dev/zero — это специальный файл в UNIX-подобных системах, представляющий собой источник нулевых байтов;
- of=/swapfile — указывает путь назначения, куда копируем данные;
- bs=1G — количество байт, которые будут записаны за раз. В нашем случае, 1 гигабайт. Обозначения: G — гигабайт, M — мегабайт, K — килобайт, и так далее;
- count=4 — сколько блоков размером с bs будет создано, в нашем случае 4.
Будьте очень внимательны с синтаксисом команды, потому что если, например, ошибиться с определением пути для of= (куда сохранять файл), можно повредить данные на диске.
Теперь, когда файл создан, проверим результат:
В результате увидим:
-rw-r—r— 1 root root 4.0G Jul 07 16:16 /swapfile
Как видим, файл создался верно и с нужным объёмом.
Как подключить SWAP файл
Для начала, ограничим права доступа к вновь созданному файлу.
Предоставление другим пользователям возможности читать или писать в этот файл будет представлять собой огромный риск для безопасности, поэтому ограничение командой ниже строго обязательно:
В результате, мы должны увидеть подобное:
-rw——- 1 root root 4.0G Jul 07 16:16 /swapfile
Права прописаны верно.
Теперь нужно сделать из swapfile файл подкачки:
В результате, увидим примерно следующее:
Setting up swapspace version 1, size = 4193300 KiB
no label, UUID=e5f3e9cf-c1a9-4ed4-b8ab-711b6a7d6544
Теперь, файл готов в роли свопа. Подключим его к системе:
Если на данном этапе выходит похожая ошибка, значит, скорее всего, своп запрещено подключать в систему. Такое ограничение часто ставят на VDS с виртуализацией OpenVZ. Рекомендую использовать IHOR, сервера от 100 рублей в месяц и виртуализация KVM позволяют включать SWAP.
Всё, теперь своп подключен и работает. Осталось проверить правильность работы самой первой командой:
Своп также будет виден в стандартных командах:
Всё, теперь точно, своп в системе готов и будет использоваться при необходимости.
Добавление свопа в автозагрузку
Чтобы при перезагрузке сервера своп автоматически подтягивался в систему, нужно прописать его в /etc/fstab :
Теперь система знает, где и как при перезагрузке искать и подключать своп.
Проверить, подключен ли своп в автозагрузке, можно с помощью редактора:
Дополнительные вопросы
Как очистить SWAP в Linux
Вообще, это делается с помощью отключения и включения свопа.
Однако, я не рекомендую прибегать к этому способу, так как swap просто очищается, а не переносится в ОЗУ, и, в случае наличия данных системных процессов, система может стать недоступна.
Источник
Как безопасно отключить своп навсегда и вернуть пространство? (на Debian Jessie)
Я установил Debian Jessie с разбиением по умолчанию на моем SSD-диске. Мое текущее разделение диска выглядит следующим образом:
Поскольку у меня 16 ГБ ОЗУ, я полагаю, мне не нужен swap . Но поскольку у меня есть другие диски, я могу создать файл подкачки . например, на одном из других дисков.
Можете ли вы рассказать мне, какие шаги я должен предпринять, чтобы удалить раздел swap правильно и постоянно , чтобы он не занимал дисковое пространство ? Я хочу удалить раздел подкачки, поскольку в настоящее время у меня есть только 128 ГБ SSD.
Вот что я пытался и перезагружал каждый раз; каждый из этих шагов не постоянный , или ничего не сделал :
Щелкните правой кнопкой мыши раздел swap и выберите команду Swapoff.
Комментируя swap раздел UUID в следующем файле:
Комментируя swap раздел UUID в следующем файле:
Выполнение этих команд в конце (как в этом, так и в противоположном порядке):
5 ответов
Если вы открыли GParted , закройте его. Его функция Swapoff не кажется постоянной.
Откройте терминал и станьте root ( su ); если у вас sudo , вы также можете сделать, например, sudo -i ; см. man sudo для всех вариантов):
Отключите раздел swap и /или все swap s:
Сделайте 100% уверенным, что раздел swap отключен:
Откройте текстовый редактор, с которым вы работаете в этом файле, например. nano если unsure:
Комментировать /удалить подкачку раздела UUID , например:
Откройте текстовый редактор, с которым вы работаете в этом файле, например. nano если unsure:
Комментировать /удалить ранее идентифицированный swap раздел UUID , например:
Не закрывайте терминал, поскольку он вам понадобится позже.
Примечание. . Следующие шаги различаются в зависимости от того, полагаетесь ли вы на CLI или графический интерфейс .
Откройте GParted , либо из меню, либо более удобно с терминала, который мы открыли:
Если у вас его нет, вы можете сделать это; затем снова запустите предыдущую команду:
Выберите диск в правом верхнем меню.
Как GParted активирует обменивать раздел при запуске, вам нужно будет щелкнуть правой кнопкой мыши конкретный swap и выберите Swapoff -> Это будет применено немедленно.
Удалить раздел подкачки с помощью правого клика -> Удалить. Вы должны применить изменения сейчас.
Измените размер основного /другого раздела правой кнопкой мыши -> Изменить размер /Переместить. Вы должны применить изменения сейчас.
Вернемся к терминалу, давайте воссоздаем загрузочные образы :
Теперь вы можете перезагрузиться, если хотите проверить, что машина загружается.
Я буду проверять VM , если мое решение работает, тогда я поделюсь им. Тем временем, см. этот ответ .
Выполнить с правами root:
И чтобы сделать это изменение постоянным, отредактируйте /etc/fstab и удалите или закомментируйте запись свопинга.
Отметьте /удалите соответствующую запись в /etc/fstab , чтобы предотвратить ее повторное включение при следующей загрузке, затем перезагрузите или запустите swapoff -a , чтобы отключить использование раздела подкачки для текущей системы.
Теперь удалите раздел подкачки, расширьте системный раздел поверх неиспользуемого пространства и расширьте действительную файловую систему. Я не знаю, может ли ваш графический менеджер разделов делать все это, но если он не может быть дистрибутивным агностическим способом, используя fdisk и resize2fs :
Наконец, мы расширяем текущую файловую систему, чтобы использовать новое свободное пространство (до сих пор фактическая файловая система не знала, что мы добавили немного места в ее основной раздел). По умолчанию resize2fs использует весь раздел, если не указан фиксированный размер, поэтому нам не нужно указывать ничего, кроме блока разделов устройство. Растущая файловая система (в отличие от сокращения) может быть выполнена онлайн с установленным разделением:
Теперь вы успешно отключили своп и восстановили неиспользуемое пространство, даже не перезагрузив его.
Обратите внимание, что процедура для Debian немного отличается и требует редактирования еще нескольких файлов. Ознакомьтесь с этим ответом для получения дополнительной информации.
Щелкните правой кнопкой мыши на разделе подкачки в GParted и выберите Swapoff. Затем удалите свой раздел подкачки, удалите его из /etc/fstab и восстановите свой initramfs и grub (возможно, необязательно).
Раздел подкачки не следует добавлять в initramfs с помощью initramfs , если раздел подкачки не существует.
Согласно этот пост , следующее это правильный способ регенерации initramfs и grub :
Вы можете щелкнуть правой кнопкой мыши на разделе подкачки в Gparted и выбрать опцию swapoff . Это быстрый способ выполнить то же самое, что вы просили.
Источник
Как безопасно отключить своп навсегда и освободить место? (на Debian Джесси)
Я установил Debian Jessie с разделами по умолчанию на моем SSD-диске. Мой текущий раздел диска выглядит так:
Поскольку у меня есть 16 ГБ ОЗУ, я предполагаю, что мне не нужен обмен . Но так как у меня есть другие дисководы, я могу, например, создать файл подкачки на одном из других дисков.
Можете ли вы сказать мне, какие шаги я должен предпринять, чтобы правильно и навсегда удалить раздел подкачки, чтобы он не занимал дисковое пространство ? Я хочу удалить раздел подкачки, так как в настоящее время у меня только 128 ГБ SSD.
Вот что я пробовал и перезагружал каждый раз; каждый из этих шагов не был постоянным или ничего не делал :
Щелкните правой кнопкой мыши по разделу подкачки и выберите Swapoff.
Закомментируем UUID раздела подкачки в следующем файле:
Закомментируем UUID раздела подкачки в следующем файле:
Выполнение этих команд в конце (как в этом, так и в обратном порядке):
Выполнить от имени пользователя root:
И чтобы сделать это изменение постоянным, отредактируйте /etc/fstab и удалите или закомментируйте запись подкачки.
Если вы открыли GParted , закройте его. Его функция Swapoff не является постоянной.
Откройте терминал и станьте root ( su ); если вы sudo включили, вы также можете сделать, например sudo -i ; см. man sudo все варианты):
Отключите определенный раздел подкачки и / или все разделы подкачки :
Убедитесь на 100%, что определенный раздел подкачки отключен:
Откройте текстовый редактор, в котором вы разбираетесь с этим файлом, например, nano если не уверены:
Закомментируйте / удалите UUID раздела подкачки , например:
Откройте текстовый редактор, в котором вы разбираетесь с этим файлом, например, nano если не уверены:
Закомментируйте / удалите ранее идентифицированный UUID раздела подкачки , например:
Не закрывайте терминал, так как он понадобится вам позже.
Примечание: следующие шаги различаются в зависимости от того, используете ли вы CLI или GUI .
Откройте GParted , либо из меню, либо удобнее из терминала, который мы открыли:
Если он не установлен, вы можете сделать это; затем повторите предыдущую команду:
Выберите диск в правом верхнем меню.
Поскольку GParted повторно активирует раздел подкачки при запуске, вам нужно будет щелкнуть правой кнопкой мыши конкретный раздел подкачки и щелкнуть Swapoff -> Это будет применено немедленно.
Удалите раздел подкачки, щелкнув правой кнопкой мыши -> Удалить. Вы должны применить изменения сейчас.
Измените размер вашего основного / другого раздела, щелкнув правой кнопкой мыши -> Изменить размер / Переместить. Вы должны применить изменения сейчас.
Вернемся к терминалу, давайте воссоздадим загрузочные образы :
Вы можете перезагрузиться сейчас, если хотите проверить, загружается ли машина.
Я проверю в ВМ с, если мое решение работает, тогда я поделюсь им. А пока смотрите этот ответ .
Прокомментируйте / удалите соответствующую запись в, /etc/fstab чтобы предотвратить ее повторное включение при следующей загрузке, затем перезагрузите или запустите, swapoff -a чтобы отключить использование раздела подкачки для работающей в данный момент системы.
Теперь удалите раздел подкачки, увеличьте системный раздел над этим неиспользуемым пространством и расширьте действительную файловую систему. Я не знаю, сможет ли ваш графический менеджер разделов сделать все это, но если он не может, вот дистро-независимый способ сделать это, используя fdisk и resize2fs :
Наконец, мы расширяем текущую файловую систему, чтобы использовать новое свободное пространство (до сих пор фактическая файловая система не знала, что мы добавили еще немного места в ее основной раздел). По умолчанию resize2fs используется весь раздел, если не указан фиксированный размер, поэтому нам не нужно указывать ничего, кроме блочного устройства раздела. Увеличение файловой системы (в отличие от сжатия) может быть выполнено в режиме онлайн с подключенным разделом:
Теперь вы успешно отключили подкачку и освободили неиспользуемое пространство даже без перезагрузки.
Обратите внимание, что процедура для Debian немного отличается и требует редактирования еще нескольких файлов. Проверьте этот ответ для получения дополнительной информации.
Источник