Файл підкачки (своп, віртуальна пам'ять, обмінник) -- окремий файл, або дисковий розділ, який так би мовити, є продовженням оперативної пам'ті. Місце виділене під файл підкачки використовується системою у разі недостачі оперативної пам'яті.
Історія файлу підкачки у лінуксі
"Пам'ятаю, у грудні мені написав один німець. Він пробував скомпілювати ядро, але не міг запустити 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 -- це розділ, на якому знаходиться файл підкачки.