Чому Linux використовує розділ swap, а не файл?


32

Мені здається, файл свопу є більш гнучким.


1
Ви можете використовувати файл swap в Linux. Я зараз роблю це на кількох машинах. Я не використовую нічого особливого, хоча просто ext4 або ext4 на LVM. Ні шифрування, ні нічого складного. Суспензія та сплячка відмінно спрацювали для мене, навіть на моїй машині NVMe.
Cory T

Відповіді:


32

Файл підкачки є більш гнучким, але також більш помилковим, ніж розділ для заміни. Помилка файлової системи може пошкодити файл swap. Файл swap може бути болем для адміністратора, оскільки файл неможливо перемістити чи видалити. Файл своп не можна використовувати для сплячого режиму. Файл своп був раніше повільнішим, хоча сьогодні різниця незначна.

Перевагою файлу swap є не заздалегідь визначати розмір. Однак в Linux ви все ще не можете змінити розмір файлу своп в Інтернеті: вам потрібно скасувати реєстрацію, змінити розмір, а потім перереєструватися (або створити інший файл та видалити старий). Отже, не так вже й багато користі для файлу swap під Linux, порівняно з розділом swap. Це в основному корисно, коли вам тимчасово потрібно більше віртуальної пам'яті, а не як постійне кріплення.


4
в минулому також була користь від продуктивності. Але я думаю, що це закінчилося, коли вийшло 2.6.
ксенотерацид

Схоже, це насправді не відповідає на питання. Або я щось пропускаю? У відповіді йдеться лише про файли swap, а розділи взагалі не згадуються. @Gilles це було навмисно, чи ти просто робив друк?
габе.

1
@gabe: Я обговорював файли swap порівняно з розділами. Сподіваємось, це зараз зрозуміліше.
Жил "ТАК - перестань бути злим"

1
Я вказую тут свої коментарі у відповіді Пенца. Сприйнята fs-індукована втрата продуктивності у файлах свопінгу суперечлива.
ата

2
Відповідно до довідки спільноти Ubuntu Help Wiki.ubuntu.com/community/SwapFaq Для переходу в сплячку потрібен розділ для заміни. Цитата: "Він не може використовувати файл swap в активній файловій системі." Що стосується продуктивності, то, здається, немає різниці, якщо файл рідкий. serverfault.com/questions/25653/…
Ерік

28

Переважний розділ можна використовувати, оскільки це дозволяє уникнути залежності від файлової системи, коли все, що вам потрібно, - це адресний пул пам'яті.

Але ніщо не заважає вам використовувати файл swap замість розділу swap або додатково до його заміни.

  • Створіть файл:

    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'
Michael Mrozek

це гарна інформація, але вона не відповідає на питання.
lesmana

6
Крім того, біт накладних даних файлової системи невірний. Всупереч поширеній думці, за допомогою свопфілів немає накладних витрат. Ендрю Мортон дає просте пояснення тут . Це одна з причин використання динамічного менеджера свопів на основі файлів своп-файлів, наприклад, демона swapspace - гарного рішення, якщо воно добре налаштовано.
ата

Додамо, що підхід до файлу swap може бути вашим єдиним варіантом, коли ви працюєте в хмарі.
сорiн

1

Можливо, головна причина полягає в тому, що призупинення роботи на диску головного ядра не працює з файлами підкачки. Наприклад, інструкції щодо вікі Debian - це встановити, uswsuspякщо вам це потрібно.

З недавніх пір файли swap не працюють, якщо файлова система є btrfs, тому дистрибутивам найпростіше завжди створювати своп як розділ.

Неоднозначно згадується, що використання файлу для swap мали потенційно нижчу продуктивність, ніж розділ до версії 2.6 ядра. https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15


1

Для повноти я додам свою власну відповідь:

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

Джерело: https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt


0

Я думаю, що це головним чином тому, що час доступу до даних, розташованих на розділі, нижчий. Суть файлу swap полягає в тому, щоб допомогти адміністратору sys, коли він справді не в оперативній пам’яті і йому потрібно виконувати величезні операції, які, можливо, можуть зірвати його систему. У цьому випадку він спорадично створюватиме файли свопу, коли потрібно.

Але все одно ви можете мати їх обох.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.