воскресенье, 10 февраля 2013 г.

Создание swap-файла

Почему файл, а не раздел?
Да потому что с разделом больше возни, а результат тот же: зайти в менеджер дисков, откусить место от другого раздела, перезагружаться, а в моем случае нужно просто создать файл.
Насчет производительности, в википедии черным по белому написано, что файл подкачки ничуть не уступает разделу подкачки по производительности.
В ОС Unix, и подобных ей, swap обычно помещается на отдельный раздел жёсткого диска, что ранее ускоряло доступ к данным, по сравнению с расположением swap на обычном разделе. В ядрах Linux 2.6 и новее работа swap-файла не уступает по производительности swap-разделу.
Вот пруфы: раз, два.
Почему я решил изменить количество swap-памяти?
Да просто при установке свежей Linux Mint, в тот день как только она вышла, не задумывался о значении swap'а в своей жизни, поэтому ограничился стандартным 600+mb, а теперь мне этого мало.
Для начала посмотрим нынешнее состояние подкачки, занятую память и использованные разделы/файлы swap:
# swapon -s
либо
# cat /proc/swaps

Должно появиться что-то в этом роде:
Filename Type Size Used Priority
/dev/sda1 partition 633852 630148 -1

где filename - путь к разделу/файлу подкачки,
type - тип (файл или раздел),
size - размер,
used - количество памяти, которое используется в данный момент,
priority - приоритет.

Теперь создадим файл подкачки, утилитой dd:
# dd if=/dev/zero of=/swapfile bs=500M count=4
таким образом мы создадим пустой файл (заполненный нулями), bs - размер блока, count - количество таких блоков, в итоге 500mb*4=2Gb памяти я выделил для swap-файла.

Появится что-то такое:
4+0 записей считано
4+0 записей написано
скопировано 2097152000 байт (2,1 GB), 34,5758 c, 60,7 MB/c  

Пустой файл у нас есть, теперь его нужно обозвать файлом подкачки (что-то типа форматирования файловой системы):
# mkswap /swapfile

Если все нормально получилось, должно появиться что-то в этом роде:
Setting up swapspace version 1, size = 2047996 KiB
без метки, UUID=0ea14298-9626-49aa-8fcd-1badea0d9eff  

Swap-файл у нас есть, теперь его надо подключить (смонтировать):
# swapon /swapfile

Файл подкачки у нас смонтирован, проверим теперь состояние памяти подкачки, все той же командой:
# swapon -s
Filename Type Size Used Priority
/dev/sda1 partition 633852 630248 -1
/swapfile file 2047996 0 -2  
примерно такой вывод, означает, что теперь у нас подключено один раздел и один файл подкачки.

Теперь, для того чтобы, постоянно при перезагрузке компьютера не писать # swapon /swapfile нужно добавить строчку в файл /etc/fstab:
# vi /etc/fstab
примерно вот такое содержимое этого файла:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda5 during installation
UUID=a6b25331-065e-41d7-8d5f-7aaf1293931a / ext4 errors=remount-ro 0 1
# /home was on /dev/sda3 during installation
UUID=9968dfba-01d9-4365-acb5-82131a3406cb /home ext4 defaults 0 2
# swap was on /dev/sda1 during installation
UUID=a4d4bc27-1564-4651-ba41-21f1fc89c1cc none swap sw 0 0  
добавим две строчки в самый конец файла (нажатие клавиши i в vi переходим в режим вставки):
# second swap
/swapfile none swap sw 0 0
сохраняем и выходим (Esc, :wq)
Теперь можно перезагрузиться для проверки.

Если же вы хотите удалить предыдущий файл/раздел swap, то для начала отмонтируем его:
# swapoff -a
команда отключает все смонтированные swap-разделы/файлы, предварительно загрузив данные в оперативную память, поэтому этот процесс может занять несколько минут.

Проверим:
# swapon -s
Filename Type Size Used Priority

Пусто, значит никаких разделов у нас не подключено.
Теперь нужно удалить/закомментировать строчку в  /etc/fstab, для того чтобы предыдущий файл, при перезагрузке заново не загружался:
#UUID=a4d4bc27-1564-4651-ba41-21f1fc89c1cc none swap sw 0 0
что-то в этом роде.  

Все, теперь можно смело перезагружаться:
# shutdown -r now

После перезагрузки, можно проверить состояние swap опять:
# swapon -s
Filename Type Size Used Priority
/swapfile file 2047996 0 -1
все нормально работает.

Комментариев нет: