Як створити файл підкачки в Linux

Додайте простір підкачки до комп’ютера з Linux або збільште місце підкачки, яке вже є, не возитися з розділами. Ми покажемо вам простий спосіб адаптувати ваш простір підкачки.

Файли підкачки проти розділів підкачки

Існує кілька сценаріїв, коли ви можете збільшити існуючий або додати новий простір підкачки до комп’ютера Linux.

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

Простим рішенням для всього цього є додавання a замінити файл на комп’ютер. Це спеціальний файл, попередньо виділений і зарезервований для використання як простір підкачки. Файл підкачки працюватиме в парі з будь-яким наявним у вас файлом підкачки, будь то файл підкачки чи розділ підкачки.

Свого часу було падіння продуктивності використання файлу підкачки порівняно з розділом підкачки. Це більше не стосується покращення продуктивності механічних (крутих) жорстких дисків і підвищення ефективності функцій підкачки в операційній системі Linux. Насправді, деякі дистрибутиви Linux тепер за замовчуванням створюють файли підкачки, а не розділи підкачки.

Swap використовується не лише як засіб для звільнення оперативної пам’яті, коли пам’яті не вистачає. Це важлива частина добре функціонуючої системи. Без будь-якої підкачки ядру стає дуже важко керувати пам’яттю. Давайте розглянемо простий спосіб додати простір підкачки.

Перш ніж зануритися: Btrfs і SSD

Є два моменти, які ми хочемо швидко обговорити.

The Файлова система Btrfs має певні застереження щодо файлів підкачки. Свого часу між ними виник конфлікт копіювання при записі природа Btrfs, яка хотіла працювати в один спосіб і підмінювати файли, які повинні працювати в іншому. Деякі функції, від яких залежать файли підкачки, не були реалізовані, а деякі припущення щодо нумерації блоків у файлах підкачки не відповідали Btrfs. Тому файли підкачки не підтримувалися.

Починаючи з ядра 5.0, ви може мати файли підкачки у файлових системах Btrfs якщо вони встановлені з такими вимогами:

Немає файлів копіювання під час запису (NOCOW).
Вони не стиснуті.
Вони не взаємодіють з різними жорсткими дисками.

Більшість читачів використовуватимуть файлову систему ext4 за замовчуванням, тому їх це не турбуватиме.

Коли твердотільні накопичувачі (SSD) були вперше доступні, виникло занепокоєння щодо їх використання в ситуаціях, коли часто записувалися у файлову систему. Людей застерігали від розміщення місця підкачки на SSD і навіть уникати системного журналу на SSD.

  Як автоматично перейменувати медіафайли в Linux за допомогою FileBot

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

Перевірка наявного простору підкачки

Сім разів відміряй, один раз відріж. Давайте перевіримо, яке місце підкачки доступне на вашому комп’ютері. Ви можете зробити це двома способами, і ми будемо використовувати обидва. Команда free відобразить використану та вільну пам’ять. Параметр -h (доступний для читання) спричинить вільне використання розумних одиниць, коли відображає значення пам’яті.

free -h

Вихід з free показує, що на цій машині не налаштовано простір підкачки.

Заміна ніколи не обговорюється без оперативної пам’яті та вільної оперативної пам’яті. Тому варто відзначити, що вільна оперативна пам’ять надається як 237 МБ. Не плутайте це із загальною доступною для використання оперативною пам’яттю. Це значення забезпечується «доступним» показником, який становить 881 МБ.

Linux використовує вільну оперативну пам’ять для власних цілей, таких як кешування файлів і буфери ядра. Обсяг оперативної пам’яті, призначений для цього, є показником «бафф/кеш», який становить 871 МБ. Але ця пам’ять все ще вважається — і вважається — «доступною». Вміст оперативної пам’яті “buf/cache” може бути негайно відкинутий і використаний будь-якою програмою, яка потребує пам’яті.

Інший спосіб перевірити, чи доступний простір підкачки, – це використовувати команду swapon. Параметр –show нічого не робить зміни підкачки на вашому комп’ютері. Він надає лише статистику.

swapon --show

Якщо ця команда не виводить, значить, підкачка не налаштована.

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

Скільки місця підкачки мені потрібно?

Традиційною відповіддю було «вдвічі більше оперативної пам’яті». Але це було придумано, коли комп’ютери мали дуже обмежену оперативну пам’ять. Оскільки оперативна пам’ять стала дешевшою, а програми та ігри вимагали більше пам’яті, специфікації ПК відповідно відкоригувалися. Домашні комп’ютери з 32 ГБ оперативної пам’яті – не рідкість у наш час. І ви не збираєтеся виділяти 64 ГБ місця на жорсткому диску для обміну місця, якщо у вас є 32 ГБ оперативної пам’яті. Це явно надмірно.

Обсяг свопу, який вам потрібен, є запальною темою, порівнянною з «який найкращий редактор». Одна з найрозумніших дискусій на цю тему, яку ми бачили, ведеться в Поширені запитання про заміну Ubuntu. Це короткий і розумний підхід (хоча, як і багато людей, вони неправильно розуміють, як працює підкачка в Linux). Є зручна таблиця, яка показує рекомендовану кількість місця підкачки для обсягу оперативної пам’яті, яка є у вашій системі, а також того, чи перебуває ви комп’ютер у сплячому режимі чи ні.

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

  Як спростити DD за допомогою GdiskDump на Linux

Виберіть розмір файлу підкачки з таблиці, і запустіть його на деякий час. Відстежуйте використання простору підкачки вашою системою. Якщо потрібна тонка настройка, зміни легко вносяться. З файлами підкачки це двохвилинна робота. Порівняйте це з налаштуванням розділів на живому комп’ютері з Linux.

Створення файлу підкачки

Ви не повинні використовувати команду fallocate щоб створити свій файл підкачки. Це зі сторінки man для swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Отже, хоча fallocate швидше, ми будемо використовувати dd для створити файл підкачки. Машина, використана для дослідження цієї статті, має два ГБ оперативної пам’яті. Ми збираємося створити файл підкачки один ГБ.

Варіанти:

if: вхідний файл. У цьому прикладі ми використовуємо /dev/zero, який надасть потік нульових байтів.
of: вихідний файл. Ми збираємося створити файл у кореневому каталозі, який називається swapfile.
bs: Розмір блоку в байтах. Це вказує, скільки байтів зчитувати з вхідного файлу та записати у вихідний файл за раз.
count: Скільки блоків для читання та запису. Помножте це число на значення bs, щоб отримати розмір файлу.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Під час створення файлу надається деяка статистика.

Ми можемо побачити кількість блоків (записів), які були записані у файл, розмір файлу, час створення файлу та ефективну швидкість передачі даних.

Використовуйте команду ls, щоб переглянути файл у кореневому каталозі:

ls /

Підготовка файлу підкачки

Ми потребуємо підготувати файл підкачки за допомогою команди mkswap, перш ніж її можна буде використовувати. Нам не потрібно надавати будь-які параметри mkswap, крім шляху та імені файлу:

sudo mkswap /swapfile

Файл підготовлений для використання як файл підкачки. Зверніть увагу на попередження про права доступу до файлів. Нам потрібно змінити їх, щоб користувач root був єдиним, хто міг читати та записувати файл підкачки.

Використання файлу підкачки

Дозволи за замовчуванням занадто ліберальні, нам потрібно їх обмежити, щоб лише root міг використовувати файл підкачки. Використовуйте chmod, щоб змінити права доступу до файлу:

sudo chmod 600 /swapfile

Це видаляє всі дозволи для членів групи файлів та інших, але дозволяє власнику файлу, root, читати та записувати файл.

Нам потрібно використати команду swapon, щоб повідомити Linux, що доступний для використання новий файл підкачки. Нам потрібно лише вказати шлях та ім’я файлу:

sudo swapon /swapfile

Файл підкачки тепер активний.

  Чому Desktop Linux все ще має значення

Додавання файлу підкачки до fstab

Щоб переконатися, що ваш файл підкачки доступний після перезавантаження, додайте його до файлу /etc/fstab. Ви можете використовувати будь-який текстовий редактор, який вам подобається, але ми покажемо процес за допомогою графічного текстового редактора Gedit.

sudo gedit /etc/fstab

Рядок, який нам потрібно додати в нижню частину файлу:

/swapfile    none    swap    sw    0    0

Поля:

Файлова система: шлях та ім’я файлу підкачки.
Точка монтування: файл не монтується як файлова система, тому запис «немає».
Тип: це «своп».
Параметри: під час завантаження буде викликано swapon -a (запустити всі пристрої, позначені як swap) з одного зі сценаріїв завантаження. Ця опція наказує Linux розглядати цей запис як ресурс підкачки, який повинен перебувати під контролем цієї команди swapon -a. Зазвичай тут використовуються «за замовчуванням», оскільки деякі користувачі Linux помилково вважають, що це поле ігнорується. Як ми побачимо, це не так. Тому має сенс використовувати правильний варіант.
Дамп: це можна встановити на нуль. У даному випадку це не має значення.
Pass: це можна встановити на нуль. У даному випадку це не має значення.

Збережіть зміни та закрийте редактор.

Перевірка використання підкачки

Щоб перевірити, чи використовується ваш простір підкачки, скористайтеся командою swapon з параметром –show:

swapon --show

Колонки:

Ім’я: ім’я розділу підкачки або файлу підкачки.
Тип: тип пристрою підкачки.
Розмір: розмір ресурсу підкачки.
Використано: кількість використаного простору підкачки.
Prio: пріоритет цього місця підкачки.

Пріоритет місця підкачки

Кожному простору підкачки призначається пріоритет. Якщо ви не надасте його, один буде виділено автоматично. Автоматично розподілені пріоритети завжди негативні. Діапазон пріоритетів, які можна призначити вручну, становить від 0 до 32767. Спочатку використовуються ресурси заміни з вищими пріоритетами.

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

Щоб встановити пріоритет, додайте параметр pri= (пріоритет) до запису /etc/fstab. Відредагуйте рядок, який ви додали до /etc/fstab, щоб він виглядав так:

/swapfile    none    swap    sw,pri=10    0    0

Тобто додайте pri=10 до поля параметрів, відокремивши від «sw» комою. Не залишайте пробілів між «sw», комою та «pri=10». Перезавантажте комп’ютер і скористайтеся командою swapon –show:

swapon -- show

Пріоритет цього простору підкачки було підвищено до 10. Це є доказом того, що поле параметрів у записі /etc/fstab не ігнорується.

Простіше змінювати місце

Перебираючи виклад і пояснення, ми можемо створити новий файл підкачки так легко та швидко, як це:

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

І давайте перевіримо, чи це спрацювало:

swapon --show

Якщо ви хочете зробити це постійне видалення, його у вашому файлі /etc/fstab.

Бум. Робота виконана.