Архив за февраля 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.
Теги: CentOS
Монтирование виртуальных дисков 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
Теги: CentOS, VMware Server, Xen
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 таким образом, чтобы на главной странице блога отображались последние записи. Нужная опция находится в Настройки > Чтение > На главной странице отображать :

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