- Где лучше разместить swap linux
- Размещение
- Безопасность
- Размер
- Создание SWAP на разделе диска
- SWAP с динамически изменяемым размером
- Hibernate (suspend to disk, гибернация)
- Параметр vm.swappiness
- Какое значение выбрать?
- SWAP — как создать, подключить, очистить и отключить файл подкачки в Linux
- Что такое SWAP
- Когда может понадобиться своп
- Преимущества SWAP
- Недостатки SWAP
- Как создать и подключить файл подкачки SWAP
- Проверка наличия свопа в системе
- Проверка наличия свободного места на диске
- Какого размера создать swap
- Создание файла SWAP
- Как подключить SWAP файл
- Добавление свопа в автозагрузку
- Дополнительные вопросы
- Как очистить SWAP в Linux
- Объясните куда запихнуть swap в «начало» диска или в «конец»?
Где лучше разместить swap linux
SWAP – один из механизмов виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ во вторичное хранилище (отдельный раздел или файл), освобождая ОЗУ для загрузки других активных фрагментов памяти.
Более подробно о механизме своппинга можно прочитать в Википедии.
Дополнительно SWAP используется при организации режима сна (hibernation или suspend to disk). При этом в SWAP сохраняется образ оперативной памяти.
Размещение
SWAP может быть размещен на разделе диска, в файле или в RAM. Исторически в Linux SWAP размещался на разделе, но в современных дистрибутивах производительность SWAP-файла не уступает SWAP-разделу. Однако стандартный установщик Ubuntu (до версии 17.04) не умеет создавать SWAP-файл при установке и выдает предупреждение, если SWAP-раздел не определен при разметке диска. Начиная с версии 17.04, Ubuntu предлагает по умолчанию создавать SWAP в файле (объем определяется как 5% от свободного на диске места, но не более 2 Гб). Использование SWAP-файла имеет некоторые преимущества: он не занимает отдельный раздел, его легко создать, изменить его размер или удалить.
Дополнительно при выборе размещения SWAP нужно учитывать, что не все файловые системы позволяют использовать прямую адресацию блоков SWAP-файла. Так, к примеру, нельзя использовать SWAP в файле на разделе с файловой системой btrfs(по состоянию на середину 2017).
Безопасность
При работе с секретными/зашифрованными данными часть этих данных в процессе работы либо при гибернации может оказаться в SWAP в расшифрованном виде. В таких случаях рекомендуется шифровать не только данные, но и сам SWAP. Однако нужно учитывать, что у режима сна при шифровании SWAP могут возникнуть сложности.
Размер
В Интернете можно найти множество рекомендаций по определению размера SWAP, однако универсального ответа не существует.
При определении размера SWAP следует учесть следующие аспекты:
В зависимости от ответов на эти вопросы рекомендации по размеру SWAP будут значительно различаться.
Для машин с незначительным объемом памяти (меньше 2 Гб) рекомендуется создавать SWAP размером от 1,5 до 2-х размеров оперативной памяти. И стоит попробовать изменять vm.swappiness, но лучше поискать возможность увеличить объем оперативной памяти.
Для машин с объемом памяти 3-4 Гб нужно решить, будет ли использоваться suspend to disk. Если да, то нужно создавать SWAP размером на 10-15% больше размера оперативной памяти. Если же suspend to disk использоваться не будет, то можно создать SWAP небольшого размера (размером от половины до 1 объема оперативной памяти). Можно не создавать SWAP при установке системы, а при необходимости добавить его позже как файл.
На компьютерах с объемами оперативной памяти более 6Gb имеет смысл создать SWAP размером в половину от объема оперативной памяти. При этом, если вы хотите использовать гибернацию, следует оценить загрузку оперативной памяти в процессе работы и задать величину SWAP, исходя из этого. К примеру, если объем оперативной памяти составляет 16 ГБ, а рабочая загрузка не превышает в среднем 5-6 ГБ, величины SWAP-раздела в 8 ГБ вам хватит для гибернации. При таком подходе следует помнить, что при использовании ресурсоёмких программ (рендеринг изображения, компиляция огромных проектов и т.п.) оперативная память может заполняться полностью, а SWAP — использоваться в качестве подкачки. В таких ситуациях размер SWAP нужно выбирать индивидуально.
При работе с секретными (зашифрованными) данными стоит либо шифровать SWAP, либо рассмотреть вариант с отказом от SWAP вовсе (зависит от размера оперативной памяти). Стоит также рассмотреть вариант с шифрованием всего диска.
Создание SWAP на разделе диска
Разобравшись с требованиями к SWAP, можно приступить к его созданию или изменению.
Ядро Linux может работать с несколькими частями SWAP. Поэтому если вы решили, что созданного при установке системы SWAP-раздела недостаточно, то стоит создать дополнительный SWAP (выделить место под раздел или файл). Однако нужно учитывать, что для гибернации нужен непрерывный блок SWAP, который должен иметь размер больший, чем оперативная память.
К примеру, у нас есть раздел /dev/sdc2 (ваше имя раздела может отличаться). Создадим на нем необходимую структуру данных для работы SWAP:
Подключим раздел как SWAP:
Проверить результат можно, посмотрев на вывод команды
Сделаем автомонтирование SWAP-раздела при запуске системы. Узнаем UUID раздела:
Теперь пропишем строку в /etc/fstab
SWAP с динамически изменяемым размером
Если вы не хотите думать об объеме SWAP, имеет смысл воспользоваться утилитой swapspace (динамический менеджер подкачки). Эта утилита работает в фоновом режиме и динамически управляет подкачкой. При необходимости swapspace автоматически создаёт дополнительные файлы подкачки требуемого размера. Неиспользуемые файлы подкачки удаляются и не занимают место.
Однако, если вы работаете с секретными документами, не забудьте указать swapspace создавать SWAP-файлы на зашифрованном диске или внутри шифрованного контейнера 1) .
Hibernate (suspend to disk, гибернация)
О настройке режима гибернации можно прочитать здесь.
Параметр vm.swappiness
Основной параметр, влияющий на работу системы со swap, — это vm.swappiness. Очень приблизительно этот параметр можно определить так: он задает процент свободной оперативной памяти, при котором начинается использование подкачки. Более точное определение смысла этой переменной можно уяснить из описания которое было дано в рассылке kernel.org — статья на английском.
Без особой необходимости трогать его не рекомендуется.
Скорректировать значение, применяемое при загрузке системы, можно, указав в файле /etc/sysctl.conf значение vm.swappiness. Пример:
Мгновенно применить эту настройку можно с помощью следующей команды:
Актуальное значение, используемое ядром в настоящее время, можно просмотреть или изменить в /proc/sys/vm/swappiness.
Изменения в /proc/sys/vm/swappiness будут сброшены при следующей перезагрузке.
Значение vm.swappiness по умолчанию — 60.
Какое значение выбрать?
Маленькое значение vm.swappiness (минимальное значение: 0) будет заставлять ядро использовать больше оперативной памяти под память процессов (в ущерб буферам и кэшам), тогда как большое значение (максимальное значение: 100) будет выделять больше памяти под кэши и буфера (в ущерб памяти для процессов).
Нужно понимать: ни одно значение vm.swappiness не увеличит волшебным образом производительность компьютера многократно. Урезаете кеши — понижаете отзывчивость системы при работе с файлами, урезаете память процессов — снижаете отзывчивость системы при переключении задач.
Нужное вам значение, скорее всего, стоит подбирать экспериментально.
Источник
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 просто очищается, а не переносится в ОЗУ, и, в случае наличия данных системных процессов, система может стать недоступна.
Источник
Объясните куда запихнуть swap в «начало» диска или в «конец»?
Для начала объясните где начало у hdd и где конец? Я так понимаю начало это «отверстие» по середине, а конец это внешняя граница? И куда лучше разместить swap на слабом компе?
Для начала объясните где начало у hdd и где конец?
Начало в начале, конец в конце. Неужели не понятно?
Я так понимаю начало это «отверстие» по середине
Ща гусары тебе расскажут про отверстие.
Запускай dd на первые блоки и на последние и сравнивай.
Мертвому припарки и выигрыш на спичках.
Наоборот. Так, как ты понимаешь — это у оптических дисков.
Я так понимаю начало это «отверстие» по середине, а конец это внешняя граница
А ты когда-нибудь виниловые музыкальные пластинки слушал? (надеюсь, аналогия понятна)
начало это «отверстие» по середине, а конец это внешняя граница?
Свап на хдд делаю в начале, после корня.
поставил ради эксперимента swap в конец, ибо по умолчанию была похожая разбивка
Если swap используется редко — в конец.
Я всегда ставлю его в конец, чтобы потом помнить, что sda1 (или что там у меня первое) корень.
Учитывая, что прошивка HDD мапит сектора как хочет, в том числе и для закрытия битых секторов, размещать swap ты можешь хоть в середину.
ты вызвал взрыв моего мозга. «Начало диска» — на его внешних дорожках, а конец — на внутренних, ближе к шпинделю?
В начало. Так исторически сложилось.
Ман плотность распределения.
и то верно. хотя бы:
«Цилиндры располагаются от внешнего края к центру, то есть нулевой цилиндр находится у внешнего края.» — http://pcabc.ru/to/to20.html
вот уж развеял свое заблуждение, так развеял.
здесь не хватает голосования 🙂
[x] ставлювлю его в середину (ближе к началу), сразу после EFI (/boot/) раздела 🙂
почему именно так? ответ: чтобы у меня была неплохая возможность сделать стартовый сектор swap-раздела — в положение РОВНО 2^N
man линейная vs. угловая скорость
Статья 95 года очень актуальна, да. А в чём проблема проверить, создать 2 раздела, 1гб в начале и 1 гб в конце (на практике там несколько пластин и головок), и вроде даже в начале у меня получалось значительно быстрее.
Ставь в середину и не парься. А лучше добавь памяти.
запусти гпартед. Внизу конец, вверху кончало начало
да, за неё ещё до сих пор садят
Созданием разделов в абстрактных «конце» и «начале» не поймешь, где физически они будут лежать на блинах. То что в «начале» диска быстрее линейное чтение (да и рандомное) — знают даже дети 🙂
У меня уже привычка так делать, по крайней мере если мы говорим об одном диске. Хотя иногда swap и совсем не нужен, хоть и эти случаи гораздо более редки, чем можно услышать от «экспертов» с лора.
Да есть свои тонкости, например тупо располагать swap на медленном диске или на быстром диске с медленным контроллером или на быстром диске с перегруженным i/o.
Раньше так вообще размешали swap в начале, сразу на нескольких самых быстрых дисках с самыми быстрыми контроллерами и меньшей нагрузкой. Еще и распределяя между ними приоритеты.
Без разницы куда сейчас. Ну попустят тебя аццкие тормоза чуть чуть быстрее, на общем фоне непринципиально. В среднем разницы не заметишь, всё равно тормоза. Осиливай vfs_cache_pressure, swapiness, zram, zswap, апгрейд в порядеке возрастания эффективности. Вот эти методы реально помогают. Игры с расположением swap раздела на диске сейчас бессмысленны, продолжительность высвапливания в зависимости от расположения будет колебаться в пределах погрешности измерений. Да, если у тебя 64бит система — ставь 32битную. Проги меньше памяти жрут по факту в ней. Сейчас будут спорить, но ты не слушай, просто попробуй и убедись.
А вообще под систему и свап покупай ssd, хоть самый простой за 1.5к рублей.
SSD под свапом протрётся довольно быстро, если свопиться будет часто. И всё равно будут тормоза. Тогда уж память + ssd. Но тут уже можно съэкономить на ssd.
Протрется. лет за 5.
У меня недобук с emmc-ssd с efi. Хочу разбить на 3 раздела: swap, efi-boot и корень. Мне swap лучше вначале ставить, а boot в конце? Или boot посередине, или вначале?
Отрывками по разным статьям понял, что ssd читает данные из любого места с одинаковой скоростью в отличии от hdd, но не понял как и почему. Еще понял, что ssd и eMMC — это совсем не одно и то же, но не понял в чем различия и в чем сходства. Мол, eMMC — это ближе к sd-картам.
И почему тогда вообще на моем hynix hbg4e пишут eMMc-ssd, когда в интернете пишут, что eMMC не имеет ничего общего с ssd? Кстати, повелся из-за этого при покупке по незнанию.
Подскажите где почитать или как правильно гуглить про устройство, различия, плюсы и минусы ssd, hdd, flash, nand и прочих непонятных мне слов доступно, для неучей.
И куда лучше разместить swap на слабом компе?
Слабый — это какой ? Лучше, чтобы он был, но не использовался.
А разместить лучше в начале, чтобы было время нажать Ctrl+C, когда, случайно, напишешь dd if=/dev/sdb of=/dev/sda , или что-то в этом роде.
что ssd читает данные из любого места с одинаковой
скоростью в отличии от hdd, но не понял как и почему.
Потому, что в первом только электроника и, соответственно, нет понятия времени позиционирования головки.
И почему тогда вообще на моем hynix hbg4e пишут eMMc-ssd,
когда в интернете пишут, что eMMC не имеет ничего общего с ssd ?
ssd — Solid State Drive
eMMc — embedded MultiMediaCard
По сути, ни то, ни другое не описывает тип используемой внутри памяти. MultiMediaCard — это всяческие SD и т.п. embedded — это когда эту память делают в виде микросхемы и паяют на плату. eMMc-ssd, в принципе, может означать, что тип памяти, обычно используемый для SSD, запихали в какой-нибудь корпус, который можно припаять к плате (BGA какой-нибудь, например) и припаяли к плате. Плохо тут только то, что, когда эта память помрёт, просто так её не поменяешь.
Источник