пятница, 27 сентября 2013 г.

FreeBSD: обновление устаревшего порта mysql

Порой надо на сервере обновить mysql. В портах FreeBSD уже удалили версию 5.0. Поэтому на тех серверах, где она еще стоит хорошо бы выполнить обновление.
Очень просто и быстро обновить mysql можно так:

portsnap fetch update
portupgrade -o databases/mysql55-client -f mysql-client-5.0.92
portupgrade -o databases/mysql55-server -f mysql-server-5.0.92
/usr/local/etc/rc.d/mysql-server restart
mysqlcheck -u root -p -A -c
mysqlcheck -u root -p -A -r
mysqlcheck -u root -p -A -a

четверг, 26 сентября 2013 г.

ZFS: root on zfs FreeBSD 9.1 или 9.2 и старше


Порой надо установить систему FreeBSD так, чтобы был зеркальный zfs-mirror, да и сделать надо это удаленно. Мне часто помогает такая схема - звонок человеку, который рядом с новым сервером с заданием: установка трех дисков на сервер и подготовка загрузочного DVD-диска. Далее, удаленный человек устанавливает по дефолту систему и заводит пользователя с gid=0, чтобы можно было удаленно получить права root, а также запускает автоматически sshd для удаленного доступа.


Далее дело техники. Остается только удаленно зайти на свежеустановленный сервер и дать следующие команды для двух оставшихся после установки дисков (ada1, ada2) чтобы создать root on zfs mirror (ada1+ada2):

gpart create -s gpt ada1
gpart add -a4k -b 34 -s 94 -t freebsd-boot ada1
gpart add -a4k -t freebsd-zfs -l disk0 ada1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

и тоже самое для ada2.

Далее создаю зфс-пул из созданных ранее дисков. Указываю загрузочный пул, создаю и настраиваю зфс-разделы с заданными настройками (компрессия, возможность выполнения команд и возможностью работы файлов с заданными именами пользователей)..

zpool create -o altroot=/mnt -o 
cachefile=/var/tmp/zpool.cache zroot mirror /dev/gpt/disk*

zpool set bootfs=zroot zroot
zfs set checksum=fletcher4 zroot

zfs create zroot/var
zfs create zroot/usr
zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp


Создаю своп:

zfs create -V 4G zroot/swap
zfs set org.freebsd:swap=on zroot/swap
zfs set checksum=off zroot/swap


Далее, нужно примонтировать двд-диск с установочной системой FreeBSD и запустить инсталляцию, порты и исходники я не инталлирую, чтобы не терять время, это все равно устаревает почти мгновенно, лучше быстрее установить и войти в готовую систему:

sh
mkdir /tmp/cdrom
mount_cd9660 /dev/cd0 /tmp/cdrom
cd /tmp/cdrom/usr/freebsd-dist
export DESTDIR=/mnt/zroot
for file in base.txz lib32.txz kernel.txz doc.txz ;\
 do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); \
 done


Затем надо прописать в новом /etc/rc.conf следующие настройки (подправьте свои названия интерфейсов):

hostname="srv-zfs"
background_fsck="NO"
zfs_enable="YES"
ifconfig_re0="inet 192.168.0.198/24"
defaultrouter="192.168.0.254"
sshd_enable="YES"

А в новом /mnt/zroot/boot/loader.conf хорошо бы задать открытый файервол и опции загрузки системы:

zfs_load="YES"
vfs.root.mountfrom="zfs:zroot"
alias_ftp_load="YES"
alias_pptp_load="YES"
autoboot_delay="2"
net.inet.ip.fw.default_to_accept=1
net.inet.ip.fw.verbose=1
ipfw_load="YES"
ipfw_nat_load="YES"

На новом сервере нужно создать пользователя, часовой пояс и, возможно еще какие-то дополнительные настройки:

chroot /mnt/zroot/
pw useradd user -g 0 -m
passwd user
tzsetup

Затем надо создать файл /etc/fstab, выйти из режима chroot, скопировать кэш zfs-пула и задать правильные точки монтирования:

touch /etc/fstab
exit
cp /var/tmp/zpool.cache /mnt/zroot/boot/zfs/zpool.cache
zfs set mountpoint=legacy zroot
zfs set mountpoint=/tmp zroot/tmp
zfs set mountpoint=/usr zroot/usr
zfs set mountpoint=/var zroot/var

Перегрузить сервер и пользоваться!
Данная процедура работает нормально на установках системы 9.1 и 9.2.

вторник, 24 сентября 2013 г.

Обзор и настройка жпс-навигатора Гармин нуви-30 (Garmin nuvi-30)

Недавно купил навигатор Гармин нуви-30 (garmin nuvi-30) с картами Навлюкс.

Выбирал по бренду и по минимальной цене.
Причина покупки - приехали в гости в большой чужой город на машине.
Перед покупкой выбирал среди других, более дорогих моделей Гармин. Для себя сделал вывод, что смысла в покупке навигатора в 2-3 раза дороже нет. В более дорогих моделях больше экран - а значит и больше закрывает обзор водителю. Также более дорогие модели идут с более быстрым процессором, а значит и более быстрой прорисовкой маршрута и изменениями в маршруте в процессе езды. Но несколько дней езды с самым простым навигатором для меня показали, что он отлично справляется с поставленной задачей - навигацией. В навигатор смотреть приходится не часто, поэтому смысла переплачивать я не вижу. С навигатором нуви-30 в комплекте поставляется крепление для лобового стекла, крепление качественное и надежное - закрепил и забыл. В целом - навигатором доволен.

В навигаторе Гармин имеются следующие настройки навигации:

В свойствах маршрута можно указать:
  • наименьшее время
  • кратчайшее расстояние
  • напрямик

Наименьшее время на мой взгляд наиболее оптимальный выбор для водителя машины, а кратчайшее расстояние подойдет лучше таксистам. Вариант "напрямик" скорее всего пригодится велосипедистам или пешеходам, их не испугает грунтовая дорога в лесу. :)

Что такое "Объезды" можно понять когда попользуешься навигатором несколько дней. :) Внутри этого меню вот что:


  • Развороты
  • Шоссе
  • Платные дороги
  • Паромы
  • Полосы для карпула
  • Грунтовые дороги

Если поставить галочку напротив "Шоссе" и поехать из одного города в другой, предположим что между городами 300км, то маршрут превратится в увлекательное путешествие по проселочным дорогам, ухабам и ямам. Путешествие будет необычайно долгим и появится желание выкинуть навигатор. Вообще, как я понял "Объезды" задает навигатору параметр что надо избегать при прокладывании маршрута. Естественно для междугородних поездок "шоссе" лучше чтобы навигатор не избегал при построении маршрута. Для себя я в объездах указал только "полосы для карпула" (car pool - специальные полосы на дорогах, которые предназначены для движения автомобилей, которые везут попутчиков, смотрите в ru.wiki) и "грунтовые дороги". Остальное оставил не отмеченным в "Объездах".

В первые дни использования без особых настроек навигатора оказалось что жпс-навигатор ведет не по самой лучшей дороге или показывает худший путь. Чтобы разобраться с этим нужно просто взять навигатор в руки и построить несколько достаточно длинных (>150km) маршрутов на разных настройках, затем пальцем попробовать потягать маршрут по экрану и изменять зум (ближе-дальше) и посмотреть каким образом проложены эти маршруты. Порой бывает что дорога проходит через промежуточный город, однако может возле промежуточного города оказаться объездная дорога, которая будет на 5км длиннее, но по времени маршрут может оказаться короче из-за меньших задержках на светофорах (ведь на объездных дорогах значительно меньше светофоров и перекрестков) и вообще уменьшения времени движения. Для нормальной работы навигатора лучше тестирование делать на улице или в машине, но не в середине квартиры на 1 этаже 25 этажного дома! :)

пятница, 20 сентября 2013 г.

Mikrotik: толковая настройка радио-сети для увеличения скорости

Маршрутизаторы Микротик имеют массу инструментов для настройки, в том числе и для настройки wi-fi. Порой клиент на небольшом расстоянии в современной квартире не может получить скоростей в радиосети выше 1МБайта в секунду, при этом вроде как оборудование современное и должно справляться, и вай-фай настроен на 802.11n и тд.

Ниже приведу собственный опыт настройки роутера Микротик для получения наилучших результатов работы радио.

1. Канал лучше использовать 6, как бы это не звучало смешно. Именно на этом канале многие клиентские устройства работают лучше всего, а на других каналах уменьшают аппаратно мощность.

2. Хорошо если запретить в своей радио сети на роутере Микротик подключения на низких скоростях, таким образом своё радио будет меньше разлетаться по соседним квартирам и воздействия такого же "радио" от соседей будет меньше и служебный радио-трафик будет ходить быстрее.

3. В некоторых случаях переход на режим работы 802.11G дает лучшие результаты, чем работа в режиме совместимости b/g/n. Проверено на многих установках.

Ниже строчка конфигурации RouterOS:

/interface wireless
set 0 adaptive-noise-immunity=ap-and-client-mode band=2ghz-b/g/n \
basic-rates-a/g=12Mbps channel-width=20/40mhz-ht-above disabled=no \
frequency=2437 ht-basic-mcs=mcs-3,mcs-4,mcs-5,mcs-6,mcs-7 \
ht-rxchains=0,1 ht-txchains=0,1 \
ht-supported-mcs=mcs-3,mcs-4,mcs-5,mcs-6,mcs-7,mcs-8,mcs-9,mcs-10,mcs-11,mcs-12,mcs-13,mcs-14,mcs-15,mcs-16,mcs-17,mcs-18,mcs-19,mcs-20,mcs-21,mcs-22,mcs-23 \
l2mtu=2290 mode=ap-bridge radio-name=my-wifi ssid=my-wifi


В дальнейшем я постараюсь обновлять эту статью.

Exim: копировать некоторые избранные входящие письма

Порой бывает нужно копировать входящие письма, которые поступают на почтовый сервер Exim для локальных пользователей на другие ящики, не важно на локальные или внешние. Если вам нужно слать копии входящих писем на другие ящики, то этот router exim для вас. Вот exim router:

copy_incoming1:
 driver                 = redirect
 unseen                 = yes
 domains                = $qualify_domain
 condition              = ${if match_domain{$sender_address_domain}
                                    {domain1.com : domain2.net}{yes}}
 condition              = ${if match{$local_part@$domain}{localuser@example.com}}
 data                   = extuser@example.com,extuser2@example.net