Для ускорения резервного копирования и процесса восстановления, можно хотеть рассмотреть использование сторонней резервной технологии такой как.
На ноте стороны, изменяя размер Вашего Журнала транзакций не будет влиять на объем данных, которые поддерживаются/восстановил.
split_spool_directory
в файле конфигурации и Exim обработает многочисленные очереди более эффективно путем разделения сообщений на подкаталоги вместо единственного каталога шпульки.Много дистрибутивов Linux уже имеют некоторые предварительно сконфигурированные, но неиспользованные электронные диски. Выполните следующую команду для списка текущих электронных дисков:
ls /dev/ram*
Для наблюдения выделения размера использовать fdisk
стандартным способом: (где X
Ваше число электронного диска),
fdisk -l /dev/ramX
Вы, вероятно, захотите увеличить распределение пространства по умолчанию. Так как размером электронного диска управляет ядро, необходимо будет установить опцию ядра увеличить выделенное место. Если Вашим загрузчиком является GRUB, можно отредактировать grub.conf
файл и добавляет ramdisk_size
опция ядра. Ваш файл конфигурации GRUB должен затем выглядеть примерно так: (в этом примере мы устанавливаем размер электронного диска на 256 МБ),
default 0
timeout 5
hiddenmenu
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
title=Gentoo Gateway Server
root (hd0,1)
kernel /boot/vmlinuz root=/dev/sda2 ramdisk_size=256000
После перезагрузки Ваши новые электронные диски должны отразить обновленное распределение пространства. С тех пор нет никакого смысла в форматировании электронного диска с журналируемой файловой системой, мы будем просто использовать ext2:
mke2fs -m 0 /dev/ram0
-m 0
опция мешает mke2fs резервировать любое пространство в файловой системе для пользователя root. Можно теперь создать точку монтирования для электронного диска, смонтировать его и начать использовать его.
mkdir /mnt/ramdisk
mount /dev/ram0 /mnt/ramdisk
df -h /dev/ram0
Кроме того, удостоверьтесь, что Вам установили корректные полномочия на точке монтирования (замените имя пользователя и groupname с корректной группой и пользователем для Вашей системы):
chown -R username:groupname /mnt/ramdisk
Можно теперь использовать этот раздел, как будто это был стандартный раздел жесткого диска. Обратите внимание, что при размонтировании раздела данные не будут потеряны, и RAM не будет освобождена, так как ядро постоянно выделяет требуемое место, пока не перезагружено.
Для автоматизации этой процедуры добавьте следующее в Ваш /etc/rc.local
сценарий:
/sbin/mke2fs -q -m 0 /dev/ram0
/bin/mount /dev/ram0 /mnt/ramdisk
/bin/chown username:groupname /mnt/ramdisk
/bin/chmod 0750 /mnt/ramdisk
Можно сделать, связывание монтируется так, чтобы Exim продолжил писать в свой стандартный каталог шпульки. Для этого добавьте следующую строку к Вашему /etc/fstab
файл:
/mnt/ramdisk /var/spool/exim none bind 0 0
С другой стороны, можно просто указать на Exim на точку монтирования электронного диска. Для этого необходимо будет установить следующее в exim.conf
файл:
spool_directory = /mnt/ramdisk
Очевидно, Вы только сделали бы любой вышеупомянутого, не обоих.
Вместо того, чтобы использовать электронный диск, скорее используйте tmpfs, поддерживаемый ядром Linux 2.4 и. Преимущество использования tmpfs - то, что память является динамично присваиваемой, делая его намного более гибким решением, чем электронные диски. Кроме того, если Ваш tmpfs раздел исчерпает пространство, то ядро автоматически начнет данные подкачки страниц к Вашему жесткому диску, тогда как решение для электронного диска просто заставило бы Exim прекращать обрабатывать сообщения и катастрофический отказ.
Используя tmpfs, Вы не должны будете делать ни одного из шагов, требуемых для вышеупомянутого решения для электронного диска. Следующие шаги требуются для успешной tmpfs конфигурации:
Создайте точку монтирования и установите корректные полномочия:
mkdir /mnt/tmpfs
chown -R username:groupname /mnt/tmpfs
Затем, откройте Ваш /etc/fstab
файл и набор tmpfs раздел, который будет создан и смонтирован при начальной загрузке:
#<fs> <mountpoint> <type> <opts> <dump/pass>
tmpfs /mnt/tmpfs tmpfs size=1G,nr_inodes=10k,mode=0700 0 0
Это создаст 1 ГБ tmpfs раздел с 10'000 inodes. exim конфигурация совпадает с при создании электронного диска - любой говорит Exim, что местоположение нового каталога шпульки расположено в /mnt/tmpfs
или свяжите существующий каталог шпульки с /mnt/tmpfs
точка монтирования. С другой стороны, Вы могли просто смонтировать tmpfs раздел на существующий каталог шпульки Exim с самого начала - так вместо вышеупомянутых изменений в /etc/fstab
файл, используйте эту строку вместо этого:
#<fs> <mountpoint> <type> <opts> <dump/pass>
tmpfs /var/spool/exim tmpfs size=1G,nr_inodes=10k,mode=0700 0 0
Этот сайт имеет хорошую статью, объясняя tmpfs и электронные диски и различия между ними.
Перед продолжением, сочините сообщение, что Вы будете отправлять пользователям, найденным парсингом журнала почтового сервера, сообщающим им, что Ваш сервер просто потерял их сообщение из-за перебоя в питании/reboot/crash/human спотыкающийся силового кабеля.
Почтовые серверы очень серьезно относятся к гарантиям персистентности данных. Они идут на многое, чтобы удостовериться что, когда они берут на себя ответственность за почту пользователя, что сообщение безопасно на диске и собирается пережить катастрофический отказ/перезагрузку или любое другое событие, которое вытирает содержание RAM системы. Вы собираетесь удостовериться, что их усилия будут потрачены впустую. Вы уверены, что хотите сделать это?
Вы освободили бы данные пользователя через множество сценариев здесь, включая чистую перезагрузку или завершение работы машины. Ищите некоторую другую идею о тонкой настройке производительности почтового сервера.
можно использовать tmpfs и смонтировать электронный диск, это не сложно.
существует это сообщение в блоге, которое детализирует создание tmpfs и изменение сценария запуска exim для создания его немного более устойчивым.
Я просто использовал бы/dev/shm, который уже смонтирован по умолчанию на большинстве современных дистрибутивов Linux.
vz1:~# df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 12G 0 12G 0% /dev/shm
vz1:~# mount |grep shm
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
vz1:/dev/shm# dd if=/dev/zero of=5gb.dat bs=1M count=5000 conv=fsync
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB) copied, 7.36568 s, 712 MB/s
vz1:/dev/shm# time dd if=5gb.dat of=/dev/null bs=1M
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB) copied, 2.70614 s, 1.9 GB/s
Просто удостоверьтесь, что Вы контролируете его; заполнение его могло быть плохим.
И затем просто обновите сценарий запуска Exim init.d для перемещения / каталогов шпульки var в/dev/shm/куда-нибудь.
Как уже было сказано, размещение каталога спула в ОЗУ tempfs рискованно, так как вы можете потерять все электронные письма в очереди в случае сбоя сервера. Я получил очень хорошую производительность, разместив каталоги / var / spool / exim / input
и / var / spool / exim / msglog
на SSD-диске (более 60000 отправленных писем в час на дешевом настольном оборудовании).
Каталог / var / spool / exim / db
предпочтительно может быть помещен на ramdisk (символическая ссылка на этот каталог на / dev / shm - самый простой способ), так как повторная попытка подсказки не смертельны.
Также фактом является то, что exim будет довольно плохо мусорить, если у вас в очереди несколько тысяч электронных писем или больше, поскольку процессы обработчика очереди будут тратить пропорционально больше времени, спотыкаясь друг о друге и проверяя блокировки, чем фактически доставляя электронные письма.