Почему Linux использует раздел подкачки, а не файл?


32

Мне кажется, файл подкачки более гибкий.


1
Вы можете использовать файл подкачки в Linux. Я делаю это прямо сейчас на нескольких машинах. Я не использую ничего особенного, просто ext4 или ext4 на LVM. Нет шифрования или чего-либо сложного. Suspend и hibernate отлично сработали, даже на моей машине с NVMe.
Кори Т

Ответы:


32

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

Преимущество файла подкачки заключается в том, что нет необходимости определять размер заранее. Однако в Linux вы все равно не можете изменить размер файла подкачки онлайн: вам нужно отменить его регистрацию, изменить размер, а затем повторно зарегистрировать (или создать другой файл и удалить старый). Таким образом, в Linux нет большого преимущества для файла подкачки по сравнению с разделом подкачки. Это в основном полезно, когда вам временно требуется больше виртуальной памяти, а не как постоянное устройство.


4
в прошлом был также выигрыш в производительности. Но я думаю, что это закончилось, когда вышел 2.6.
ксенотеррацид

Кажется, что это на самом деле не отвечает на вопрос. Или я что-то упустил? Ответ говорит только о файлах подкачки и вообще не упоминает разделы. @ Жиль был таким намеренным, или ты просто сделал опечатку?
таращиться

1
@gabe: я обсуждал файлы подкачки по сравнению с разделами. Надеюсь, теперь это стало понятнее.
Жиль "ТАК - перестань быть злым"

1
Я указываю здесь мои комментарии в ответе Penz. Воспринимаемое fs вызванное снижение производительности файлов подкачки является спорным.
ата

2
Согласно вики- справке сообщества Ubuntu help.ubuntu.com/community/SwapFaq Для спящего режима требуется раздел подкачки. Цитата: «Он не может использовать файл подкачки в активной файловой системе». Что касается производительности, то, похоже, разницы нет, если файл не разрежен. serverfault.com/questions/25653/…
Эрик

28

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

Но ничто не мешает вам использовать файл подкачки вместо раздела подкачки или в дополнение к разделу подкачки.

  • Создайте файл:

    dd if=/dev/zero of=/extraswap bs=1M count=512
    
  • Инициализируйте содержимое файла:

    mkswap /extraswap
    
  • Используй это:

    swapon /extraswap
    
  • Посмотрим, сработало ли это:

    free -m
    

Чтобы всегда использовать swapfile при загрузке, отредактируйте / etc / fstab и добавьте

/extraswap           swap          swap    defaults    0 0

[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html


5
Полезный псевдоним, который я использовал навсегда, чтобы позволить мне печатать moreswapв терминале, если мне вдруг понадобится дополнительное пространство подкачки:alias moreswap='swapfile=`mktemp /tmp/swapXXXX` && sudo touch $swapfile && sudo dd bs=512 count=1M if=/dev/zero | tee $swapfile | pv -s 512M && sudo mkswap $swapfile && sudo swapon $swapfile'
Майкл Мрозек

Это хорошая информация, но она не отвечает на вопрос.
Lesmana 19.10.10

6
Кроме того, бит в заголовке файловой системы неверен. Вопреки распространенному мнению, использование своп-файлов не требует дополнительных затрат. Эндрю Мортон дает простое объяснение здесь . Это одна из причин, по которой использование менеджера подкачки на основе динамического файла подкачки, такого как демон swapspace, является хорошим решением, если оно хорошо настроено.
ата

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

1

Возможно, основная причина в том, что основное ядро ​​suspend-to-disk не работает с файлами подкачки. Например, инструкции по вики Debian должны быть установлены, uswsuspесли вам это нужно.

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

Смутно упомянуто, что использование файла для подкачки могло иметь потенциально более низкую производительность, чем раздел, до версии ядра 2.6. https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15


1

Для полноты добавлю свой ответ:

Как сказал @Gilles, файл подкачки нельзя использовать для спящего режима. При использовании файла подкачки система должна найти заголовок файла подкачки, но для этого необходимо смонтировать файловую систему, содержащую файл подкачки, и журнальную файловую систему - например, ext3, ext4 и, в основном, все современные файловые системы, используемые Linux. - не может быть смонтирован во время возобновления с диска. (На самом деле, есть способы сделать это, но довольно громоздко.)

Источник: https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt


0

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

Но в любом случае вы можете иметь их обоих.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.