Все загрузки и копирование приостановлены на диске, который вы пытаетесь использовать, нет места

Обновлено: 16.05.2024

В этом приложении описываются распространенные проблемы и ошибки, связанные с libvirt, а также инструкции по их устранению.

Найдите ошибку в таблице ниже и перейдите по соответствующей ссылке в разделе "Решение", чтобы получить подробные сведения об устранении неполадок.

Таблица А.1. Распространенные ошибки libvirt

Гость может общаться с другими гостями, но не может подключиться к хост-компьютеру после настройки на использование сетевого интерфейса macvtap (или type='direct').

А.19.1. libvirtd не удалось запустить

Примечание

Эта строка по умолчанию закомментирована, чтобы libvirt не создавал лишние сообщения журнала. После диагностики проблемы рекомендуется еще раз прокомментировать эту строку в файле /etc/libvirt/libvirtd.conf.

Справочная страница libvirtd показывает, что отсутствующий файл cacert.pem используется в качестве полномочий TLS, когда libvirt запускается в режиме прослушивания соединений TCP/IP. Это означает, что передается параметр --listen.

Примечание

Для получения дополнительной информации о сертификатах ЦС и настройке системной аутентификации см. главу "Управление сертификатами и центрами сертификации" в Руководстве по идентификации домена, аутентификации и политике Red Hat Enterprise Linux 7.

Не используйте TLS; вместо этого используйте голый TCP. В /etc/libvirt/libvirtd.conf установите listen_tls = 0 и listen_tcp = 1. Значения по умолчанию: listen_tls = 1 и listen_tcp = 0 .

Не передавайте параметр --listen. В /etc/sysconfig/libvirtd.conf измените переменную LIBVIRTD_ARGS.

А.19.2. URI не удалось подключиться к гипервизору

А.19.2.1. Не удается прочитать сертификат ЦС

Сообщение об ошибке вводит в заблуждение относительно фактической причины. Эта ошибка может быть вызвана целым рядом факторов, например неверно указанным URI или ненастроенным подключением.

При указании qemu://system или qemu://session в качестве URI подключения virsh пытается подключиться к системе или сеанс соответственно. Это связано с тем, что virsh распознает текст после второй косой черты как хост.

Используйте три косые черты для подключения к локальному хосту. Например, если указать qemu:///system, virsh подключится к экземпляру system libvirtd на локальном хосте.

URI правильный (например, qemu[+tls]://server/system ), но сертификаты неправильно настроены на вашем компьютере. Информацию о настройке TLS см. на веб-сайте основной ветки разработки libvirt.

А.19.2.2. не удалось подключиться к серверу по адресу 'host:16509': в соединении отказано

Демон libvirt не прослушивает порты TCP даже после изменения конфигурации в /etc/libvirt/libvirtd.conf:

А.19.2.3. Ошибка аутентификации

Если аутентификация завершается ошибкой даже при использовании правильных учетных данных, возможно, аутентификация SASL не настроена.

Отредактируйте файл /etc/libvirt/libvirtd.conf и задайте для параметра auth_tcp значение sasl . Чтобы проверить:

А.19.2.4. Разрешение отклонено

А.19.3. Ошибка загрузки PXE (или DHCP) в гостевой системе

Гостевая виртуальная машина запускается успешно, но затем либо не может получить IP-адрес от DHCP, либо загружается с использованием протокола PXE, либо и то, и другое. Существует две распространенные причины этой ошибки: установленное для моста длительное время задержки пересылки и когда пакет iptables и ядро ​​не поддерживают правила изменения контрольной суммы.

Это наиболее распространенная причина этой ошибки. Если гостевой сетевой интерфейс подключается к мостовому устройству, на котором включен STP (протокол связующего дерева), а также установлена ​​длительная задержка пересылки, мост не будет пересылать сетевые пакеты с гостевой виртуальной машины на мост, пока не будет достигнуто хотя бы это число. секунд задержки пересылки прошло с момента подключения гостя к мосту. Эта задержка позволяет мосту отслеживать трафик от интерфейса и определять MAC-адреса за ним, а также предотвращать зацикливание пересылки в топологии сети.

Если задержка пересылки больше времени ожидания PXE- или DHCP-клиента гостя, операция клиента завершится ошибкой, и гость либо не сможет загрузиться (в случае PXE), либо не сможет получить IP-адрес (в случае в случае DHCP).

В этом случае измените задержку пересылки на мосту на 0, отключите STP на мосту или и то, и другое.

Примечание

Это решение применимо только в том случае, если мост используется не для соединения нескольких сетей, а просто для соединения нескольких конечных точек с одной сетью (наиболее распространенный вариант использования мостов, используемых libvirt).

Если у гостя есть интерфейсы, подключающиеся к виртуальной сети, управляемой libvirt, отредактируйте определение сети и перезапустите ее. Например, отредактируйте сеть по умолчанию с помощью следующей команды:

Примечание

delay='0' и stp='on' являются настройками по умолчанию для виртуальных сетей, поэтому этот шаг необходим только в том случае, если конфигурация по умолчанию была изменена.

Если гостевой интерфейс подключен к хост-мосту, настроенному вне libvirt, измените настройку задержки.

Добавьте или отредактируйте следующие строки в файле /etc/sysconfig/network-scripts/ifcfg-name_of_bridge, чтобы включить STP с задержкой в ​​0 секунд:

Примечание

Если name_of_bridge не является корневым мостом в сети, задержка этого моста в конечном итоге будет сброшена до времени задержки, настроенного для корневого моста. Чтобы этого не произошло, отключите STP на name_of_bridge.

Гость пытается получить IP-адрес от DHCP-сервера, работающего непосредственно на узле.

iptables 1.4.10 была первой версией, в которую было добавлено расширение libxt_CHECKSUM. Это происходит, если в журналах libvirtd появляется следующее сообщение:

Важно

Если все остальные три условия в этом списке также не выполняются, вышеприведенное предупреждающее сообщение можно игнорировать, и оно не является признаком каких-либо других проблем.

При возникновении этих условий UDP-пакеты, отправляемые с хоста гостю, имеют невычисленные контрольные суммы. Из-за этого UDP-пакеты хоста кажутся недействительными для гостевого сетевого стека.

Чтобы решить эту проблему, отмените любой из четырех пунктов выше. Лучшее решение — обновить iptables хоста и ядро ​​до iptables-1.4.10 или новее, если это возможно. В противном случае наиболее конкретным решением является отключение драйвера vhost-net для этого конкретного гостя. Для этого отредактируйте гостевую конфигурацию с помощью этой команды:

Если проблема все еще не решена, проблема может быть связана с конфликтом между firewalld и сетью libvirt по умолчанию.

Чтобы исправить это, остановите firewalld с помощью команды service firewalld stop, а затем перезапустите libvirt с помощью команды service libvirtd restart.

Примечание

Кроме того, если файл /etc/sysconfig/network-scripts/ifcfg-имя_сети настроен правильно, вы можете убедиться, что гость получит IP-адрес, используя команду dhclient от имени пользователя root на гость.

А.19.4. Гость может получить доступ к внешней сети, но не может получить доступ к хосту при использовании интерфейса macvtap

Гостевая виртуальная машина может взаимодействовать с другими гостями, но не может подключаться к хост-машине после настройки на использование сетевого интерфейса macvtap (также известного как type='direct').

Даже если вы не подключаетесь к агрегатору портов виртуального Ethernet (VEPA) или коммутатору с поддержкой VN-Link, интерфейсы macvtap могут быть полезны. Установка режима моста для такого интерфейса позволяет гостевой системе напрямую подключаться к физической сети очень простым способом без проблем с настройкой (или несовместимости с NetworkManager), которые могут сопровождать использование традиционного хост-устройства моста.

Однако, когда гостевая виртуальная машина настроена на использование сетевого интерфейса type='direct', такого как macvtap, несмотря на то, что у нее есть возможность общаться с другими гостями и другими внешними хостами в сети, гость не может общаться со своими хост.

Эта ситуация на самом деле не является ошибкой — это определенное поведение macvtap. Из-за того, что физический Ethernet хоста подключен к мосту macvtap, трафик на этот мост от гостей, который перенаправляется на физический интерфейс, не может быть возвращен обратно в стек IP хоста. Кроме того, трафик из стека IP хоста, который отправляется на физический интерфейс, не может быть возвращен обратно на мост macvtap для пересылки гостям.

Используйте libvirt для создания изолированной сети и создайте второй интерфейс для каждой гостевой виртуальной машины, подключенной к этой сети. Затем хост и гости могут напрямую общаться через эту изолированную сеть, сохраняя при этом совместимость с NetworkManager .

Процедура А.8. Создание изолированной сети с помощью libvirt

Добавьте и сохраните следующий XML-код в файле /tmp/isolated.xml. Если сеть 192.168.254.0/24 уже используется в вашей сети, вы можете выбрать другую сеть.

Рисунок А.3. Изолированный сетевой XML

Используя virsh edit name_of_guest, отредактируйте конфигурацию каждого гостя, использующего macvtap для своего сетевого подключения, и добавьте новое в раздел, аналогичный следующему (обратите внимание, что эта строка не является обязательной):< /p>

Рисунок А.4. XML устройства интерфейса

Теперь гости могут связаться с хостом по адресу 192.168.254.1, а хост сможет связаться с гостями по IP-адресу, который они получили от DHCP (или вы можете вручную настроить IP-адреса для гостей). ). Поскольку эта новая сеть изолирована только для хоста и гостей, все остальные сообщения от гостей будут использовать интерфейс macvtap. Для получения дополнительной информации см. Раздел 23.17.8, «Сетевые интерфейсы».

А.19.5.Не удалось добавить правило для исправления контрольных сумм ответов DHCP в сети 'default'

Если проблема, с которой вы столкнулись, заключается в том, что гостевые виртуальные машины не могут получить IP-адреса через DHCP, это сообщение можно игнорировать.

Если это так, см. раздел A.19.3, «Сбой загрузки PXE (или DHCP) на гостевой системе» для получения дополнительной информации об этой ситуации.

А.19.6. Не удалось добавить мост br0 порт vnet0: нет такого устройства

Оба сообщения об ошибках показывают, что устройство-мост, указанное в определении гостя (или домена), не существует.

Чтобы убедиться, что мостовое устройство, указанное в сообщении об ошибке, не существует, используйте команду оболочки ip addr show br0 .

Используйте virsh либо для редактирования настроек существующего моста или сети, либо для добавления устройства моста в конфигурацию хост-системы.

Используйте virsh edit name_of_guest, чтобы изменить определение для использования уже существующего моста или сети.

Для libvirt версии 0.9.8 и выше устройство-мост можно создать с помощью команды virsh iface-bridge. Это создает мостовое устройство br0 с подключенным eth0 , физическим сетевым интерфейсом, который установлен как часть моста:

Необязательно: при необходимости удалите этот мост и восстановите исходную конфигурацию eth0 с помощью этой команды:

Для более старых версий libvirt можно вручную создать мостовое устройство на хосте. Инструкции см. в разделе 6.4.3, «Сетевые мосты с помощью libvirt».

А.19.7. Миграция завершается с ошибкой: невозможно определить адрес

Во время переноса libvirtd, запущенный на целевом хосте, создает URI из адреса и порта, через которые он ожидает получить данные миграции, и отправляет их обратно в libvirtd, работающий на исходном хосте.

В этом случае хосту назначения ( 192.168.122.12 ) присвоено имя 'newyork'. По какой-то причине libvirtd, запущенный на этом хосте, не может преобразовать имя в IP-адрес, который можно было бы отправить обратно и при этом по-прежнему использовать. По этой причине он вернул имя хоста 'newyork', надеясь, что исходный libvirtd справится с разрешением имени более успешно. Это может произойти, если DNS настроен неправильно или в файле /etc/hosts имя хоста связано с локальным петлевым адресом ( 127.0.0.1 ).

Обратите внимание, что адрес, используемый для переноса данных, не может быть автоматически определен из адреса, используемого для подключения к целевому libvirtd (например, из qemu+tcp://192.168.122.12/system ). Это связано с тем, что для связи с целевым libvirtd исходному libvirtd может потребоваться использовать сетевую инфраструктуру, отличную от типа, который требуется virsh (возможно, работающему на отдельной машине).

Лучшее решение — правильно настроить DNS, чтобы все хосты, участвующие в миграции, могли разрешать все имена хостов.

Если DNS нельзя настроить для этого, список всех хостов, используемых для миграции, можно добавить вручную в файл /etc/hosts на каждом из хостов. Однако трудно поддерживать согласованность таких списков в динамической среде.

Если имена хостов нельзя сделать разрешимыми каким-либо образом, virsh migrate поддерживает указание хоста миграции:

Назначение libvirtd примет URI tcp://192.168.122.12 и добавит автоматически сгенерированный номер порта. Если это нежелательно (например, из-за настроек брандмауэра), номер порта можно указать в этой команде:

Еще один вариант — использовать туннельную миграцию. Туннелированная миграция не создает отдельного соединения для данных миграции, а вместо этого туннелирует данные через соединение, используемое для связи с целевым libvirtd (например, qemu+tcp://192.168.122.12/system ):

А.19.8. Сбой переноса из-за невозможности разрешить доступ к пути к диску: нет такого файла или каталога

Гостевая виртуальная машина (или домен) не может быть перенесена, так как libvirt не может получить доступ к образу(ам) диска:

По умолчанию миграция передает только состояние памяти запущенного гостевого компьютера (например, состояние памяти или процессора). Хотя образы дисков не переносятся во время переноса, они должны оставаться доступными по одному и тому же пути для обоих хостов.

Настройте и подключите общее хранилище в одном месте на обоих хостах. Самый простой способ сделать это — использовать NFS:

Процедура A.9. Настройка общего хранилища

Настройте сервер NFS на узле, который будет использоваться в качестве общего хранилища. Сервер NFS может быть одним из хостов, участвующих в переносе, при условии, что все задействованные хосты обращаются к общему хранилищу через NFS.

Смонтируйте экспортированный каталог в общем месте на всех хостах, на которых работает libvirt. Например, если IP-адрес сервера NFS — 192.168.122.1, смонтируйте каталог с помощью следующих команд:

Примечание

Невозможно экспортировать локальный каталог с одного хоста с помощью NFS и смонтировать его по тому же пути на другом хосте — каталог, используемый для хранения образов дисков, должен быть смонтирован из общего хранилища на обоих хостах.Если это не настроено правильно, гостевая виртуальная машина может потерять доступ к своим образам дисков во время миграции, потому что демон libvirt исходного хоста может изменить владельца, разрешения и метки SELinux на образах дисков после того, как он успешно мигрирует гостя к месту назначения. .

Если libvirt обнаружит, что образы дисков смонтированы из общего хранилища, эти изменения не будут внесены.

А.19.9. При запуске libvirtd отсутствуют гостевые виртуальные машины

Существуют различные возможные причины этой проблемы. Выполнение этих тестов поможет определить причину этой ситуации:

Если вы используете машину AMD, убедитесь, что модули ядра kvm_amd вместо этого вставлены в ядро, используя аналогичную команду lsmod | grep kvm_amd в корневой оболочке.

Примечание

Хотя это редкость, поддержка виртуализации KVM может быть скомпилирована в ядро. В этом случае модули не нужны.

Включите расширения виртуализации в конфигурации прошивки вашего оборудования в настройках BIOS. Дополнительную информацию см. в документации по оборудованию.

Например, это сообщение показывает, что URI подключен к гипервизору VirtualBox, а не QEMU, и выявляет ошибку конфигурации для URI, который в противном случае настроен для подключения к гипервизору QEMU. Если бы URI правильно подключался к QEMU , вместо этого появилось бы то же сообщение, что и:

Эта ситуация возникает, когда присутствуют другие гипервизоры, с которыми libvirt может общаться по умолчанию.

А.19.10. Распространенные ошибки XML

Инструмент libvirt использует XML-документы для хранения структурированных данных. Множество распространенных ошибок возникает с документами XML, когда они передаются в libvirt через API. Несколько распространенных ошибок XML, включая ошибочные теги XML, недопустимые значения и отсутствующие элементы, подробно описаны ниже.

А.19.10.1. Редактирование определения домена

Хотя это не рекомендуется, иногда необходимо отредактировать XML-файл гостевой виртуальной машины (или домена) вручную. Чтобы получить доступ к гостевому XML для редактирования, используйте следующую команду:

Эта команда открывает файл в текстовом редакторе с текущим определением гостевой виртуальной машины. После завершения редактирования и сохранения изменений XML перезагружается и анализируется libvirt. Если XML правильный, отображается следующее сообщение:

Важно

При использовании команды редактирования в virsh для редактирования XML-документа сохраните все изменения перед выходом из редактора.

После сохранения XML-файла используйте команду xmllint, чтобы проверить правильность формата XML, или команду virt-xml-validate, чтобы проверить наличие проблем с использованием:

Если ошибки не возвращаются, XML-описание правильно сформировано и соответствует схеме libvirt. Хотя схема не учитывает все ограничения, исправление обнаруженных ошибок улучшит устранение неполадок.

Эти документы содержат определения состояний и конфигураций для гостей. Эти документы создаются автоматически и не должны редактироваться вручную. Ошибки в этих документах содержат имя файла поврежденного документа. Имя файла допустимо только на хост-компьютере, указанном в URI, который может видеть компьютер, на котором была запущена команда.

Ошибки в файлах, созданных libvirt, случаются редко. Однако одним из возможных источников этих ошибок является более ранняя версия libvirt: хотя более новые версии libvirt всегда могут читать XML, сгенерированный более ранними версиями, более старые версии libvirt могут быть сбиты с толку XML-элементами, добавленными в более новой версии.

А.19.10.2. Ошибки синтаксиса XML

Синтаксические ошибки обнаруживаются синтаксическим анализатором XML. Сообщение об ошибке содержит информацию для определения проблемы.

Этот пример сообщения об ошибке от синтаксического анализатора XML состоит из трех строк: первая строка обозначает сообщение об ошибке, а две следующие строки содержат контекст и расположение XML-кода, содержащего ошибку. Третья строка содержит индикатор, показывающий примерное местонахождение ошибки на строке выше:

Это имя файла документа, содержащего ошибку. Имена файлов в круглых скобках являются символическими именами для описания документов XML, проанализированных из памяти, и не соответствуют напрямую файлам на диске. Имена файлов, не заключенные в круглые скобки, являются локальными файлами, находящимися в целевом объекте подключения.

Используйте меню управления хранилищем macOS®, чтобы проверить, какие файлы занимают много места на диске Mac. Щелкните меню Apple () > «Об этом Mac» > «Хранилище» > «Управление». Виртуальные машины Parallels, хранящиеся в вашем пользовательском каталоге, будут перечислены отдельно:
Примечание. Виртуальные машины Parallels, хранящиеся в общих или других каталогах, не будут включены.

Просмотрите файлы в разделе «Документы» (в него также входит папка «Загрузки») и удалите большие файлы, которые вам больше не нужны, обязательно очистив Корзину.

Если вы хотите уменьшить размер своих ВМ, нажмите ВМ Parallels > Освободить место на диске.

Примечание. Посетите эту статью, чтобы узнать, как очистить кеш на Mac.

Идентификация содержимого виртуальной машины

Пространство, занимаемое ВМ на диске Mac, в основном принадлежит операционной системе, программам и файлам в Windows.
Для управления хранилищем Windows выберите «Настройки Windows» > «Система» > «Хранилище». Включите Контроль памяти, чтобы Windows автоматически освобождала место на диске. Чтобы освободить место вручную, нажмите "Освободить место сейчас":

Дождитесь завершения сканирования, прокрутите вниз, чтобы просмотреть файлы, которые занимают много места. Например, предыдущая установка Windows в моем случае занимала до 27,5 ГБ дискового пространства.

Когда будете готовы, нажмите "Удалить файлы":

Примечание. Вы также можете использовать сторонние инструменты, помогающие определить большие файлы, которые вам больше не нужны, например сканер.

Уменьшение размера виртуальной машины

Высвобождение дополнительного места на диске освобождает неиспользуемое место на жестком диске от Windows до Mac.

Примечание. Не завершайте работу виртуальной машины, пока она освобождает место на диске, чтобы не повредить ее.

Чтобы освободить дополнительное место на диске, откройте меню «Файл» в строке меню Mac > выберите «Освободить место на диске».

В появившемся окне последовательно пройдитесь по каждому параметру в списке, начиная с удаления снимков, если они есть.

Выключение приостановленных виртуальных машин также освободит место на диске.

Нажмите кнопку «Возобновить» >, затем выключите все виртуальные машины Windows с помощью кнопки меню «Пуск» > кнопки «Питание» > «Завершение работы» или перейдя в строку меню Mac > «Действия» > «Завершение работы».

Третий вариант освобождает место на выбранной виртуальной машине.

После нажатия на кнопку Reclaim будет предложено выключить виртуальную машину. Выберите Завершение работы, и начнется освобождение места на диске.

Начиная с Parallels Desktop 16, вы можете автоматизировать возврат дискового пространства на Mac каждый раз, когда вы выключите виртуальную машину.

< бр />

Откройте вкладку «Конфигурация виртуальной машины» > «Общие» и включите параметр «Освобождать место на диске при завершении работы».

Вы всегда можете освободить место на диске вручную, используя вкладку «Общие» в конфигурации виртуальной машины.

В Parallels Desktop 15 и более ранних версиях

Дополнительная информация

Если вы не освободите место на диске после освобождения места внутри Windows, размер виртуальной машины останется прежним. Чтобы автоматизировать процедуру восстановления, вы можете включить функцию оптимизации диска в реальном времени (TRIM), которая предназначена для автоматического сжатия виртуального жесткого диска в фоновом режиме во время работы виртуальной машины.

Если на вашей виртуальной машине есть моментальные снимки, откройте Диспетчер моментальных снимков и удалите те, которые вам больше не нужны. В большинстве случаев это также уменьшит размер виртуальной машины.

Примечание. Если у вас много ветвей снимков, удаление одного из родительских снимков может привести к увеличению размера виртуального диска.

Узнайте, как настроить автоматическую загрузку и обновление игр и системного программного обеспечения на консолях PS5™ и PS4™.

Что такое автоматические загрузки и обновления?

  • Обновления игры (исправления) и обновления системного программного обеспечения загружаются и устанавливаются автоматически.
  • Игры, приобретенные в PlayStation™Store, можно загрузить удаленно.

Чтобы разрешить автоматическую загрузку и обновление, настройте консоль так, чтобы она оставалась подключенной к Интернету в режиме ожидания и автоматически устанавливала файлы обновлений. Включите автоматические загрузки и убедитесь, что консоль находится в режиме покоя, когда она не используется.

Как настроить автозагрузку и обновление на консолях PS5

Выберите настройку шагов.

  1. Выберите «Настройки» > «Система».
  2. Выберите «Энергосбережение» > «Функции, доступные в режиме покоя».
  3. Включите функцию Оставаться на связи с Интернетом.

Выбор параметра «Включить включение PS5 из сети» в этом меню позволяет использовать приложение PlayStation или удаленное воспроизведение для включения консоли PS5, когда она находится в режиме ожидания.

  1. Выберите «Настройки» > «Система» > «Системное ПО» > «Обновление и настройки системного ПО».
  2. Включите автоматическую загрузку файлов обновлений и автоматическую установку файлов обновлений.

Включение функции «Автоматически устанавливать файлы обновлений» позволяет вашей консоли автоматически устанавливать обновления системного программного обеспечения в режиме ожидания, чтобы ваша консоль была обновлена ​​и готова к работе в следующий раз, когда вы играете.

  1. Выберите «Настройки» > «Сохраненные данные и настройки игры/приложения» > «Автоматические обновления».
  2. Включите автоматическую загрузку или автоматическую установку в режиме покоя.

Если вы включите автоматическую установку, при следующем включении консоли PS5 ваши игры и приложения будут обновлены до последних версий.

Если вы не хотите закрывать приостановленную игру или приложение, включите только автоматическую загрузку.

Нажмите кнопку PS, чтобы открыть центр управления, и выберите «Питание» > «Войти в режим отдыха» . Вы также можете один раз нажать кнопку питания консоли, чтобы перейти в режим покоя.

Как настроить автоматическую загрузку и обновление на консолях PS4

Выберите настройку шагов.

Выберите «Настройки» > «Настройки энергосбережения» > «Установить функции, доступные в режиме покоя».

Включите параметр «Оставаться на связи с Интернетом» и включите функцию «Включение PS4 из сети».

Выбор параметра «Включить включение PS4 из сети» в этом меню позволяет использовать приложение PlayStation или удаленное воспроизведение для включения консоли PS4, когда она находится в режиме ожидания.

Пространство подкачки — это область на жестком диске. Это часть виртуальной памяти вашей машины, которая представляет собой комбинацию доступной физической памяти (ОЗУ) и пространства подкачки. Swap содержит временно неактивные страницы памяти. Пространство подкачки используется, когда ваша операционная система решает, что ей нужна физическая память для активных процессов, а объем доступной (неиспользуемой) физической памяти недостаточен. Когда это происходит, неактивные страницы из физической памяти затем перемещаются в пространство подкачки, освобождая эту физическую память для других целей. Обратите внимание, что время доступа для подкачки медленнее, в зависимости от скорости жесткого диска. Не считайте это полной заменой физической памяти. Пространством подкачки может быть выделенный раздел подкачки (рекомендуется), файл подкачки или комбинация разделов подкачки и файла(ов) подкачки.

Зачем мне своп?

Программы, потребляющие память Иногда большая программа (такая как LibreOffice, Neverwinter Nights или видеоредактор) требует дополнительной памяти для всей системы. Значительное количество страниц, используемых этими большими программами во время их запуска, может использоваться только для инициализации и больше никогда не использоваться. Система может заменить эти страницы и освободить память для других программ или даже для дискового кеша. В этих случаях будет использоваться своп, чтобы помочь системе справиться с любой дополнительной нагрузкой.

Гибернация (приостановка на диске) Функция гибернации (приостановка на диске) записывает содержимое ОЗУ в раздел подкачки перед выключением машины. Следовательно, ваш раздел подкачки должен быть не меньше размера вашей оперативной памяти. Хотя последние версии Ubuntu не поддерживают спящий режим OOTB, вы можете настроить свою систему так, чтобы разрешить гибернацию. В обоих вариантах (PM-UTILS или SYSTEMD) вы можете использовать раздел или файл.

Непредвиденные обстоятельства Непредвиденные события могут произойти и будут происходить (программа сходит с ума, какое-то действие требует гораздо больше места, чем вы думали, или любая другая непредсказуемая комбинация событий). В этих случаях замена может дать вам дополнительную задержку, чтобы выяснить, что произошло, или закончить то, над чем вы работаете.

Оптимизация использования памяти Поскольку механические жесткие диски значительно медленнее ОЗУ (SSD — твердотельный накопитель — хранилище не так медленно, как физические диски, но все же медленнее, чем ОЗУ), когда вам нужен файл (будь то файл данных, например видео, исполняемые файлы, такие как Firefox, или библиотеки), ядро ​​Linux считывает файл в оперативную память и хранит его там, так что в следующий раз, когда он вам понадобится, он уже находится в оперативной памяти, и доступ к данным осуществляется намного быстрее. Части оперативной памяти, которые ускоряют чтение с диска, называются «кэшированной памятью». Вы заметите, что они имеют огромное значение с точки зрения отзывчивости. Ядро Linux автоматически перемещает ОЗУ, зарезервированное программами, но на самом деле не используемое, в раздел подкачки, чтобы он лучше служил для расширения кэшированной памяти.

Оптимизация производительности подкачки Поскольку пространство подкачки использует дисковое устройство, это может привести к значительным проблемам с производительностью в любой системе, использующей пространство подкачки, поскольку сама система также может использовать то же дисковое устройство в то время, когда оно требуется для операций подкачки. . Один из способов уменьшить эту проблему – выделить пространство подкачки на другом физическом диске, чтобы уменьшить или устранить конкуренцию за этот ресурс.

Сколько свопов мне нужно?

Для менее 1 ГБ физической памяти (ОЗУ) настоятельно рекомендуется, чтобы пространство подкачки, как минимум, было равно объему ОЗУ. Кроме того, рекомендуется, чтобы пространство подкачки было не более чем в два раза больше объема ОЗУ в зависимости от объема доступного для системы места на жестком диске из-за убывающей отдачи.

Для более современных систем (> 1 ГБ) пространство подкачки должно быть как минимум равно размеру вашей физической памяти (ОЗУ) «если вы используете спящий режим», в противном случае вам потребуется минимум round(sqrt(RAM)) и максимум в два раза больше оперативной памяти. Единственным недостатком наличия большего пространства подкачки, чем вы фактически используете, является место на диске, которое вы будете резервировать для него.

"Убывающая отдача" означает, что если вам нужно больше места подкачки, чем удвоенный размер ОЗУ, вам лучше добавить больше ОЗУ, так как доступ к жесткому диску (HDD) примерно на 10³ медленнее, чем доступ к ОЗУ, поэтому что-то, что займет 1 секунда, вдруг занимает более 15 минут! И еще больше минуты на быстром твердотельном накопителе (SSD).

Примеры сценариев

(последние 3 столбца обозначают пространство подкачки)

Как добавить больше свопа?

Swap обычно ассоциируется с разделом подкачки, возможно, потому, что пользователю предлагается создать раздел подкачки во время установки. По сути, в качестве устройства подкачки можно использовать любой файл, будь то раздел или обычный файл. Подкачку можно добавить, увеличив размер раздела подкачки или добавив файл подкачки. Имейте в виду, что при создании файла подкачки он может не обязательно использовать непрерывные блоки диска (как раздел подкачки), и это может отрицательно сказаться на производительности, поскольку время доступа к диску может быть больше, и чем больше ваша система использует обмен, тем хуже будет. Ядро Linux также напрямую обращается к блоку ввода-вывода блока подкачки, минуя все кэширование, метаданные и код файловой системы, поэтому файл подкачки не должен оказывать вредного влияния на стабильность вашей базовой файловой системы. Начиная с ядра 2.6.29 система подкачки автоматически поддерживает устройства с поддержкой TRIM, такие как твердотельные накопители.

Преимуществ у файла подкачки много, но он проблематичен при использовании стандартного метода гибернации swsusp для бездействующего сна. Лучшее решение для сохранения возможности перехода в спящий режим после добавления оперативной памяти — увеличить размер раздела подкачки.

Читайте также: