http://andrey.org/virtual-images-lvm/
Делается через kpartx
# kpartx -l /home/vm/centos.img #смотрим разделы
# kpartx -a /home/vm/centos.img #маппим разделы
Если есть LVM - прибавляется еще серия движений
# lvm pvscan #сканируем на наличие LVM-томов
# lvm vgchange -a y VolGroup
Потом не забываем всё отмонтировать.
И на офсайте
пятница, 30 сентября 2011 г.
воскресенье, 25 сентября 2011 г.
Bitrix: бэкапим проект
Оф описание
http://dev.1c-bitrix.ru/community/blogs/howto/945.php
Как видим, сами разработчики советуют бэкапить базу + файлы штатными средствами.
mysqldump -u user -ppass dbname > dbname.sql
tar -czf proj.tgz /var/www/proj
Но эти бэкапы для разворачивания вручную, на старом месте. Если надо сделать перенос на новое место - надо сделать встроенный бэкап (файлов может быть больше 1, будет aaa.tar.gz, aaa.tar.gz.1 итд), на новом месте залить restore.php и им развернуть. Он запросит новые названия баз, юзеров итд.
"Архивы, созданные системой резервного копирования, предназначены исключительно для распаковки с помощью restore.php "
"Большие архивы автоматически делятся на части. Формат деления - исключительно своя разработка, пожалуйста, не пытайтесь их распаковать как многотомные архивы всякого рода архиваторами. "
http://dev.1c-bitrix.ru/community/forums/forum6/topic14618/
По первой ссылке есть скрипт автобэкапа, который сам парсит dbconn.php.
http://dev.1c-bitrix.ru/community/blogs/howto/945.php
Как видим, сами разработчики советуют бэкапить базу + файлы штатными средствами.
mysqldump -u user -ppass dbname > dbname.sql
tar -czf proj.tgz /var/www/proj
Но эти бэкапы для разворачивания вручную, на старом месте. Если надо сделать перенос на новое место - надо сделать встроенный бэкап (файлов может быть больше 1, будет aaa.tar.gz, aaa.tar.gz.1 итд), на новом месте залить restore.php и им развернуть. Он запросит новые названия баз, юзеров итд.
"Архивы, созданные системой резервного копирования, предназначены исключительно для распаковки с помощью restore.php "
"Большие архивы автоматически делятся на части. Формат деления - исключительно своя разработка, пожалуйста, не пытайтесь их распаковать как многотомные архивы всякого рода архиваторами. "
http://dev.1c-bitrix.ru/community/forums/forum6/topic14618/
По первой ссылке есть скрипт автобэкапа, который сам парсит dbconn.php.
blogger: подсветка синтаксиса
Штатно нет подсветки. Варианты:
1) спец сервисы. Вставляем туда код, потом полученный html код - в наше сообщение. Несколько неудобно.
http://tohtml.com/
2) через подключаемые js. Проще, но надо подключать каждый раз код.
highlight.js
google prettify
3) Через установку виджета.
http://dremlin.blogspot.com/2009/09/syntax-highlighter-widget-blogger.html
4) правка шаблона - добавление класса code
http://votrexflame.blogspot.com/2010/09/html.html
http://ilook12.blogspot.com/2009/10/putting-code-box-on-blogger-posts.html (вариант 2)
1) спец сервисы. Вставляем туда код, потом полученный html код - в наше сообщение. Несколько неудобно.
http://tohtml.com/
2) через подключаемые js. Проще, но надо подключать каждый раз код.
highlight.js
google prettify
3) Через установку виджета.
http://dremlin.blogspot.com/2009/09/syntax-highlighter-widget-blogger.html
4) правка шаблона - добавление класса code
http://votrexflame.blogspot.com/2010/09/html.html
http://ilook12.blogspot.com/2009/10/putting-code-box-on-blogger-posts.html (вариант 2)
суббота, 24 сентября 2011 г.
Сокеты: гонка за копейкой
intel:
775
1155
1156
1365 (?)
1366
2001
AMD:
AM2
AM2+
AM3
AM3+
FM1
И если у АМД оно хоть как-то совместимо, у интеля каждый сокет - свои виды процессоров. Для чего? Разводить юзера на лишние расходы конечно. просто проц не заменить, только проц+плата + зачастую память.. а там и остальное потянется...
775
1155
1156
1365 (?)
1366
2001
AMD:
AM2
AM2+
AM3
AM3+
FM1
И если у АМД оно хоть как-то совместимо, у интеля каждый сокет - свои виды процессоров. Для чего? Разводить юзера на лишние расходы конечно. просто проц не заменить, только проц+плата + зачастую память.. а там и остальное потянется...
четверг, 22 сентября 2011 г.
Cisco на 802.11n
http://www.cisco.com/en/US/netsol/ns767/index.html#~products
Самые дешевые точки от 15к (GPL?)
Более интересное описание (правда, про драфт)
http://old.cio-world.ru/products/infrastructure/431908/
Самые дешевые точки от 15к (GPL?)
Более интересное описание (правда, про драфт)
http://old.cio-world.ru/products/infrastructure/431908/
AbsoluteBSD: convmv или как переименовать имена файлов из одной...
AbsoluteBSD: convmv или как переименовать имена файлов из одной...: Когда нужно поменять кодировку имени файла, да еще и не одного, лучше воспользоваться convmv
среда, 21 сентября 2011 г.
О новых чипсетах intel
ru.wikipedia.org/wiki/Список_чипсетов_Intel
http://www.ixbt.com/mainboard/i67p-67h-chipsets.shtml
http://www.ixbt.com/mainboard/i68z-chipset.shtml
Отдельно стоит Q67, который для корп сегмента..
http://www.ixbt.com/mainboard/i67p-67h-chipsets.shtml
http://www.ixbt.com/mainboard/i68z-chipset.shtml
Отдельно стоит Q67, который для корп сегмента..
Ставим awstats не для ispmanager в centos
Для ISP ставить просто - подключаем репу, где она есть (в epel есть, насколько я помню), при необходимости сносим webalizer, сбрасываем кэш isp, ставим через панель.
/usr/local/ispmgr/sbin/pkgctl cache
killall ispmgr
Другое дело - хост без isp.
Ставим awstats (тоже подключив сначала репы)
Но оно ставится, а что дальше - непонятно.
Основной каталог
/usr/share/awstats/wwwroot/cgi-bin/
Также в /etc/httpd/conf.d появляется awstats.conf
Теперь если в этом конфиге заменить allow from 127.0.0.1 на allow from all и обратиться на 1.2.3.4/awstats/awstats.pl, получим:
Error: Couldn't open config file "awstats.1.2.3.4.conf" nor "awstats.conf" after searching in path "/usr/share/awstats/wwwroot/cgi-bin,/etc/awstats,/usr/local/etc/awstats,/etc,/etc/opt/awstats": No such file or directory
Из этой ошибки понятно, где оно ищет конфиги.
И предлагает методы запуска:
Example: http://localhost/awstats/awstats.pl?config=mysite
Example: http://127.0.0.1/cgi-bin/awstats.pl?config=mysite
- Did you create your config file 'awstats.12.3.4.conf' ?
If not, you can run "awstats_configure.pl" from command line, or create it manually.
Теперь надо найти этот файл. А лежит он тут:
/usr/share/awstats/tools/awstats_configure.pl
Но запустить откуда угодно нельзя - ругнётся
Warning: AWStats standard directory on Linux OS is '/usr/share/awstats'.
If you want to use standard directory, you should first move all content
of AWStats distribution from current directory:
/root
to standard directory:
/usr/share/awstats
And then, run configure.pl from this location.
Do you want to continue setup from this NON standard directory [yN] ?
Надо перейти в /usr/share/awstats и уже оттуда запускать.
После настройки конфиги в /etc/awstats
Я под свои хосты правлю пути, у меня не единый access_log, а на каждый проект свой.
-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config=aaa.ru
Or if you have several config files and prefer having only one command:
/usr/share/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...
A SIMPLE config file has been created: /etc/awstats/awstats.aaa.ru.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'aaa.ru' with command:
> perl awstats.pl -update -config=aaa.ru
You can also build static report pages for 'aaa.ru' with command:
> perl awstats.pl -output=pagetype -config=aaa.ru
По умолчанию парсинг не запустится - не тот формат лога, он настроен на conbined, а надо common. Вообще, правильнее отпарсить режим common, поставив LogFormat=4, а потом переключить апач в режим combined и вернуть 1
Снова запускаем и когда всё верно - увидим
From data in log file "/var/www/aaa/logs/aaa.ru-access_log-"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
/usr/local/ispmgr/sbin/pkgctl cache
killall ispmgr
Другое дело - хост без isp.
Ставим awstats (тоже подключив сначала репы)
Но оно ставится, а что дальше - непонятно.
Основной каталог
/usr/share/awstats/wwwroot/cgi-bin/
Также в /etc/httpd/conf.d появляется awstats.conf
Теперь если в этом конфиге заменить allow from 127.0.0.1 на allow from all и обратиться на 1.2.3.4/awstats/awstats.pl, получим:
Error: Couldn't open config file "awstats.1.2.3.4.conf" nor "awstats.conf" after searching in path "/usr/share/awstats/wwwroot/cgi-bin,/etc/awstats,/usr/local/etc/awstats,/etc,/etc/opt/awstats": No such file or directory
Из этой ошибки понятно, где оно ищет конфиги.
И предлагает методы запуска:
Example: http://localhost/awstats/awstats.pl?config=mysite
Example: http://127.0.0.1/cgi-bin/awstats.pl?config=mysite
- Did you create your config file 'awstats.12.3.4.conf' ?
If not, you can run "awstats_configure.pl" from command line, or create it manually.
Теперь надо найти этот файл. А лежит он тут:
/usr/share/awstats/tools/awstats_configure.pl
Но запустить откуда угодно нельзя - ругнётся
Warning: AWStats standard directory on Linux OS is '/usr/share/awstats'.
If you want to use standard directory, you should first move all content
of AWStats distribution from current directory:
/root
to standard directory:
/usr/share/awstats
And then, run configure.pl from this location.
Do you want to continue setup from this NON standard directory [yN] ?
Надо перейти в /usr/share/awstats и уже оттуда запускать.
После настройки конфиги в /etc/awstats
Я под свои хосты правлю пути, у меня не единый access_log, а на каждый проект свой.
-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config=aaa.ru
Or if you have several config files and prefer having only one command:
/usr/share/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...
A SIMPLE config file has been created: /etc/awstats/awstats.aaa.ru.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'aaa.ru' with command:
> perl awstats.pl -update -config=aaa.ru
You can also build static report pages for 'aaa.ru' with command:
> perl awstats.pl -output=pagetype -config=aaa.ru
По умолчанию парсинг не запустится - не тот формат лога, он настроен на conbined, а надо common. Вообще, правильнее отпарсить режим common, поставив LogFormat=4, а потом переключить апач в режим combined и вернуть 1
Снова запускаем и когда всё верно - увидим
From data in log file "/var/www/aaa/logs/aaa.ru-access_log-"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
вторник, 20 сентября 2011 г.
ставим encfs
ставим encfs
Для начала, ищем
yum search encfs
Информация
yum info fuse-encfs
Available Packages
Name : fuse-encfs
Arch : i386
Version : 1.4.2
Release : 1.el5
Size : 381 k
Repo : epel
Summary : Encrypted pass-thru filesystem in userspace
URL : http://www.arg0.net/encfs
License : GPLv3+
Description: EncFS implements an encrypted filesystem in userspace using FUSE. FUSE
: provides a Linux kernel module which allows virtual filesystems to be written
: in userspace. EncFS encrypts all data and filenames in the filesystem and
: passes access through to the underlying filesystem. Similar to CFS except that
: it does not use NFS.
Да, штатно её нет - надо подключить epel
Ставим
yum install -y fuse-encfs.`uname -i`
Для начала, ищем
yum search encfs
Информация
yum info fuse-encfs
Available Packages
Name : fuse-encfs
Arch : i386
Version : 1.4.2
Release : 1.el5
Size : 381 k
Repo : epel
Summary : Encrypted pass-thru filesystem in userspace
URL : http://www.arg0.net/encfs
License : GPLv3+
Description: EncFS implements an encrypted filesystem in userspace using FUSE. FUSE
: provides a Linux kernel module which allows virtual filesystems to be written
: in userspace. EncFS encrypts all data and filenames in the filesystem and
: passes access through to the underlying filesystem. Similar to CFS except that
: it does not use NFS.
Да, штатно её нет - надо подключить epel
Ставим
yum install -y fuse-encfs.`uname -i`
воскресенье, 18 сентября 2011 г.
Zalman VE-200
Внешний бокс для дисков 2.5". Чем же он так интересен? Тем, что при подключении появляется как переносной диск, так и виртуальный сд-ром, с которого можно грузиться. Незаменимая вещь для любого админа, особенно с тенденциями отказа от двд приводов (я сам давно отказался, сервера если что грузятся по PXE, рабочие машины в офисе тоже.. Всякие ноуты друзей итд - с флэшки)
Обзор
Прошивка там от iodd, так что прошивки можно брать у них или у самого залмана
Для работы двд - создаём в корне папку _ISO (регистр не важен).
Поддерживаются ФС: FAT32, NTFS, exFAT. Возможно, exFAT поддерживается только в iodd-прошивке. Но обновиться не так сложно.
Для поддержки русского надо подключить шрифт "Global 'E' Font file"
Интересный момент: Если при включенной железяке джойстик удерживать в нижнем положении более 3 сек, то винчестер паркуется и Zalman можно смело отключать не боясь повредить HDD или информацию на нем… Так сказать аппаратное безопасное извлечение…Хотя в lite_мануале к нему нет даже намека на подобную «фичу».
Сложности с Zalman VE-200
И ещё
Если пишет 1st partition :0 – Система шита NTFS, жесткий диск FAT32
Если пишет 1st partition :7 – Система шита FAT32, жесткий диск NTFS.
Оттуда же.
Бывает, не ест исо-образы и хочет дефрагментацию файла. Под виндой - есть contig от Русиновича и WinContig
Обзор
Прошивка там от iodd, так что прошивки можно брать у них или у самого залмана
Для работы двд - создаём в корне папку _ISO (регистр не важен).
Поддерживаются ФС: FAT32, NTFS, exFAT. Возможно, exFAT поддерживается только в iodd-прошивке. Но обновиться не так сложно.
Для поддержки русского надо подключить шрифт "Global 'E' Font file"
Интересный момент: Если при включенной железяке джойстик удерживать в нижнем положении более 3 сек, то винчестер паркуется и Zalman можно смело отключать не боясь повредить HDD или информацию на нем… Так сказать аппаратное безопасное извлечение…Хотя в lite_мануале к нему нет даже намека на подобную «фичу».
Сложности с Zalman VE-200
И ещё
Если пишет 1st partition :0 – Система шита NTFS, жесткий диск FAT32
Если пишет 1st partition :7 – Система шита FAT32, жесткий диск NTFS.
Оттуда же.
Бывает, не ест исо-образы и хочет дефрагментацию файла. Под виндой - есть contig от Русиновича и WinContig
четверг, 15 сентября 2011 г.
Боремся со спамом логов postgresql в syslog
FreeBSD 8.2, postgres 8.3
Иначально он спаммит в syslog, что порой мешает.
Открываем конфиг, ищем log_destination
vi /usr/local/pgsql/data/postgresql.conf
Видим
log_destination = 'syslog'
У нас 2 варианта - использовать перенаправление вывода через сам syslog или сказать постгресу использовать отдельный файл. Сделаем второе.
Комментируем строку про syslog.
Но указать просто файл не получится - ругнётся
LOG: unrecognized "log_destination" key word: "/var/log/pgsql_log"
FATAL: invalid value for parameter "log_destination": "/var/log/pgsql_log"
Потому что это задаётся чуть другими опциями.
log_directory = '/var/log/pgsql'
log_filename = 'pgsql_log'
В версии 8.1 также надо было выставить redirect_stderr, но в 8.3 такой опции уже нет - теперь это logging_collector (см), выставляем = on
Обращаем внимание на одинарные кавычки - с двойными работать не будет.
Не надо пытаться указать /var/log/messages - ничего хорошего не выйдет.
Также не получится просто указать на файл в /var/log - для создания не хватит прав. Надо создать каталог и дать ему 777 или владельцем пользователя, от которого работает постгрес.
При работе в кластере - у каждого процесса должен быть свой лог-файл, использовать 1 на всех недопустимо.
Также я добавляю
log_rotation_size = 10MB
log_rotation_age = 1d
Это позволит не разрастись логам до огромных величин. (Если делать через syslog, не забыть настроить что-то подобное для rotatelogs)
> ls -la /var/log/pgsql/
total 13
drwxrwxrwx 2 root wheel 3 Sep 15 15:00 .
drwxr-xr-x 6 root wheel 277 Sep 15 15:00 ..
-rw------- 1 pgsql wheel 822 Sep 15 15:07 pgsql_log.1316084441
Работает исправно.
Основные грабли описаны тут:
http://archives.postgresql.org/pgsql-admin/2007-02/msg00342.php
Дока на 8.3
http://www.postgresql.org/docs/8.3/static/logfile-maintenance.html
Описание всех ключей про логгинг
http://www.postgresql.org/docs/8.3/static/runtime-config-logging.html
(при необходимости вместо 8.3 подставить нужную версию, в том числе на 9.0)
Иначально он спаммит в syslog, что порой мешает.
Открываем конфиг, ищем log_destination
vi /usr/local/pgsql/data/postgresql.conf
Видим
log_destination = 'syslog'
У нас 2 варианта - использовать перенаправление вывода через сам syslog или сказать постгресу использовать отдельный файл. Сделаем второе.
Комментируем строку про syslog.
Но указать просто файл не получится - ругнётся
LOG: unrecognized "log_destination" key word: "/var/log/pgsql_log"
FATAL: invalid value for parameter "log_destination": "/var/log/pgsql_log"
Потому что это задаётся чуть другими опциями.
log_directory = '/var/log/pgsql'
log_filename = 'pgsql_log'
В версии 8.1 также надо было выставить redirect_stderr, но в 8.3 такой опции уже нет - теперь это logging_collector (см), выставляем = on
Обращаем внимание на одинарные кавычки - с двойными работать не будет.
Не надо пытаться указать /var/log/messages - ничего хорошего не выйдет.
Также не получится просто указать на файл в /var/log - для создания не хватит прав. Надо создать каталог и дать ему 777 или владельцем пользователя, от которого работает постгрес.
При работе в кластере - у каждого процесса должен быть свой лог-файл, использовать 1 на всех недопустимо.
Также я добавляю
log_rotation_size = 10MB
log_rotation_age = 1d
Это позволит не разрастись логам до огромных величин. (Если делать через syslog, не забыть настроить что-то подобное для rotatelogs)
> ls -la /var/log/pgsql/
total 13
drwxrwxrwx 2 root wheel 3 Sep 15 15:00 .
drwxr-xr-x 6 root wheel 277 Sep 15 15:00 ..
-rw------- 1 pgsql wheel 822 Sep 15 15:07 pgsql_log.1316084441
Работает исправно.
Основные грабли описаны тут:
http://archives.postgresql.org/pgsql-admin/2007-02/msg00342.php
Дока на 8.3
http://www.postgresql.org/docs/8.3/static/logfile-maintenance.html
Описание всех ключей про логгинг
http://www.postgresql.org/docs/8.3/static/runtime-config-logging.html
(при необходимости вместо 8.3 подставить нужную версию, в том числе на 9.0)
Где купить ISPManager
Конечно, лучше всего брать бесплатные версии с хостингом :) Но если по каким-то причинам такого нет - нашёл неплохой вариант
http://www.isplicense.ru/services/ispsystem/ispmanager/
Проблема в том, что на офсайте цены несколько негуманные, можно найти в разы дешевле.
Если кто знает дешевле этого - оставляйте в комментах, добавлю.
http://www.isplicense.ru/services/ispsystem/ispmanager/
Проблема в том, что на офсайте цены несколько негуманные, можно найти в разы дешевле.
Если кто знает дешевле этого - оставляйте в комментах, добавлю.
среда, 14 сентября 2011 г.
perl-mysql, centos и юникод
Дело в том, что в CentOS 5.6 штатно идёт perl-DBD-MySQL 3.0007, который некорректно работает с юникодом - страницы показывает, будто то ли указана cp1251, то ли получили двойное преобразование. Это проблема старой версии. Лечится установкой 4 версии. Для этого подключаем rpmforge-extras (ставится с rpmforge), там версия 4.014, с ней отображается нормально.
ЗЫ Некоторые говорят, что типа фря отстой, линукс форева.. Но при этом в центоси много софта многолетней давности, во фре в разы такого меньше. Тот же перл -- штатно тут 5.8, во фре штатно 5.8, 5.10, 5.12.
Более того, просмотрел все основные репы - там _только_ 5.8.8
ЗЫ Некоторые говорят, что типа фря отстой, линукс форева.. Но при этом в центоси много софта многолетней давности, во фре в разы такого меньше. Тот же перл -- штатно тут 5.8, во фре штатно 5.8, 5.10, 5.12.
Более того, просмотрел все основные репы - там _только_ 5.8.8
понедельник, 12 сентября 2011 г.
LSi 2008 - замена прошивки
ftp://ftp.supermicro.com/driver/SAS/LSI/2008/
Выбираем нужную версию
iMR - Поддержка raid5, но поскольку чип слабый, можно подключить мало дисков.
IR - raid
IT - HBA
Часть плат поставляются с iR стеком, можно прошить в iMR при наличии аппаратного ключа iButton или в IT стек
Есть пример с картинками
http://www.servethehome.com/howto-flash-supermicro-x8si6f-lsi-sas-2008-controller-lsi-firmware/
Вообще интересный сайт.
Ещё
http://true-system.blogspot.com/2011/07/lsi-9211-48i-it.html
Выбираем нужную версию
iMR - Поддержка raid5, но поскольку чип слабый, можно подключить мало дисков.
IR - raid
IT - HBA
Часть плат поставляются с iR стеком, можно прошить в iMR при наличии аппаратного ключа iButton или в IT стек
Есть пример с картинками
http://www.servethehome.com/howto-flash-supermicro-x8si6f-lsi-sas-2008-controller-lsi-firmware/
Вообще интересный сайт.
Ещё
http://true-system.blogspot.com/2011/07/lsi-9211-48i-it.html
Настраиваем фаервол: ipfw
Для начала, Ipfw должен быть в ядре или в виде модуля. Если ядро самосборное - крайне желательно собирать с IPFIREWALL_DEFAULT_TO_ACCEPT
Это связано с тем, что при ошибке в конфиге фаера или просто перезапуск без перевода процесса в фон чревато полной недоступностью сервера из сети. А так - прошёл ipfw -f -q flush (сброс правил), состояние стало "разрешить всё", и пока не дойдём до правила в конце "запрет всего лишнего", мы сможем как минимум переподключиться и поправить правила. Хотя это и не спасёт от ошибки вида "забыли проковырять дырку для ssh".
Минимальный набор служб, который обычно надо выпустить: 22 (ssh - tcp), 25 (smtp, отправка уведомлений с сервера, tcp), 53 (dns - как минимум мы сами должны уметь делать резолв, может быть как tcp так и udp)
Также надо сразу разрешить трафик на служебном интерфейсе lo0
Проверим, что ipfw включен:
ipfw -a list
Должно быть что-то вроде
65535 583535090 359726489527 allow ip from any to any
Правило номер 65535, следующие 2 числа это сколько трафика вошло и вышло (in и out), потом само правило - разрешить всё ото всех.
Простейшее правило:
ipfw add allow all from any to any via lo0
Разрешаем весь трафик на интерфейсе lo0
Разрешим для примера ssh
ipfw add allow tcp from any to me 22
ipfw add allow tcp from me 22 to any
Это правила без контроля соединения, поэтому надо 2 правила: первым мы разрешили коннекты к нам на 22 порт (ssh), но ответы от нас будут резаться. Вторым правилом мы разрешили отправлять с нашей стороны с 22 порта.
Есть динамические правила. Пишутся так:
ipfw add allow all from any to me 25 setup keep-state
Внимание! На нагруженном сервере спокойно можем схватить "Too many dynamic rules". Немного рассматривал у себя на примере limit, но вызывается это именно на keep-state, поэтому не рекомендую для web-сервера вешать на 80 порт, не понимая принципов работы IPFW. Также не рекомендую для ssh - если на сервере кончились динамические правила, фаервол не сможет нам разрешить ssh-подключение.
Пытался разобраться в смысле setup+keep-state, не разобрался. Кто-то пишет только setup, кто-то только keep-state...
- дальше по аналогии нужные правила -
Нюансы: например, чтобы почта ходила нормально, нужно 2 набора:
1) почта к нам
allow all from any to me 25 setup keep-state
2) почта от нас
allow all from me 25 to any setup keep-state
То же для днс, веба (если у нас там веб-сервер) - обновления тянутся по 80 порту...
Также не забываем про пинги
allow icmp from any to any
Теперь запретим всё лишнее, но будем писать лог, что запретили
ipfw add 65000 deny log all from any to any
логи идут в /var/log/security, но надо включить вывод
в ядре
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100 # или сколько надо по умолчанию
либо в /etc/rc.conf
firewall_logging="YES"
либо
sysctl -w net.inet.ip.fw.verbose=1
Не забываем первое время проверять этот файл - там может оказаться забытая служба или разные аномалии.
Можно запретить выборочные порты, например 3306 (mysql), чтобы в лог не попадало об этом записей.
Вообще, возможностей значительно больше, включая нат, копирование всех пакетов куда-либо (tee), ограничение скорости (queue) итд. На хорошую книгу можно набрать.
Линки
Как вести лог блокировок в iptables и ipfw
http://dragonflybsd.blogspot.com/2011/03/ipfw.html
Это связано с тем, что при ошибке в конфиге фаера или просто перезапуск без перевода процесса в фон чревато полной недоступностью сервера из сети. А так - прошёл ipfw -f -q flush (сброс правил), состояние стало "разрешить всё", и пока не дойдём до правила в конце "запрет всего лишнего", мы сможем как минимум переподключиться и поправить правила. Хотя это и не спасёт от ошибки вида "забыли проковырять дырку для ssh".
Минимальный набор служб, который обычно надо выпустить: 22 (ssh - tcp), 25 (smtp, отправка уведомлений с сервера, tcp), 53 (dns - как минимум мы сами должны уметь делать резолв, может быть как tcp так и udp)
Также надо сразу разрешить трафик на служебном интерфейсе lo0
Проверим, что ipfw включен:
ipfw -a list
Должно быть что-то вроде
65535 583535090 359726489527 allow ip from any to any
Правило номер 65535, следующие 2 числа это сколько трафика вошло и вышло (in и out), потом само правило - разрешить всё ото всех.
Простейшее правило:
ipfw add allow all from any to any via lo0
Разрешаем весь трафик на интерфейсе lo0
Разрешим для примера ssh
ipfw add allow tcp from any to me 22
ipfw add allow tcp from me 22 to any
Это правила без контроля соединения, поэтому надо 2 правила: первым мы разрешили коннекты к нам на 22 порт (ssh), но ответы от нас будут резаться. Вторым правилом мы разрешили отправлять с нашей стороны с 22 порта.
Есть динамические правила. Пишутся так:
ipfw add allow all from any to me 25 setup keep-state
Внимание! На нагруженном сервере спокойно можем схватить "Too many dynamic rules". Немного рассматривал у себя на примере limit, но вызывается это именно на keep-state, поэтому не рекомендую для web-сервера вешать на 80 порт, не понимая принципов работы IPFW. Также не рекомендую для ssh - если на сервере кончились динамические правила, фаервол не сможет нам разрешить ssh-подключение.
Пытался разобраться в смысле setup+keep-state, не разобрался. Кто-то пишет только setup, кто-то только keep-state...
- дальше по аналогии нужные правила -
Нюансы: например, чтобы почта ходила нормально, нужно 2 набора:
1) почта к нам
allow all from any to me 25 setup keep-state
2) почта от нас
allow all from me 25 to any setup keep-state
То же для днс, веба (если у нас там веб-сервер) - обновления тянутся по 80 порту...
Также не забываем про пинги
allow icmp from any to any
Теперь запретим всё лишнее, но будем писать лог, что запретили
ipfw add 65000 deny log all from any to any
логи идут в /var/log/security, но надо включить вывод
в ядре
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100 # или сколько надо по умолчанию
либо в /etc/rc.conf
firewall_logging="YES"
либо
sysctl -w net.inet.ip.fw.verbose=1
Не забываем первое время проверять этот файл - там может оказаться забытая служба или разные аномалии.
Можно запретить выборочные порты, например 3306 (mysql), чтобы в лог не попадало об этом записей.
Вообще, возможностей значительно больше, включая нат, копирование всех пакетов куда-либо (tee), ограничение скорости (queue) итд. На хорошую книгу можно набрать.
Линки
Как вести лог блокировок в iptables и ipfw
http://dragonflybsd.blogspot.com/2011/03/ipfw.html
воскресенье, 11 сентября 2011 г.
LSi контроллеры
http://www.lsi.com/products/storagecomponents/Pages/LSISAS2008.aspx
http://www.lsi.com/products/storagecomponents/Pages/LSISAS2108.aspx
http://www.ixbt.com/storage/lsi-sas9211-8i.shtml
http://true-system.blogspot.com/2011/04/oem-sas-supermicro.html
http://true-system.blogspot.com/2011/06/sas-lsi-6160-1.html
Опознать платы с SAS2 контроллером на борту можно по наличию цифры 6 в наименовании (например, X8DTU-6TF+).
http://www.lsi.com/products/storagecomponents/Pages/LSISAS2108.aspx
http://www.ixbt.com/storage/lsi-sas9211-8i.shtml
http://true-system.blogspot.com/2011/04/oem-sas-supermicro.html
http://true-system.blogspot.com/2011/06/sas-lsi-6160-1.html
Опознать платы с SAS2 контроллером на борту можно по наличию цифры 6 в наименовании (например, X8DTU-6TF+).
суббота, 10 сентября 2011 г.
Системы мониторинга
Вроде, все так нахваливают host-tracker.com, но он мало того, что непойми как снимает смс (сразу по 2-3).. но и сам сервис похоже сегодня лёг )
Ошибка 102 (net::ERR_CONNECTION_REFUSED): Сервер отказал в подключении.
(хром)
А этот сервис многие нахваливают, в том числе фаствпс )
Ошибка 102 (net::ERR_CONNECTION_REFUSED): Сервер отказал в подключении.
(хром)
А этот сервис многие нахваливают, в том числе фаствпс )
четверг, 8 сентября 2011 г.
изменение времени
Понадобилось сменить время в domU (при запуске сервера неверно было выставлено время)
В основной системе сменилось нормально, но в госте получали
# ntpdate ntp.psn.ru
date
8 Sep 23:06:29 ntpdate[7731]: poll(): nfound = 0, error: No such file or directory
8 Sep 23:06:29 ntpdate[7731]: poll(): nfound = 0, error: No such file or directory
Часы просто остановились на этом времени - я оставил синхронизацию минут на 15, но он так и выводил это время. Это особенность синхронизации - чтобы не оказалось записей "в прошлом" например, часы ждут, пока время сравняется с выставленным.
При этом получали "забавный" эффект вроде крайне длинного времени пинга (первый пакет уходил сразу, второй ждал пару минут - не дождался, но потери 0%)
Надо сначала привести часы к подобию правды
(на часах машины 23:06)
# date +%H%M
2306
# date +%H%M -s 1657
1657
# date +%H%M
1657
Всё, время 16:57, теперь можно выставить точное время
# ntpdate ntp.psn.ru
8 Sep 16:58:16 ntpdate[7831]: adjust time server 194.149.67.129 offset -0.289437 sec
Можно ускорить и через опцию -b, но при этом желательно остановить бд и подобные сервисы.
-b Force the time to be stepped using the settimeofday() system call, rather than
slewed (default) using the adjtime() system call. This option should be used
when called from a startup file at boot time.
В основной системе сменилось нормально, но в госте получали
# ntpdate ntp.psn.ru
date
8 Sep 23:06:29 ntpdate[7731]: poll(): nfound = 0, error: No such file or directory
8 Sep 23:06:29 ntpdate[7731]: poll(): nfound = 0, error: No such file or directory
Часы просто остановились на этом времени - я оставил синхронизацию минут на 15, но он так и выводил это время. Это особенность синхронизации - чтобы не оказалось записей "в прошлом" например, часы ждут, пока время сравняется с выставленным.
При этом получали "забавный" эффект вроде крайне длинного времени пинга (первый пакет уходил сразу, второй ждал пару минут - не дождался, но потери 0%)
Надо сначала привести часы к подобию правды
(на часах машины 23:06)
# date +%H%M
2306
# date +%H%M -s 1657
1657
# date +%H%M
1657
Всё, время 16:57, теперь можно выставить точное время
# ntpdate ntp.psn.ru
8 Sep 16:58:16 ntpdate[7831]: adjust time server 194.149.67.129 offset -0.289437 sec
Можно ускорить и через опцию -b, но при этом желательно остановить бд и подобные сервисы.
-b Force the time to be stepped using the settimeofday() system call, rather than
slewed (default) using the adjtime() system call. This option should be used
when called from a startup file at boot time.
bitrix+svn
http://dev.1c-bitrix.ru/community/webdev/user/27606/blog/978/
При разработке сколь-либо серьёзных проектов зачастую просто необходимо использовать систему контроля версий, например SVN. К сожалению, Битрикс не позволяет вести командную разработку на нескольких локальных машинах, ввиду особенностей его лицензий. Тем не менее, система контроля версий может быть использована в паре с Битрикс в качестве хранилища бэкапов.
Однако, внесение проекта на Битрикс под контроль SVN, не совсем тривиальная задача. Как минимум излишнем будет хранить файлы ядра Битрикса, так как:
1. Они не имеют никакого отношения к проекту
2. Их слишком много
3. Они постоянно обновляются
Казалось бы ничего страшного - ставим svn:ignore на папку bitrix и радуемся жизни. Но в таком случае мы не внесём под контроль SVN свои компоненты, шаблоны, настройки. Для решения этой проблемы я предлагаю воспользоваться механизмом символьных ссылок.
И так, суть решения состоит в следующем. Допустим Ваш проект располагается в каталоге /var/www/project и имеет следующую структуру папок:
* etc - каталог настроек
* bin - каталог вспомогательных скриптов
* lib - библиотеки
* www - document root сайта
Теперь действуем по пунктам:
1. Добавляем пустое дерево каталогов /var/www/project под контроль SVN
2. Разворачиваем Битрикс в /var/www/project/www
3. Проставляем свойство ignore для каталога www (svn propedit:ignore www), указывая в нём каталоги bitrix и upload
4. Коммитим (svn commit), обновляем (svn update) SVN - теперь она не обращает внимание на файлы в папках www/bitrix и www/upload
5. Переносим содержимое каталога www/bitrix/php_interface в каталог etc
6. Удаляем каталог www/bitrix/php_interface
7. Создаём символическую ссылку (находясь в каталоге www/bitrix выполняем ln -s ../../etc php_interface)
8. Пункты 5-7 повторяем для своего пространства имён компонентов, шаблонов и модулей (их можно положить в lib/componets, lib/templates и lib/modules соответственно).
После этого добавляем под контроль SVN все, видимые ей файлы в текущем репозитории и радуемся жизни.
P.S. Структуру tag/branch/trunk не стал организовывать для упрощения примера.
Чего делать категорически нельзя:
- загонять ВСЮ папку bitrix в svn
-- невменяемое количество файлов
-- папка .svn трактуется как модуль и система site update впадает в кому (в саппорт отписывался уже пару раз, обещали поправить)
-- папки .svn в сниппетах тоже трактуются как снипеты со всеми вытекающими (тоже писал в саппорт).
Если разработка под виндой, а сервер на никсах - может быть проблема с правами, владельцами.
В общем, это возможно.
При разработке сколь-либо серьёзных проектов зачастую просто необходимо использовать систему контроля версий, например SVN. К сожалению, Битрикс не позволяет вести командную разработку на нескольких локальных машинах, ввиду особенностей его лицензий. Тем не менее, система контроля версий может быть использована в паре с Битрикс в качестве хранилища бэкапов.
Однако, внесение проекта на Битрикс под контроль SVN, не совсем тривиальная задача. Как минимум излишнем будет хранить файлы ядра Битрикса, так как:
1. Они не имеют никакого отношения к проекту
2. Их слишком много
3. Они постоянно обновляются
Казалось бы ничего страшного - ставим svn:ignore на папку bitrix и радуемся жизни. Но в таком случае мы не внесём под контроль SVN свои компоненты, шаблоны, настройки. Для решения этой проблемы я предлагаю воспользоваться механизмом символьных ссылок.
И так, суть решения состоит в следующем. Допустим Ваш проект располагается в каталоге /var/www/project и имеет следующую структуру папок:
* etc - каталог настроек
* bin - каталог вспомогательных скриптов
* lib - библиотеки
* www - document root сайта
Теперь действуем по пунктам:
1. Добавляем пустое дерево каталогов /var/www/project под контроль SVN
2. Разворачиваем Битрикс в /var/www/project/www
3. Проставляем свойство ignore для каталога www (svn propedit:ignore www), указывая в нём каталоги bitrix и upload
4. Коммитим (svn commit), обновляем (svn update) SVN - теперь она не обращает внимание на файлы в папках www/bitrix и www/upload
5. Переносим содержимое каталога www/bitrix/php_interface в каталог etc
6. Удаляем каталог www/bitrix/php_interface
7. Создаём символическую ссылку (находясь в каталоге www/bitrix выполняем ln -s ../../etc php_interface)
8. Пункты 5-7 повторяем для своего пространства имён компонентов, шаблонов и модулей (их можно положить в lib/componets, lib/templates и lib/modules соответственно).
После этого добавляем под контроль SVN все, видимые ей файлы в текущем репозитории и радуемся жизни.
P.S. Структуру tag/branch/trunk не стал организовывать для упрощения примера.
Чего делать категорически нельзя:
- загонять ВСЮ папку bitrix в svn
-- невменяемое количество файлов
-- папка .svn трактуется как модуль и система site update впадает в кому (в саппорт отписывался уже пару раз, обещали поправить)
-- папки .svn в сниппетах тоже трактуются как снипеты со всеми вытекающими (тоже писал в саппорт).
Если разработка под виндой, а сервер на никсах - может быть проблема с правами, владельцами.
В общем, это возможно.
Особенности работы с ipmi на supermicro
http://www.supermicro.com/manuals/other/Embedded_BMC_IPMI.pdf
http://www.supermicro.com/manuals/other/Onboard_BMC_IPMI.pdf
LAN Interface
This feature allows the user to select which port to use for IPMI out-of-band communication.
• The default setting is Failover, which will allow IPMI to be connected from either
the shared LAN port (LAN1/eth0) or the dedicated IPMI LAN port. Precedence
is given to dedicated LAN port over the shared LAN port.
• Select "Dedicated LAN" for IPMI to connect through the IPMI Dedicated LAN
port at all time.
• Select "Shared LAN" for IPMI to connect through the LAN1 port on the board
Переключение:
web-интерфейс: Configuration->Lan Select->Dedicated LAN
В IPMIView: на вкладке BMC Setting.
Проверил работу на подручной микре: режим failover, запустил пинг и вынул патчкорд из ipmi-интерфейса. Потерялся 1 пакет, но дальше пинги снова пошли. Поставил патчкорд назад, немного подождал, вынул кабель из lan1 - ни одного пакета не потерялось, значит переключило назад.
НО! говорят, есть особенность: если подать напряжение на сервер, в который сетевые кабели пока не воткнуты (или перезагрузили стойку и свич пока грузится, погасив все порты) -- независимо от выставленного режима ipmi будет работать только на lan1. ipmitool bmc reset cold не поможет. Решение - полностью выключить сервер, обесточить, проверить, что в ipmi есть кабель на работающий свич, подать питание.
Столкнулся с этой проблемой, весьма неприятно получилось.
UPD Возможно, это был баг, который уже поправили в свежих прошивках. Нет лишней железки для проверки.
UPD2: переключение режимов
Посмотреть какой режим сейчас установлен можно так ipmitool -l -lanplus raw 0x30 0x70 0xc 0 0 0
Default (failover): you will see 00 00
Dedicated LAN: you will see 01 00
Onboard LAN: you will see 01 01
Изменить можно так:
Set Dedicated LAN:
Ipmitool -l -lanplus raw 0x30 0x70 0xc 1 1 0
Set Onboard LAN1
Ipmitool -l -lanplus raw 0x30 0x70 0xc 1 1 1
Set Failover(default setting)
Ipmitool -l -lanplus raw 0x30 0x70 0xc 1 0 0
И рестартануть БМЦ
http://www.supermicro.com/support/faqs/faq.cfm?faq=9848
отсюда
http://www.supermicro.com/manuals/other/Onboard_BMC_IPMI.pdf
LAN Interface
This feature allows the user to select which port to use for IPMI out-of-band communication.
• The default setting is Failover, which will allow IPMI to be connected from either
the shared LAN port (LAN1/eth0) or the dedicated IPMI LAN port. Precedence
is given to dedicated LAN port over the shared LAN port.
• Select "Dedicated LAN" for IPMI to connect through the IPMI Dedicated LAN
port at all time.
• Select "Shared LAN" for IPMI to connect through the LAN1 port on the board
Переключение:
web-интерфейс: Configuration->Lan Select->Dedicated LAN
В IPMIView: на вкладке BMC Setting.
Проверил работу на подручной микре: режим failover, запустил пинг и вынул патчкорд из ipmi-интерфейса. Потерялся 1 пакет, но дальше пинги снова пошли. Поставил патчкорд назад, немного подождал, вынул кабель из lan1 - ни одного пакета не потерялось, значит переключило назад.
НО! говорят, есть особенность: если подать напряжение на сервер, в который сетевые кабели пока не воткнуты (или перезагрузили стойку и свич пока грузится, погасив все порты) -- независимо от выставленного режима ipmi будет работать только на lan1. ipmitool bmc reset cold не поможет. Решение - полностью выключить сервер, обесточить, проверить, что в ipmi есть кабель на работающий свич, подать питание.
Столкнулся с этой проблемой, весьма неприятно получилось.
UPD Возможно, это был баг, который уже поправили в свежих прошивках. Нет лишней железки для проверки.
UPD2: переключение режимов
Посмотреть какой режим сейчас установлен можно так ipmitool -l -lanplus raw 0x30 0x70 0xc 0 0 0
Default (failover): you will see 00 00
Dedicated LAN: you will see 01 00
Onboard LAN: you will see 01 01
Изменить можно так:
Set Dedicated LAN:
Ipmitool -l -lanplus raw 0x30 0x70 0xc 1 1 0
Set Onboard LAN1
Ipmitool -l -lanplus raw 0x30 0x70 0xc 1 1 1
Set Failover(default setting)
Ipmitool -l -lanplus raw 0x30 0x70 0xc 1 0 0
И рестартануть БМЦ
http://www.supermicro.com/support/faqs/faq.cfm?faq=9848
отсюда
среда, 7 сентября 2011 г.
Подключаем новый сервер c ipmi
Настраивал новую плату с ipmi (X8SI6-F), там есть ipmi
Подключил к сети. Штатно оно получит адрес по dhcp, но можно задать адрес в биосе. Изменять настройки можно или с диска (не проверял, возможно надо в /makedisk/makedisk.exe сделать загрузочный диск), или поставить OpenIPMI (в биосе нашёл только изменение айпи, но не пользователей), через ipmicfg, или через IPMI View. Если это делать удалённо - логин-пароль:
ADMIN:ADMIN
Через OpenIPMI - после установки появится ipmitool, про настройку сети через него есть у меня в заметках. С добавлением пользователя - копать в сторону
# ipmitool user list
ID Name Enabled Callin Link Auth IPMI Msg Channel Priv Limit
2 ADMIN false true false false Unknown (0x00)
# ipmitool user
User Commands: summary [<channel number>]
list [<channel number>]
set name <user id> <username>
set password <user id> [<password>]
disable <user id>
enable <user id>
priv <user id> <privilege level> [<channel number>]
test <user id> <16|20> [<password]>
Впрочем, можно получить
# ipmitool lan print 1
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory
Get Channel Info command failed
Не загрузился ipmi-модуль.
# modprobe ipmi_devintf
Почему оно не грузится автоматом (как во фре), непонятно.
Можно добавить ipmievd (из OpenIPMI) в загрузку - ipmievd - IPMI event daemon for sending events to syslog
PS Неплохой обзор этой платы
http://www.servethehome.com/supermicro-x8si6-f-motherboard-review-including-onboard-lsi-sas-2008-controller/
Подключил к сети. Штатно оно получит адрес по dhcp, но можно задать адрес в биосе. Изменять настройки можно или с диска (не проверял, возможно надо в /makedisk/makedisk.exe сделать загрузочный диск), или поставить OpenIPMI (в биосе нашёл только изменение айпи, но не пользователей), через ipmicfg, или через IPMI View. Если это делать удалённо - логин-пароль:
ADMIN:ADMIN
Через OpenIPMI - после установки появится ipmitool, про настройку сети через него есть у меня в заметках. С добавлением пользователя - копать в сторону
# ipmitool user list
ID Name Enabled Callin Link Auth IPMI Msg Channel Priv Limit
2 ADMIN false true false false Unknown (0x00)
# ipmitool user
User Commands: summary [<channel number>]
list [<channel number>]
set name <user id> <username>
set password <user id> [<password>]
disable <user id>
enable <user id>
priv <user id> <privilege level> [<channel number>]
test <user id> <16|20> [<password]>
Впрочем, можно получить
# ipmitool lan print 1
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory
Get Channel Info command failed
Не загрузился ipmi-модуль.
# modprobe ipmi_devintf
Почему оно не грузится автоматом (как во фре), непонятно.
Можно добавить ipmievd (из OpenIPMI) в загрузку - ipmievd - IPMI event daemon for sending events to syslog
PS Неплохой обзор этой платы
http://www.servethehome.com/supermicro-x8si6-f-motherboard-review-including-onboard-lsi-sas-2008-controller/
пятница, 2 сентября 2011 г.
SATA/SAS контроллеры
http://blog.zorinaq.com/?e=10
From 16 to 2 ports: Ideal SATA/SAS Controllers for ZFS & Linux MD RAID
http://forum.ixbt.com/topic.cgi?id=11:35147
SATA/SAS/RAID-контроллеры для дома и офиса. Выбор и нюансы использования (FAQ)
http://forum.ixbt.com/topic.cgi?id=11:35388
Порекомендуйте дешевый но "сердитый" контроллер SATA150 (PCI 2.2)
From 16 to 2 ports: Ideal SATA/SAS Controllers for ZFS & Linux MD RAID
http://forum.ixbt.com/topic.cgi?id=11:35147
SATA/SAS/RAID-контроллеры для дома и офиса. Выбор и нюансы использования (FAQ)
http://forum.ixbt.com/topic.cgi?id=11:35388
Порекомендуйте дешевый но "сердитый" контроллер SATA150 (PCI 2.2)
Подписаться на:
Сообщения (Atom)