Подкачка страниц (SWAP)

From DD-WRT Wiki

Jump to: navigation, search

Contents

[edit] Введение

[edit] Что такое файл подкачки?

Файл подкачки (или раздел подкачки, SWAP) - это вспомогательное хранилище, такое как часть жесткого диска, которое может использоваться операционной системой в качестве памяти, когда системной оперативной памяти недостаточно. Это особенно полезно в системах с очень небольшим объемом оперативной памяти, таких как большинство совместимых с DD-WRT маршрутизаторов, поскольку помогает предотвратить нехватку памяти в системе при работе множества фоновых процессов.

[edit] Нужен ли файл подкачки?

Файл (или раздел) подкачки может быть полезен в ситуациях, когда DD-WRT:

  • запускает приложения, интенсивно использующие память (см. Optware);
  • запускает несколько фоновых процессов (опять же Optware);
  • работает на маршрутизаторе с менее чем 32 МБ ОЗУ.

Файл подкачки действительно не понадобится, если:

  • маршрутизатор используется только для его основных функций шлюза или точки доступа;
  • запускаются только несколько дополнительных сервисов или приложений со скромными требованиями к памяти;
  • система имеет много оперативной памяти (например, 64+ МБ).

Настоятельно рекомендуется не создавать раздел подкачки на флэш-накопителях (внутренняя флэш-память, SD/MMC, USB-накопители).

Вышеприведенное утверждение неверно для карт SDHC со встроенным контролем равномерности износа (wear-leveling) (например, при подключении через USB-SDHC-адаптер):

например:

  • карты MicroSD(HC) являются своего рода SSD: 7 декабря 2008 г. на сайте robert.penz.name была опубликована стаья No SWAP Partition, Journaling Filesystems, … on a SSD?, примерный перевод отрывка из статьи: «... Они предполагают идеальный контроль равномерности износа ... Они также поддерживают 2 миллиона циклов перезаписи и при записи на 16 ГБ SSD со скоростью 50 МБ/с мы получаем 20 лет бесперебойной работы! С 2 МБ/с получаем 519 лет! И даже если мы сократим количество циклов перезаписи до 100 000 и будем писать со скоростью 2 МБ/с всё время, получим 26 лет работы! ... 1. Никогда не выбирайте журналируемую файловую систему для разделов SSD: чушь, вы просто рискуете безопасностью данных. Оставайтесь с ext3 ... 7. Еще одна вещь, которую следует учитывать, это то, что флэш-устройства разбивают своё пространство на блоки. Размер блоков обычно варьируется от 16 КБ до 512 КБ. Поэтому запись одного байта может привести к стиранию и перезаписи до 512 КБ ... ».

[edit] Требования

Чтобы использовать подкачку страниц нужно внешнее хранилище. Это означает, что пользователи с "кастрированными" маршрутизаторами (например, Linksys WRT54G v5), которые имеют только 2 МБ флэш-памяти и используют сборку DD-WRT Micro, не могут использовать подкачку страниц в любом случае. Для всех остальных рекомендуется использовать жесткие или SSD-диски с подключением по USB, а не SD/MMC/флэш карты памяти. Причина в том, что подкачка страниц выполняет интенсивное чтение и запись, что приводит к быстрому износу карт памяти.

Утилиты, необходимые для включения подкачки, требуют, чтобы маршрутизатор поддерживал систему пакетов Optware. Следуйте инструкциям по установке ipkg-opt. После того, как вы правильно установили ipkg-opt, подключитесь к маршрутизатору по Telnet или SSH и выполните следующие команды (имейте в виду, что у вас могут возникнуть проблемы, если вы неправильно установили поддержку optware!):

/opt/bin/ipkg-opt update
/opt/bin/ipkg-opt install busybox

Пользователь Azuretech в 07:50, 29 августа 2009 г. (CEST) пишет:

Я установил раздел SWAP (на общий ресурс CIFS, но он должен работать и на устройствах USB), не используя optware, а используя следующий метод. Зачем устанавливать весь Busybox, когда все, что нужно, это swap-utils ipkg (и опционально kmod-loop и kmod-ext2 в случае, если вы собираетесь установить раздел подкачки на общий ресурс CIFS):

ipkg install swap-utils
ipkg install kmod-loop
ipkg install kmod-ext2
insmod /jffs/lib/modules/2.4.30/loop.o
insmod /jffs/lib/modules/2.4.30/ext2.o 
dd if=/dev/zero of=/tmp/smbshare/swap.ext2 bs=1 seek=64M echo y | mke2fs -L optware /tmp/smbshare/swap.ext2
mkdir /tmp/swap
mount -o loop /tmp/smbshare/swap.ext2 /tmp/swap
dd if=/dev/zero of=/tmp/swap/swapfile bs=1024 count=65535
mkswap /tmp/swap/swapfile
swapon -p1 /tmp/swap/swapfile

Проверьте, работает ли подкачка страниц командой swapon -s.

[edit] Включение подкачки страниц

[edit] Использование файла подкачки

Чтобы включить подкачку страниц с использованием файла подкачки, необходимо сначала его создать, подготовить и затем включить подкачку на нем.

[edit] Создание файла подкачки

Прежде всего, убедитесь, что файловая система диска, на который вы хотите разместить файл подкачки, правильно смонтирована. Для целей данного руководства мы будем предполагать, что диск смонтирован как /mnt, и мы хотим использовать файл /mnt/myswap.swp для подкачки.

Используйте следующую команду, чтобы создать файл размером 16 МБ, который мы будем использовать:

dd if=/dev/zero of=/mnt/myswap.swp bs=1k count=16000

[edit] Подготовка файла подкачки

Прежде чем мы включить файл подкачки, нужно сначала настроить его. Следующая команда сделает это:

/opt/bin/busybox mkswap /mnt/myswap.swp

[edit] Включение файла подкачки

Теперь, когда файл подкачки был создан и настроен, нужно включить подкачку страниц с его использованием командой swapon:

/opt/bin/busybox swapon /mnt/myswap.swp

[edit] Использование раздела подкачки

Настроить раздел подкачки немного сложнее, так как сначала необходимо создать раздел, а затем отформатировать его с помощью файловой системы linux-swap. Как только это будет сделано, при условии, что раздел подкачки находится в /dev/scsi/host0/bus0/target0/lun0/part5 (обычно для USB-накопителей v24 с несколькими разделами), единственная команда, которая должна быть выполнена:

/opt/bin/busybox swapon /dev/scsi/host0/bus0/target0/lun0/part5

[edit] Проверка подкачки страниц

Самый простой способ проверить, работает ли подкачка страниц, это использовать команду free. Ниже приведен пример вывода команды free в системе с 32 МБ ОЗУ и разделом подкачки 64 МБ.

root@MyRouter:/opt/bin# free
                  total         used          free        shared      buffers
Mem:        29340        27652         1688            0         1184
Swap:       64220          300          63920
Total:        93560        27952        65608
root@MyRouter:/opt/bin#

В качестве альтернативы, если включен системный журнал syslog, вы можете проверить файл /var/log/messages на наличие любых системных сообщений, связанных с подкачкой.

[edit] Предостережение

Не используйте этот метод, если используете USB-накопитель с несколькими разделами. Обратитесь к статье Хранилище USB для получения дополнительной информации.