Какая файловая система подкачки в Linux

14

В Linux вы можете выбрать такие вещи, как ext3 и reiserfs для разделов. Для раздела подкачки вы просто выбираете «своп». Что это за файловая система? Можете ли вы просто создать раздел ext3 и сделать его разделом подкачки? Как бы это было иначе?

tony_sid
источник
Файловая система подкачки в Linux называется файловой системой подкачки Linux. Если мне удастся найти какую-то реальную информацию об этом, я выложу ответ. До сих пор я читал из en.wikipedia.org/wiki/Paging, что ядро ​​обходит файловую систему в файлах подкачки. То же самое может быть верно с разделами подкачки.
AndrejaKo
1
Невероятные люди на форумах Gentoo предоставили мне эту ссылку! Кажется, все хорошо объяснено. Ох, и спасибо John R. Graham.
AndrejaKo

Ответы:

26

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

mkswap создает заголовок для области подкачки с некоторой дополнительной информацией. Из файла swapheader.h пакета util-linux-ng:

struct swap_header_v1 {
    char         bootbits[1024];    /* Space for disklabel etc. */
    unsigned int version;
    unsigned int last_page;
    unsigned int nr_badpages;
    unsigned int padding[125];
    unsigned int badpages[1];
};

Заголовок версии 1 в настоящее время используется. Вот и вся магия, лежащая в основе структуры свопа.

Матиас Крулл
источник
Разве не должна быть какая-то файловая система для чтения и записи чего-либо значимого в раздел?
tony_sid
5
Нет. Вы просто должны обратиться к частям памяти. Это именно то, что страницы. Это потому, что вы не храните данные со сложной структурой или дополнительной информацией, как в реальных файловых системах, где разрешения и даты хранятся вместе с данными.
Матиас Крулл
6
Вы все еще можете адресовать блоки, если у вас нет файловой системы.
Матиас Крулл
8

Я думаю, что раздел подкачки не нуждается в файловой системе, потому что там нет файлов и каталогов. Раздел подкачки - это место виртуальной памяти.

Маттео де Феличе
источник
2
это не виртуальное место оперативной памяти. это (как оперативная память) память, которая может быть сопоставлена ​​с виртуальной памятью процесса.
Матиас Крулл
4

В Linux есть две формы подкачки: раздел подкачки и файл подкачки. Раздел подкачки - это независимый раздел жесткого диска, используемый исключительно для подкачки; никакие другие файлы не могут находиться там. Файл подкачки - это специальный файл в файловой системе, который находится между вашей системой и файлами данных.

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

Am1rr3zA
источник
2
Ответ действительно хороший и объясняет суть проблемы, но это ответ на вопрос «Что такое своп в GNU / Linux?» Так что же здесь происходит? Также ссылка связана с linux.com/news/software/applications/…
AndrejaKo
Я знаю, что такое своп.
tony_sid
... не знал о параметре файла подкачки
MrCalvin
-1

Существует два способа создания пространства подкачки: подкачка файловой системы и подкачка устройства (или файла). С помощью подкачки файловой системы вы создаете файл в файловой системе и используете его в качестве пространства подкачки (так же, как вы видели бы в Windows с pagefile.sys). С помощью подкачки устройства вы меняете раздел, созданный специально для подкачки.

Что лучше:

Эта дискуссия была намного интереснее в «старые» времена, потому что:

Почему подкачка устройства «лучше»: поскольку вы переставляете на необработанный раздел, это происходит быстрее, потому что вам не приходится иметь дело со всеми дополнительными издержками файловой системы с inode и другими накладными расходами файловой системы

Однако сегодня этот аргумент на самом деле не верен. С развитием скорости доступа к диску в наши дни обмен устройств не дает вам гораздо больше времени, чем обмен файловой системой.

Почему обмен файловой системы «лучше»: гораздо проще изменить размеры. Когда вы меняете размеры разделов, это намного сложнее, чем просто создавать новые файлы.

Однако сегодня, когда многие люди используют LVM вместо необработанных разделов, легко уменьшить и увеличить пространство подкачки

Сегодня это еще спорный вопрос: Большинство серверов в эти дни по причинам производительности это стоит стоимости просто подключить его полную память. (Раньше эти дебаты были гораздо более популярными, когда было сложно получить ОЗУ, и обычно на сервер помещалось от 4 до 8 ГБ ОЗУ)

ПОЧЕМУ Я ИСПОЛЬЗУЮ FILESYSTEM SWAP (и вообще меняю своп)

В эти дни я инструктирую наших ребят устанавливать с 4gig swap onl, и мы используем один и тот же config / образ для всех наших установок linux. Установка Oracle требует более интенсивного использования подкачки, поэтому для систем, в которых будет установлен Oracle, остальное я создам с помощью подкачки файловой системы. Возможно, ваше приложение может иметь требование подкачки, и в этом случае вы можете добавить его позже с помощью подкачки файловой системы.

Это помогает?

У меня есть подробные инструкции, как это сделать в Linux здесь: http://geekswing.com/geek/how-to-add-filesystem-swap-on-linux-and-unix-systems/

Бен
источник
1
«Однако сегодня этот аргумент на самом деле не верен. Ввиду эволюции того, насколько быстрым является доступ к диску в настоящее время, подкачка устройства не дает вам гораздо больше времени, чем подкачка файловой системы ». Это не причина. Идея заключается в том, что пространство подкачки может находиться в непосредственном спросе. Работа с файловой системой включает в себя каталоги, блоки, inode, буферный кеш и т. Д., Которые являются путями кода, которым самим может потребоваться больше памяти, что приводит к циклу. Вот почему своп лучше всего делать на необработанном блочном устройстве. Это также позволяет избежать фрагментации файла подкачки.
Мирабилось