Файл підкачки (своп, віртуальна пам'ять, обмінник) -- окремий файл, або дисковий розділ, який так би мовити, є продовженням оперативної пам'ті. Місце виділене під файл підкачки використовується системою у разі недостачі оперативної пам'яті.

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

"Пам'ятаю, у грудні мені написав один німець. Він пробував скомпілювати ядро, але не міг запустити GCC, оскільки у нього було всього лиш два меґабайти оперативної пам'яті, а компілятору тоді потрібно було трохи більше. Він запитав, чи не можна скомпілювати Linux якимось іншим компілятором, який не вимагає стільки оперативної пам'яті. І не зважаючи на те, що у мене подібних проблем не було, я вирішив додати до ядра нову функцію, спеціально для нього. Це називається сторінковоїю підкачкою на жорсткий диск, і дає можливість у додаток до наявної пам'яті використати дисковий простір. Це було напередні різдва 1991 року. Пам'ятаю, 23 грудня намагався реалізувати підкачку. До 24-го вона ніби й запрацювала, але час від часу давала збій. Нарешті, 24-го все було готово..."

(c) Лінус Торвальдс, "Just For Jun", розід IX.

Скільки місця виділити під файл підкачки?

Мінімальний розмір дискового простору, який рекомендується для файлу підкачки -- це кількість самої оперативної пам'яті; найоптимальнішим вважається помножити її удвічі. Тобто, якщо у 256 Мб ОЗП, то файл підкачки повинен бути 512 Мб.

Можна виділити і більше місця, але це має сенс лише у випадку, коли у вас дуже мало оперативної пам'яті, або ви маєте намір використовуватити програмне забезпечення, яке потребує її великої кількості.

Де його ліпше розмістити?

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

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

Створення файлу для swap в кореневому каталозі:

dd if=/dev/zero of=/swapfile bs=1M count=1024

Буде створено файл розміром 1024 мегабайти з іменем swapfile.

Розглянемо те як за допомогою програми fdisk створити спеціальний swap розділ. Припустимо, що у вас вже є один порожній розділ за адресою /dev/hda1.

Запускаємо fdisk:

fdisk /dev/hda

Змінюємо системний ідентифікатор для розділу натиснувши t:

Command (m for help): t

Вибираємо потрібний розділ на HDD натиснувши 1:

Partition number (1-5): 1

Вводимо потрібний ідентифікатор (82):

Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)

Записуємо те що ми тут наробили. Для цього вводимо w:

Command (m for help): w

Створити своп:

mkswap /dev/hda1
або, у випадку з файлом
mkswap /swapfile

Підключити своп:

swapon /dev/hda1
або, у випадку з файлом
swapon /swapfile

Підключити всі swap файли, розділи:

swapon -a

Відключити своп:

swapoff /dev/hda1

Відключити всі swap файли, розділи:

swapoff -a

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

/swapfile none swap sw 0 0

Якщо розділ, то слід використовувати UUID для ідентифікації розділу. Дізнатися UUID swap розділу і додати в /etc/fstab запис вигляду:

UUID=88240a8b-e1b7-4989-a0c4-da7382d13f0a none swap sw 0 0

Здається UUID виводить команда mkswap. Або, щоб дізнатися який ідентифікатор має розділ, виконати команду

ls -l /dev/disk/by-uuid/ | grep sda2

де sda2 потрібно замінити на ваш розділ.

Якщо ж без UUID, то щось на кшталт:

/dev/hda1 none swap sw 0 0

Де /dev/hda1 -- це розділ, на якому знаходиться файл підкачки.

Ресурси тенет