Архив за февраля 2010

Bonnie++ : тест производительности жесткого диска веб-сервера

Специально для тестирования производительности файловой системы создан пакет bonnie++. С помощью него можно протестировать жесткий диск в специфичных для веб-сервера условиях наличия большого количества небольших по размерам файлов, размещенных во множестве папок. bonnie++ можно найти в репозитории RPMforge.

[root@server01 ~]# yum install bonnie++
[root@server01 ~]# bonnie++ -n 5:5242880:2:100 -r 1024M -s 4096M -u root -d /home

Данная команда заставит bonnie++ протестировать файловую подсистему с использованием 4 ГБ файла и 5*1024 файлов с размерами от 2 байт до 5 МБ (5242880 байт), которые будут размещаться в ста папках. Тестирование завершается выводом на экран результатов :

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec  %CP K/sec %CP K/sec %CP K/sec   %CP  /sec %CP
server01        4G 78942  91 121977  18 112992  11 85521  99 5429842 100 +++++ +++
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
5:5242880:2/100        41  18    26   1   361   7    42  19    27   1   567  13

Для файла, размером 4 ГБ, данные результаты свидетельствуют о том, что :

  • побайтовое заполнение происходило со скоростью 78942 КБ/с, на что было в общем затрачено 91% ресурса одного процессорного ядра;
  • запись блоками по 8 КБ происходила со скоростью 121977 КБ/с, на что затрачено 18% ресурса одного ядра;
  • скорость перезаписи каждого блока выполнялась со скоростью 112992 КБ/с при загрузке ядра на 18%;
  • побайтовое чтение происходило со скоростью 85521 КБ/с, загрузка ядра – 99%;
  • чтение файла блоками по 8 КБ происходило со скоростью 5429842 КБ/с с загрузкой ядра 100%;
  • тест случайного чтения из файла завершился менее, чем за одну секунду, поэтому bonnie++ считает такой результат некорректным и отображает +++ вместо чисел.

Для теста 5*1024 файлов размерами от 2 байт до 5 МБ в ста папках результаты говорят о следующем :

  • последовательное создание файлов происходило со скоростью 41 файл/с (загрузка ЦП 18%), чтение – со скоростью в 26 файлов/с (загрузка ЦП 1%), удаление361 файлов/с (загрузка ЦП 7%);
  • случайное создание файлов было выполнено со скоростью 42 файла/с (загрузка ЦП 19%), чтение27 файлов/с (загрузка ЦП 1%), удаление567 файлов/с (загрузка ЦП 13%).

Такие результаты были получены при тестировании двух жестких дисков WD VelociRaptor WD1500HLFS 150GB, работающих в аппаратном RAID1.

Теги: ,

Dual-Master Replication в MySQL : настройка MySQL кластера из двух узлов

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

Предполагается, что на узлах уже установлены клиентская  (MySQL-client-community) и серверная (MySQL-server-community) части MySQL. Базы данных находятся в каталоге /var/lib/mysql/. Пример успешно использован для CentOS 5.4 и MySQL 5.1.42.

Пускай первый узел будет называться node1 (IP 192.168.0.101), а второй узел – node2 (IP 192.168.0.201). В данном примере dual-master репликация будет работать для баз данных с именами testdb1 и testdb2. Предполагается, что для баз данных уже созданы основные пользователи.

С помощью MySQL-клиента на node1 добавляем нового пользователя repluser с правами на репликацию (предполагается, что пароль pwd будет изменен) :

GRANT REPLICATION SLAVE ON *.* TO ‘repluser’@'192.168.0.201′ IDENTIFIED BY ‘pwd’;

То же самое нужно сделать на node2 :

GRANT REPLICATION SLAVE ON *.* TO ‘repluser’@'192.168.0.101′ IDENTIFIED BY ‘pwd’;

После этого сеанс MySQL-клиента можно завершить и приняться за правку конфигурационного файла MySQL (обычно, это my.ini).

На node1 добавляем в секцию [mysqld] следующие строки :

server-id = 1
log-bin = /var/lib/mysql/bin.log
log-slave-updates
log-bin-index = /var/lib/mysql/log-bin.index
log-error = /var/lib/mysql/error.log 

relay-log = /var/lib/mysql/relay.log
relay-log-info-file = /var/lib/mysql/relay-log.info
relay-log-index = /var/lib/mysql/relay-log.index 

auto_increment_increment = 2
auto_increment_offset = 1
master-host = 192.168.0.201
master-user = repluser
master-password = pwd 

replicate-do-db = testdb1
replicate-do-db = testdb2

На node2 выполняем аналогичные действия :

server-id = 2
log-bin = /var/lib/mysql/bin.log
log-slave-updates
log-bin-index = /var/lib/mysql/log-bin.index
log-error = /var/lib/mysql/error.log 

relay-log = /var/lib/mysql/relay.log
relay-log-info-file = /var/lib/mysql/relay-log.info
relay-log-index = /var/lib/mysql/relay-log.index 

auto_increment_increment = 2
auto_increment_offset = 2
master-host = 192.168.0.101
master-user = repluser
master-password = pwd 

replicate-do-db = testdb1
replicate-do-db = testdb2

После сохранения конфигурационных файлов, на обоих узлах следует перезапустить MySQL-сервер :

[root@server01 ~]# service mysql restart

Если все настроено правильно, то при запуске в MySQL клиенте команды

SHOW SLAVE STATUS\G

на любом из узлов в строке Slave_IO_State должно быть написано

Waiting for master to send event

Теперь кластер можно использовать, например, для построения разделенного на нескольких серверах веб-сайта или других задач распределения базы данных в режиме dual-master.

Если данные не реплицируются или произошла серьезная ошибка в работе кластера, следующий код можно использовать для повторного запуска MySQL в режиме dual-primary (выполнять нужно на обоих узлах) :

[root@server01 ~]# service mysql stop
[root@server01 ~]# cd /var/lib/mysql/
[root@server01 ~]# rm bin.00000* error.log log-bin.index master.info relay*
[root@server01 ~]# service mysql start

Теги: , ,

Kickstart с флешки : автоматическая установка CentOS

Установщик CentOS автоматически создает файл /root/anaconda-ks.cfg, который содержит абсолютно всю информацию о выбранных пакетах и настройках установки текущей ОС. Это позволяет производить автоматическую установку системы, абсолютно идентичную данной. Данный файл может значительно сэкономить время по сравнению с ручной установкой, ведь вам не нужно снова и снова выбирать пакеты, прописывать настройки сети, часового пояса и другие настройки.

Kickstart можно использовать с обыкновенной флешкой. Для этого нужно скопировать anaconda-ks.cfg с уже установленной системы, предварительно смонтировав флешку,

root@server01 [~]# mount /dev/sdc1 /media
root@server01 [~]# cp /root/anaconda-ks.cfg /media/ks.cfg

и запустить установку CentOS с такими опциями :

linux ks=hd:sdc1:/ks.cfg

Приведенный ниже пример ks.cfg производит автоматическую установку CentOS с локального DVD-диска, автоматически настраивает два сетевых устройства, уничтожает все существующие разделы жесткого диска и автоматически их разбивает, автоматически устанавливает нужные пакеты, задает пароль супер-пользователя – в общем, делает полное клонирование уже установленной системы.  Это может пригодиться тогда, когда нужно установить абсолютно одинаковые системы на несколько одинаковых компьютеров.

# Kickstart file automatically generated by anaconda.

install
cdrom
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto static --ip 192.168.1.101 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 192.168.1.1 --hostname server01
network --device eth1 --bootproto static --ip 192.168.1.102 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 192.168.1.1 --hostname server01
rootpw --iscrypted $1$iif9Y4oM$G/DN9UWMZqmzsI/8F33xn.
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc Europe/Kiev
bootloader --location=mbr --driveorder=sda,sdb,sdc
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --linux
part /boot --fstype ext3 --size=200 --ondisk=sda
part /backup --fstype ext3 --size=300000 --ondisk=sdb
part / --fstype ext3 --size=30000 --ondisk=sda
part /var --fstype ext3 --size=15000 --ondisk=sda
part /usr --fstype ext3 --size=12000 --ondisk=sda
part swap --size=6000 --ondisk=sda
part /tmp --fstype ext3 --size=6000 --ondisk=sda
part /storage --fstype ext3 --size=100 --grow --ondisk=sdb
part /home --fstype ext3 --size=100 --grow --ondisk=sda

%packages
@base
@core
@editors
@legacy-software-support
@system-tools
@text-internet
keyutils
dmraid-events-logwatch
trousers
fipscheck
x86info
device-mapper-multipath
cpufreq-utils
fuse-libs
fuse
vim-X11
openssl097a
arpwatch
am-utils
mrtg
net-snmp-utils
mc
sysstat
iptraf
lynx
-nss_db
-nss_ldap
-pam_pkcs11
-krb5-workstation
-ksh
-lftp
-aspell-en
-words
-aspell
-numactl
-fbset
-vconfig
-libaio
-ftp
-finger
-sendmail
-conman
-pcmciautils
-redhat-lsb
-pam_ccreds
-pam_smb
-sos
-pkinit-nss
-specspo
-rsh
-ipsec-tools
-rp-pppoe
-unix2dos
-pam_krb5
-irda-utils
-pam_passwdqc
-amtu
-pax
-oddjob
-setarch
-bluez-utils
-talk
-vnc
-openldap-clients
-samba-client
-bluez-hcidump
-bluez-gnome
-slrn
-fetchmail
-mutt
-elinks
-cadaver

При желании, в ks.cfg можно подправить, например, IP-адреса или сохранить несколько копий kickstart-конфигураций для разных компьютеров.

Подробности про kickstart можно найти на официальном сайте помощи Red Hat.

Теги:

Монтирование виртуальных дисков VMware и Xen в CentOS

Процедура монтирования виртуального жесткого диска Xen приведена ниже. С помощью нее можно монтировать отдельные разделы виртуального диска. Главная фишка состоит в том, что название раздела в fdisk (в данном случае – loop1p1) совпадает с устройством, которое создает kpartx в папке /dev/mapper/.

root@server01 [~]# losetup /dev/loop1 /home/domains/delfit/home.img
root@server01 [~]# fdisk -l /dev/loop1
Disk /dev/loop1: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
      Device Boot      Start         End      Blocks   Id  System
/dev/loop1p1               1        1305    10482412   83  Linux
root@server01 [~]# kpartx -a /dev/loop1
root@server01 [~]# mount /dev/mapper/loop1p1 /mnt/xendisk

Отмонтировать виртуальный диск Xen можно так :

root@server01 [~]# umount /mnt/xendisk
root@server01 [~]# kpartx -d /dev/loop1
root@server01 [~]# losetup -d /dev/loop1

Чтобы смонтировать виртуальный жесткий диск VMware, нужно выполнить следующую команду :

root@server01 [~]# vmware-mount /home/domains/home.vmdk /mnt/vmwaredisk

Однако, приведенный выше пример не поможет смонтировать LVM-раздел на виртуальном жестком диске VMware. Для этого нужно выполнить следующее :

root@server01 [~]# wget http://download3.vmware.com/software/vmserver/VMware-server-1.0.9-156507.tar.gz
root@server01 [~]# tar xvfz VMware-server-1.0.9-156507.tar.gz
root@server01 [~]# cp vmware-server-distrib/bin/vmware-loop /usr/bin/
root@server01 [~]# modprobe nbd
root@server01 [~]# vmware-mount -p /home/domains/vds.vmdk
Nr      Start       Size Type Id Sytem
-- ---------- ---------- ---- -- ------------------------
 1         63     208782 BIOS 83 Linux
 2     208845    8177085 BIOS 8E Unknown
root@server01 [~]# vmware-loop /home/domains/vds.vmdk 2 /dev/nbd0
root@server01 [~]# vgscan
root@server01 [~]# vgchange -ay VolGroup00
root@server01 [~]# mount /dev/VolGroup00/LogVol00 /mnt/vmwaredisk

Основная проблема при монтирования LVM-раздела VMware состоит в том, что для этого необходима утилита vmware-loop, которая доступна только в первой версии VMware Server. Однако, VMware Server 1 можно скачать с сайта разработчика, а вытянуть нужную утилиту из архива не составляет никаких проблем.

Как видно из примера, vmware-mount не видит никакой файловой системы на втором разделе виртуального диска vds.vmdk. Именно он и является LVM-разделом, его номер следует передать утилите vmware-loop. Данная утилита вынуждена работать постоянно, завершить ее можно с помощью Ctrl+C после окончания всех нужных операций с виртуальным диском, поэтому продолжать монтирование придется в новой консоли.

Отмонтировать виртуальный жесткий диск VMware с LVM можно так :

root@server01 [~]# umount /mnt/vmwaredisk
root@server01 [~]# vgchange -an VolGroup00

Источник : blog.delfit.com

Теги: , ,

Windows Live Writer и ошибка с загрузкой WordPress шаблона

Загрузка WordPress-блога в замечательный редактор блогов Windows Live Writer (WLW) не всегда приводит к нужному результату. Блог появляется в редакторе, но WLW может отказаться загрузить шаблон и предложит обойтись без предпросмотра в вашей WordPress-теме. При этом, в логах WLW можно обнаружить следующую ошибку :

Error occurred while downloading weblog style: System.ArgumentException: Title text is not unique enough to use for style detection

Попробуйте настроить WordPress таким образом, чтобы на главной странице блога отображались последние записи. Нужная опция находится в Настройки > Чтение > На главной странице отображать :

Настройки чтения для Windows Live Writer

WordPress должен быть так настроен только во время загрузки темы блога в Windows Live Writer. Потом опцию “На главной странице отображать” можно будет вернуть к прежнему виду.

Теги: , ,