Добрый день, друзья. Что такое виртуальная память в Linux (файл подкачки Линукс)? Как ею управлять? Виртуальная память Линукс помогает операционной системе выполнять свои процессы без прерываний. Вот как вы можете управлять виртуальной памятью в Linux.
Виртуальная память — это одна из тех вещей, которые лежат в основе современных операционных систем, но обычно вы не задумываетесь об этом, если у вас нет проблем. Дистрибутивы Linux просят вас настроить пространство виртуальной памяти (разделы подкачки) во время установки, но большинство новичков не знают, насколько это полезно. Вот все, что вам нужно знать о виртуальной памяти в Linux.
Что такое виртуальная память?
Виртуальная память — это способ представления вашей памяти, который абстрагируется от физической памяти на вашем компьютере. Она использует как вашу оперативную память, так и ваше пространство для хранения, будь то на традиционном жестком диске или SSD.
В Linux это делается на уровне ядра и аппаратного обеспечения. В процессоре есть аппаратное обеспечение, называемое модулем управления памятью (MMU), которое преобразует адреса физической памяти в виртуальные. Эти адреса не зависят от того, где они физически находятся на компьютере. Эти адресные пространства известны как «страницы», и они могут находиться в оперативной памяти или на вашем жестком диске или SSD. ОС рассматривает эти адреса как один большой пул памяти, известный как «адресное пространство».
Виртуальная память использует тот факт, что не вся память, которая используется в теории, используется постоянно. Программы в памяти разбиваются на страницы, а части, которые ядро считает ненужными, «выгружаются» или перемещаются на жесткий диск. Когда они необходимы, их можно «поменять местами» или вернуть обратно в оперативную память.
Пространство, используемое для виртуальной памяти на диске, известно, как «резервное хранилище» или «пространство подкачки». В мире Windows она обычно реализуется в виде файла, известного как «файл подкачки». Это также возможно сделать в Linux, но гораздо чаще используется выделенный раздел диска.
Файлы подкачки в Linux обычно зарезервированы для минимальных или встроенных систем, и последние обычно работают без виртуальной памяти полностью, потому что встроенные ОС должны быть небольшими.
Преимущество виртуальной памяти заключается в том, что можно запускать большие программы, используя больше памяти, чем физическая оперативная память вашего компьютера, подобно тому, как кредитная карта позволяет совершать крупные покупки большие деньги, чем у вас есть на вашем банковском счете. Как и кредитная карта, виртуальная память полезна, когда она вам нужна, но вы не хотите чрезмерно ее использовать.
Виртуальная память также позволяет разработчикам создавать приложения, не зная, как организована память компьютера.
Исторически основным недостатком виртуальной памяти было то, что жесткие диски работали медленнее, чем оперативная память. Если на компьютере недостаточно оперативной памяти, система может бесконечно загружать и удалять страницы, процесс, известный как «загрузка». Это не такая проблема на современных ПК с большим объемом оперативной памяти и более быстрыми твердотельными накопителями, вытесняющими механические жесткие диски, но об этом все равно нужно знать.
Разделы подкачки Linux
Как упоминалось ранее, обычным методом настройки виртуальной памяти в Linux является использование выделенного раздела диска. Утилита установки изучит ваше оборудование и предложит схему разделения, которая включает раздел подкачки.
Вы также можете добавить разделы подкачки после установки. Если вы хотите добавить новый раздел на существующий диск, вам придется использовать инструмент неразрушающего разбиения на разделы, такой как GParted. Убедитесь, что вы выбрали «Linux swap» в качестве файловой системы для вашего раздела.
Создайте резервную копию важных данных перед перераспределением вашего диска.
После того, как вы создали свой раздел, используйте команду mkswap для форматирования вашего раздела.
sudo mkswap /dev/sdX
Теперь вам нужно отредактировать /etc/fstab как root, чтобы добавить раздел подкачки. Эта строка, добавленная в файл, настроит раздел подкачки, который будет смонтирован во время загрузки:
/dev/sdX none swap defaults 0 0
Теперь используйте команду swapon, чтобы активировать новое пространство подкачки, где sdX — это имя вашего раздела подкачки:
sudo swapon /dev/sdX
Использование файлов подкачки в Linux
Легко настроить файл подкачки в Linux с помощью командной строки. Возможно, вы захотите сделать это, если не хотите переделывать свой диск или редактировать /etc/fstab. Один из методов — использовать fallocate:
Например, для создания файла подкачки объемом 2 ГБ:
sudo fallocate -l 2G /path/to/swapfile
В качестве альтернативы вы можете использовать команду dd для создания файла подкачки.
sudo dd if=/dev/zero of=/path/to/swapfile bs=1024 count=2048
Убедитесь, что вы правильно используете команду dd, так как неправильное заполнение и удаление файлов может привести к потере данных. fallocate является предпочтительным методом по этой причине.
Устройство /dev/zero — это специальное устройство, которое выводит «0». Что делает эта команда dd, так это создает пустой двухгигабайтный блочный файл, используя блоки по 1024 килобайта, подходящие для использования в качестве пространства подкачки.
Затем вы можете использовать команды mkswap и swapon с файлом подкачки, как с разделом подкачки:
sudo mkswap /path/to/swapfile
sudo swapon /path/to/swapfile
Вы можете задаться вопросом, когда вам следует использовать файл подкачки или выделенный раздел для вашего пространства подкачки. Выбор прост: в большинстве случаев вам следует использовать раздел. Это лучший выбор для рабочего стола Linux или сервера. Схема разделов, предлагаемая установщиком, обычно подходит для однопользовательского рабочего стола Linux.
Возможно, вам захочется использовать файл подкачки, если вы используете Linux на виртуальной машине, в небольшой встроенной системе или просто не хотите переделывать существующую систему Linux.
Какой должен быть размер файлы подкачки Linux?
В течение многих лет стандартный совет о том, сколько места для подкачки требуется. Многие люди сходятся во мнении, что он должен в два раза превышать физическую оперативную память. С большими дисками и объемами памяти, которые поставляются даже с самыми дешевыми ПК, это правило может быть поставлено под сомнение.
Во многих системах, если вы установите флажок top или htop, вы можете даже заметить, что ваше пространство подкачки вообще не используется, если вы настроили свою систему таким образом.
Тем не менее, удвоение объема физической памяти является хорошей отправной точкой и страховым полисом, если вы предъявляете более высокие требования к памяти. Вы можете вносить изменения в свою систему по мере необходимости. Если ваша система использует всю вашу оперативную память, у компьютера могут возникнуть проблемы с производительностью при использовании виртуальной памяти.
Компьютер может продолжать переключаться между входами и выходами, процесс, известный как thrashing, из-за чего кажется, что он не отвечает. Если у вас все еще есть механический жесткий диск, вы часто можете слышать, как к нему постоянно обращаются.
В наши дни это гораздо меньшая проблема, поскольку объем оперативной памяти даже на самых дешевых ПК более чем достаточен, плюс скорость твердотельных накопителей намного выше, чем у старых жестких дисков. Это все еще то, о чем вы должны знать.
Самый простой способ исправить это — просто добавить больше оперативной памяти на ваш компьютер. Если это невозможно, вы можете попытаться настроить «swappiness» ядра Linux.
Число подкачки определяет, насколько ядро погружается в виртуальную память. Она варьируется от 0 до 100. Установка значения 0 означает, что Linux вообще не будет переключаться, в то время как при 100 он будет переключаться при каждой возможности. Значение по умолчанию в большинстве систем равно 60.
Чтобы временно изменить подкачку, используйте команду sysctl:
sudo sysctl vm.swappiness=20
«20» в этой команде будет номером замены до перезагрузки. Чтобы изменить ее навсегда, отредактируйте файл /etc/sysctl.conf как root и поместите строку «vm.swappiness=[номер замены]», где «[номер замены]» — это номер замены, который вы хотите. Это будет временная остановка, пока вы не сможете установить больше оперативной памяти.
Виртуальная память обеспечивает бесперебойную работу вашей системы Linux
Виртуальная память — это компонент современных операционных систем, включая Linux, который обеспечивает бесперебойную работу вашего компьютера. Вы можете использовать файл подкачки Линукс, но обычный метод — выделенный раздел. Вам не нужно много думать об этом, но разделы подкачки Linux и файлы подкачки просты в настройке и устранении неполадок.
Многие из этих советов применимы и к другим системам, включая Windows, даже если методы настройки виртуальной памяти отличаются. Успехов!
С уважением, Андрей Зимин 14.08.2022