Debian swapon команда не найдена
Когда может понадобиться своп
Зачастую, от недостатка свободной памяти первой страдает база данных. Вы можете сталкиваться с проблемами типа:
При подобных симптомах и ошибках может помочь своппинг.
Преимущества SWAP
Сравнение стоимости оперативной памяти и SSD | ||
(цены актуальны на 7 июля 2017 года) | IHOR | FirstVDS |
Оперативная память, в среднем за 1 гигабайт | 100 рублей в месяц | 170 рублей в месяц |
SSD, в среднем за 1 гигабайт | 10 рублей в месяц | 13 рублей в месяц |
Как видно из таблицы, экономия выйдет примерно в 10 раз.
Недостатки SWAP
Медленная работа Если файл или раздел свопа хранится на HDD (жёстком диске), то скорость чтения данных с него намного меньше, чем из оперативной памяти. Получше дела обстоят с SSD (твёрдотельным накопителем), однако, надо понимать, что поиск и чтение данных происходит через оперативную память, что, в свою очередь, всё равно увеличивает время отклика. Поэтому, если Вы решили сэкономить на оперативной памяти, полностью положившись на SWAP, то я категорически не рекомендую так делать. Необходимо наличие свободного места на диске Вам необходимо зарезервировать свободное место на диске под своп, иначе стабильность работы не гарантируется. Это не то, чтобы недостаток свопа, просто его надо учитывать и помнить о нём.Как создать и подключить файл подкачки SWAP
Далее, в работе используется командная строка SSH.
Инструментарий: Far Manager или Putty.
Для примера приводятся команды из под root . Если Вы работаете не под root , перед командами задавайте префикс sudo
Проверка наличия свопа в системе
Для начала, нужно убедиться, что своп ещё не подключен:
Если команда выдала пустой результат или что-то навроде:
Дополнительно проверим командой:
Если в таблице в строке swap стоит 0, значит своп отсутствует.
Проверка наличия свободного места на диске
Теперь, надо проверить, сколько свободного места есть на диске:
В результате, мы увидим что-то подобное:
Какого размера создать swap
Создание файла SWAP
Допустим, мы хотим создать swap-файл размером 4 гигабайта.
Далее, здесь существует 2 подхода, традиционный медленный и новый быстрый:
Быстрый способ Используем fallocate :
Результатом будет пустая строка, это нормально.
В отличие от dd , результат будет получен почти сразу, и я рекомендую именно его. Традиционный, медленный способ Или используем команду:
Синтаксис команды простой:
Будьте очень внимательны с синтаксисом команды, потому что если, например, ошибиться с определением пути для 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 раздел подкачки отсутствует, поэтому единственный вариант - создать файл подкачки.
Прежде чем вы начнете
Хотя это возможно, использование нескольких пространств подкачки на одной машине не является обычным явлением. Чтобы проверить, включена ли в вашей установке Debian свопинг, выполните следующую команду:
Если вывод пуст, это означает, что в системе нет места для подкачки.
В противном случае, если вы получите что-то вроде ниже, в вашей системе Debian уже включен свопинг.
Чтобы активировать подкачку, пользователь, выполняющий команды, должен иметь права sudo .
Создание файла подкачки
В этом примере мы создадим и активируем 1G своп. Чтобы создать более крупный своп, замените 1G его размером желаемого пространства подкачки.
Следующие шаги показывают, как добавить пространство подкачки в Debian 10.
Сначала создайте файл, который будет использоваться для свопа:
Только пользователь root должен иметь возможность читать и записывать файл подкачки. Выполните команду ниже, чтобы установить правильные разрешения :
Используйте этот mkswap инструмент, чтобы настроить область подкачки Linux для файла:
Активируйте файл подкачки:
Чтобы сделать изменение постоянным, откройте /etc/fstab файл:
и вставьте следующую строку:
Убедитесь, что своп активен, используя команду swapon или, free как показано ниже:
Регулировка значения подкачки
Swappiness - это свойство ядра Linux, которое определяет, как часто система будет использовать пространство подкачки. Подкачка может иметь значение от 0 до 100. Низкое значение заставит ядро по возможности избегать подкачки, в то время как более высокое значение заставит ядро использовать пространство подкачки более агрессивно.
Значение подкачки по умолчанию - 60. Проверить текущее значение подкачки можно с помощью cat команды:
Хотя значение подкачки 60 подходит для большинства систем Linux, для производственных серверов следует установить более низкое значение.
Например, чтобы установить значение подкачки 10, введите:
Чтобы сделать этот параметр постоянным при перезагрузке, добавьте в /etc/sysctl.conf файл следующую строку :
Оптимальное значение подкачки зависит от рабочей нагрузки вашей системы и того, как используется память. Вы должны настраивать этот параметр небольшими приращениями, чтобы найти оптимальное значение.
Удаление файла подкачки
Чтобы деактивировать и удалить файл подкачки, выполните следующие действия:
Отключите пространство подкачки, запустив:
Откройте /etc/fstab файл в текстовом редакторе и удалите запись файла подкачки /swapfile swap swap defaults 0 0 .
Добавление swap-пространства (подкачки) – один из самых простых способов увеличить активность сервера и предупредить ошибки out of memory. Данный мануал поможет создать и включить swap-пространство на сервере Debian 9.
Внимание! Своп рекомендуется добавлять в системах, использующих традиционные жесткие диски; swap в системах, работающих на SSD, со временем может вызвать проблемы и даже привести к порче оборудования. В связи с этим крайне не рекомендуется включать swap на серверах провайдеров, использующих SSD-хранилища – лучше увеличить свой сервер.
Что такое swap?
Swap – это раздел на жестком диске, в котором система временно хранит данные, которые она больше не может удерживать в RAM. Это позволяет увеличить количество информации, хранящейся в рабочей памяти, но с некоторыми нюансами. Пространство жесткого диска будет использоваться, главным образом, когда оперативной памяти уже недостаточно для передачи данных.
1: Проверка системы на swap
Для начала нужно уточнить, активировано ли swap-пространство в вашей системе. В целом, в рамках одной системы может быть несколько swap-файлов или swap-разделов, но одного будет вполне достаточно.
Чтобы узнать, есть ли активное swap-пространство в этой системе, введите:
sudo swapon --show
Если команда не вернула результатов, в текущей системе нет swap-пространства.
Еще один способ проверить swap – утилита free, которая показывает использование памяти системы. Чтобы узнать текущее состояние памяти и swap, наберите:
free -h
total used free shared buff/cache available
Mem: 990Mi 36Mi 863Mi 4.0Mi 89Mi 837Mi
Swap: 0B 0B 0B
Как видите, общее использование swap в сети равно 0, что совпадает с результатом предыдущей команды.
2: Проверка свободного пространства на жёстком диске
Теперь нужно узнать текущее состояние диска. Чтобы получить эти данные, введите:
df -h
Filesystem Size Used Avail Use% Mounted on
udev 488M 0 488M 0% /dev
tmpfs 100M 4.5M 96M 5% /run
/dev/vda1 25G 989M 23G 5% /
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 499M 0 499M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/1001
В этом случае диск – это устройство / в столбце Mounted on; как видите, места на нём достаточно много.
Существует много различных мнений о «правильном» размере swap-пространства. В целом это зависит от личных предпочтений пользователя и требований приложения. Как правило, swap-пространство должно быть равно или вдвое больше объема оперативной памяти системы. В этом вопросе нужно ориентироваться на свободное дисковое пространство. Например, если RAM системы – 4 гигабайта, то вдвое большее swap-пространство (т.е., 8 гигабайт) займет существенную часть диска, а значит swap должен быть не более 4 гигабайт.
3: Создание swap-файла
Ознакомившись с общими условиями в системе и узнав доступное пространство жесткого диска, можно приступить к созданию swap-файла в текущей файловой системе.
В этом мануале такой файл называется swapfile и находится в root-каталоге (/).
Быстрее всего такой файл создаёт программа fallocate. Она мгновенно создает файл заранее выделенного размера без необходимости писать фиктивное содержимое.
Поскольку в данном случае используется сервер на 1 Гб RAM, мы создадим 1 Гб swap-пространства.
sudo fallocate -l 1G /swapfile
Чтобы проверить выделенный объём памяти, введите команду:
ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G May 29 17:34 /swapfile
Как видите, команда создала файл с заданным объёмом памяти.
4: Включение swap-пространства
Теперь у вас есть необходимый файл, но система пока что не знает, что его можно использовать. Нужно отформатировать данный файл, а затем включить его.
Но прежде нужно изменить права на файл, чтобы право на чтение имел только root. Swap-файл с правами на чтение и изменение другими пользователями – огромный риск для сервера. Чтобы передать все права пользователю root, введите:
sudo chmod 600 /swapfile
Проверьте права на этот файл:
ls -lh /swapfile
-rw------- 1 root root 1.0G May 29 17:34 /swapfile
Теперь только root может читать файл и вносить в него изменения. Итак, файл защищен, можно указать системе на swap-пространство с помощью команды:
sudo mkswap /swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=b591444e-c12b-45a6-90fc-e8b24c67c006f
Чтобы включить swap-пространство, введите команду:
sudo swapon /swapfile
Убедитесь, что операция прошла успешно:
sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
Также сейчас можно использовать утилиту free:
free -h
total used free shared buff/cache available
Mem: 990Mi 37Mi 860Mi 4.0Mi 92Mi 834Mi
Swap: 1.0Gi 0B 1.0Gi
Теперь система знает о включенном swap-пространстве.
5: Автозагрузка swap
Итак, теперь swap-пространство включено, но оно будет действительно только в текущей сессии. При перезапуске сервер не будет запускать его автоматически. Чтобы изменить это, отредактируйте файл fstab. Создайте резервную копию файла на всякий случай:
sudo cp /etc/fstab /etc/fstab.bak
Добавьте данные о swap в конец файла.
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
6: Тонкая настройка swap
Есть несколько опций, которые могут влиять на производительность системы при работе swap.
Параметр swappiness
Параметр swappiness определяет частоту использования swap-пространства системой. Значение swappiness выражается числом от 0 до 100 и измеряется в процентах.
Если значение swappiness близко к нулю, ядро не будет передавать данные в swap без крайней необходимости. Помните, взаимодействие со swap-файлом – затратная для сервера процедура, поскольку требует больше ресурсов, чем взаимодействие с оперативной памятью, что, следовательно, может привести к значительному снижению производительности. Обычно система работает продуктивнее, если не очень полагается на swap.
Если это значение ближе к 100, система будет передавать в swap много данных с целью сохранить больше свободного места в RAM. В зависимости от профиля памяти приложения и цели использования сервера, это может быть хорошим решением в некоторых случаях.
Чтобы просмотреть текущее значение параметра swappiness, введите:
cat /proc/sys/vm/swappiness
60
Значение 60 не так уж плохо, но для виртуального выделенного сервера лучше уменьшить его.
Команда sysctl позволяет менять значение swappiness.
Чтобы, к примеру, задать в swappiness значение 10, нужно ввести:
sudo sysctl vm.swappiness=10
vm.swappiness = 10
Данное значение будет действительным до следующей перезагрузки сервера. Чтобы значение сохранялось и после перезагрузки, откройте /etc/sysctl.conf в текстовом редакторе:
sudo nano /etc/sysctl.conf
Добавьте в конец файла строку:
Сохраните и закройте файл.
Параметр vfs_cache_pressure
Еще одна важная опция – это vfs_cache_pressure. Она управляет склонностью ядра восстанавливать память, которая используется для кэширования каталогов и инодов объектов.
В основном это данные доступа к файловой системе. Как правило, найти их непросто, а запрашиваются они часто, так что использовать кэш-память в этом случае очень удобно. Чтобы узнать текущее значение этого параметра, можно запросить файловую систему proc:
cat /proc/sys/vm/vfs_cache_pressure
100
Согласно текущим настройкам, система удаляет иноды из кэша слишком быстро. Уменьшив значение (например, до 50), вы позволите системе хранить информацию дольше:
sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50
Это значение тоже будет действительно только для текущей сессии. Чтобы сделать его постоянным, нужно (как и в случае со swappiness) открыть конфигурационный файл sysctl в текстовом редакторе:
sudo nano /etc/sysctl.conf
и добавить в него такую строку:
Сохраните и закройте sysctl.
Заключение
Надеемся, данный мануал научил вас рационально использовать оперативную память. Добавленное swap-пространство может предотвратить общие проблемы системы.
Столкнувшись с ошибкой OOM (out of memory) или обнаружив, что система запускает нужные приложения, вы можете попробовать оптимизировать конфигурации приложений или обновить сервер.
При выполнении команды swapon
Кто знает в чем проблема и как ее решить?
Перемещено JB из ubuntu
выложи сюда весь лог действий, начиная от dd и заканчивая swapon. И покажи что в dmesg попадает после неудачной попытки сделать swapon
Это путь к файлу, лошара.
ЛОЛ, проверь тогда права доступа и наличие свободного места на диске.
Выполнил все действия заново, на команде swapon вот такая ошибка
dmesg показал только одну строку
Как правило, это означает, что swapfile размещен на не подходящей для этого файловой системе
Файловая система раздела на котором расположен swapfile - ext4
Это на локальной системе или на VPS? Если на VPS, то некоторые сервисы запрещают использование swap.
Отдельная выделенная железяка с прямым доступом к HDD. Разделы созданы как primary.
В линуксе нет такого понятия как файл подкачки. Есть понятие раздела подкачки. Файл можно использовать как раздел винчестера. Итого создаёшь файл требуемого размера любым понравившимся способом, и форматируешь его в формат раздела подкачки винчестера. Только после этого подключаешь как своп. Если хочешь постоянно его пользовать, то в fstab прописываешь (документации дофига). Всё. Если что-то не работает так, то что-то не так с системой.
Последнее исправление: Quasar 08.06.17 12:28:21 (всего исправлений: 1)
Если ФС позволяет изменять файл, то всё нормально.
Из выложенного мной history файла видно что я создаю неоходимый мной размер и форматирую его формат раздела подкачки. До этого момента все норм. Не выполняется команда swapon
Вот права доступа на файл
dd if=/dev/zero of=/swapfile bs=1M count=3072
swapon: swapfile has holes
Пытаюсь создать не пустой swapfile командой
Уже длительное время время система никак не может завершить создание данного файла + какие-то warning
Читайте также: