Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения

четверг, 4 сентября 2014 г.

FC id

Выдернуть wwid с FC карточки:
systool -c fc_host -v
В выводе среди прочего будет что-то типа:
port_name           = "0x21000024ffxxxxxx"

среда, 13 августа 2014 г.

Замена диска в софтовом md рэйде

Чтобы в маны не лазить:

# sfdisk -d /dev/sdb > sdb.out
# sfdisk /dev/sdc < sdb.out
# mdadm --manage /dev/md0 --remove /dev/sda2
# mdadm --manage /dev/md1 --add /dev/sdc2
# cat /proc/mdstat

# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[2](F) sdb3[1]
      273659136 blocks [2/1] [_U]
      bitmap: 39/131 pages [156KB], 1024KB chunk

md0 : active raid1 sdc2[2] sdb2[1]
      8193024 blocks [2/1] [_U]
      [>....................]  recovery =  1.5% (128000/8193024) finish=2.0min speed=64000K/sec
      bitmap: 0/126 pages [0KB], 32KB chunk

md1 : active raid1 sdb1[1] sda1[2](F)
      30716160 blocks [2/1] [_U]
      bitmap: 48/235 pages [192KB], 64KB chunk

# mdadm --manage /dev/md1 --remove /dev/sda1
# mdadm --manage /dev/md1 --add /dev/sdc1
# mdadm --manage /dev/md2 --remove /dev/sda3
# mdadm --manage /dev/md2 --add /dev/sdc3

# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdc3[2] sdb3[1]
      273659136 blocks [2/1] [_U]
        resync=DELAYED
      bitmap: 39/131 pages [156KB], 1024KB chunk

md0 : active raid1 sdc2[0] sdb2[1]
      8193024 blocks [2/2] [UU]
      bitmap: 0/126 pages [0KB], 32KB chunk

md1 : active raid1 sdc1[2] sdb1[1]
      30716160 blocks [2/1] [_U]
      [=====>...............]  recovery = 28.7% (8835968/30716160) finish=6.7min speed=54126K/sec
      bitmap: 48/235 pages [192KB], 64KB chunk

среда, 22 января 2014 г.

Xen: Bridges and vlans

Недавно срочно понадобилось на ксеновую ноду запихать машинки из сети из влана, отличного от того, что был прокинут. Времени на то, чтобы разбираться с мостами и вланами не было, просто подцепил второй интерфейс железки, сделал мост и на него машины повесил.
Но это как-то неправильно.
Наконец, дошли руки разобраться с этим вопросом. Интуитивно всё вроде было просто, но не завелось, немного перепутал порядок настройки )

Задача по сути такая: создать несколько мостов для разных вланов. Пусть один нативный, второй с тегом.

1. Настраиваем интерфейс в нативном влане, указывая мост:

# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BRIDGE="br1"
ONBOOT="yes"
TYPE="Ethernet"
HWADDR="00:9A:8F:11:22:33"

2. Настраиваем бридж для нативного влана:

# cat /etc/sysconfig/network-scripts/ifcfg-br1
DEVICE="br1"
BOOTPROTO="static"
HWADDR="00:9A:8F:11:22:33"
IPADDR="111.222.34.56"
NETMASK="255.255.254.0"
ONBOOT="yes"
TYPE="Bridge"

3. Настраиваем интерфейс с тегом:

# cat /etc/sysconfig/network-scripts/ifcfg-eth1.4
DEVICE="eth1.4"
VLAN="yes"
BRIDGE="br14"
ONBOOT="yes"
TYPE="Ethernet"
HWADDR="00:9A:8F:11:22:33"

4. Настраиваем бридж для этого тега:

# cat /etc/sysconfig/network-scripts/ifcfg-br14
DEVICE="br14"
BOOTPROTO="static"
HWADDR="00:9A:8F:11:22:33"
IPADDR="222.33.45.67"
NETMASK="255.255.254.0"
ONBOOT="yes"
TYPE="Bridge"

Рестарт сети и готово )
Да, возможно модуль для вланов понадобится запихать
modprobe 8021q

Теперь можно прокидывать в виртуалки оба влана, прицепляем новый мост:
xm network-attach test-ve mac=00:16:3e:87:b5:6c bridge=br14 script=vif-bridge

среда, 30 октября 2013 г.

cron и mail - attachment вместо body

Скидываю на мыло некий лог (в кот. есть кириллица).
Отрабатываю из консоли - все ок, приходить письмо с логом в теле.
Сую в крон - текста нет, зато есть аттач.

Прикинул, что mail почему-то считает ввод бинарным. Видимо из-за нестыковок локалей.
Решил проблему добавлением в крон локали:

LANG=ru_RU.UTF-8
LANGUAGE=ru
LC_CTYPE=ru_RU.UTF-8
CONTENT_TYPE="text/plain; charset=utf-8"

0 19 * * * /root/logparse.pl | mail -r noreply@blabla.ru -s "Login report" mail0@gmail.com mail1@gmail.com; echo > /var/log/my.log

четверг, 15 августа 2013 г.

Вставки sed'ом

Вставить пару строк в начало:
sed  -i '1iWorkDir: \/var\/www\/mrtg\/\nOptions[_]: growright, bits' sw1.example.ru.cfg
Вставить строчку после определённой:
sed -i '/^prog=nginx/i ulimit -n 16384'  /etc/init.d/nginx

пятница, 1 февраля 2013 г.

Сетап ксеновпсок через virt-install

Debian:
virt-install -f /dev/mapper/vg_vm-ejab -p -r 512 -l "http://mirrors.cn99.com/debian/dists/Debian6.0.5/main/installer-amd64/" -n ejab

Centos:
virt-install -f /dev/mapper/vg_vm-otrs -p -r 4096 -l "http://mirror.yandex.ru/centos/6.3/os/x86_64/" -n otrs

среда, 14 ноября 2012 г.

tcptrack for centos 6

# wget http://pkgs.repoforge.org/tcptrack/tcptrack-1.4.0-1.el6.rf.x86_64.rpm
# yum localinstall tcptrack-1.4.0-1.el6.rf.x86_64.rpm -y

понедельник, 5 ноября 2012 г.

HD 6310: "AMD: unsupported hardware"

 Обновил тут свою Fedora 16 на ноуте, после апдейта получил в правом нижнем углу прозрачный логотип: "AMD: unsupported hardware".
Нашёл кучу обсуждений и решение проблемы - заменить в драйвере вызов функции с логотипом на нопы. В результате каша получилась. Да и неправильно это, в конце концов.

Нашёл второе решение, правильное: ссылка (первый пост).
Прикол связан с файликом /etc/ati/control, надо его наменить на пофиксенный - и лого пропал.

Пост с файликом: Ссылка

четверг, 25 октября 2012 г.

auditd: следим за файлами

Недавно потребовалось последить за судьбой одного файлика - кто и когда что с ним делает. С auditd раньше не работал, а тут подумал, что наверно он как раз такими вещами должен заниматься. Оказалось, что, при помощи него, отслеживание файлов - занятие лёгкое и приятное )

Значит, надо нам проследить за судьбой файлика /tmp/vipfile. Говорим:
# auditctl -w /tmp/vipfile
Ну а потом с ним кто-то что-то делает:

1. $ touch /tmp/vipfile
2. $ echo test > /tmp/vipfile
3. $ echo test2 >> /tmp/vipfile
4. $ cp /tmp/vipfile /tmp/vipfile_backup
5. $ rm /tmp/vipfile
6. $ cp /tmp/vipfile_backup /tmp/vipfile
7. $ cat /tmp/vipfile
8. $ /tmp/vipfile
9. $ rm /tmp/vipfile
В какой-то момент мы хотим посмотреть, было ли что-нибудь интересное с файликом:
# aureport -f

File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 10/25/2012 19:28:13 /tmp/ 2 yes /bin/touch 500 60063
2. 10/25/2012 19:28:17 /tmp/vipfile 2 yes /bin/bash 500 60064
3. 10/25/2012 19:28:21 /tmp/vipfile 2 yes /bin/bash 500 60065
4. 10/25/2012 19:28:29 /tmp/vipfile 2 yes /bin/cp 500 60066
5. 10/25/2012 19:28:35 /tmp/ 263 yes /bin/rm 500 60068
6. 10/25/2012 19:28:44 /tmp/ 2 yes /bin/cp 500 60070
7. 10/25/2012 19:28:56 /tmp/vipfile 2 yes /bin/cat 500 60071
8. 10/25/2012 19:29:01 /tmp/vipfile 59 no /bin/bash 500 60072
9. 10/25/2012 19:29:07 /tmp/ 263 yes /bin/rm 500 60074
Всё как на ладони.

пятница, 7 сентября 2012 г.

ssh: укорачиваем команду

Уже как-то писал про то, как удалось сократить длину некот. git команд за счёт настройки хостов в ssh_config. Решил на ноуте сделать так же для наших хостов, чтобы не набивать "$ ssh username@host.domain.org".
Так, как писать секции самому неохота, сделал скриптик sshgen.sh, вызываемый в цикле:

#!/bin/bash
if [ $# -eq 0 ]; then
        echo "Usage: sshgen.sh host domain user"
else
        echo "Host $1"
        echo "        User $3"
        echo "        HostName $1.$2"
fi
Работает так:
$ for a in {1..7};do for b in vps$a;do ./sshgen.sh $b domain.com username; done; done
Host vps1
        User username
        HostName vps1.domain.com
Host vps2
        User username
        HostName vps2.domain.com
Host vps3
        User username
        HostName vps3.domain.com
Host vps4
        User username
        HostName vps4.domain.com
Host vps5
        User username
        HostName vps5.domain.com
Host vps6
        User username
        HostName vps6.domain.com
Host vps7
        User username
        HostName vps7.domain.com
 Полученный вывод суём в ssh_config и вместо "$ ssh username@host.domain.org" пишем "$ ssh host"

четверг, 26 июля 2012 г.

Ubuntu 12.04 suxx

Попросил клиент дедик с убунту 12. Разметку прислал без отдельного /tmp
Ставлю аптом пакеты, желаемые этим товарищем, а мне апт говорит:
E: Problem executing scripts DPkg::Pre-Invoke 'mount -o remount,exec /tmp'
Вот так вот. Даже мысли недопускается о том, что /tmp может не быть вынесен отдельно.
Воркараунд - рамдиск. В /etc/fstab добавил:
tmpfs /tmp tmpfs defaults 0 0
Замаунтил, поставил что надо, размаунтил, закомментил рамдиск.

пятница, 20 июля 2012 г.

Could not find a kernel path for virt type 'xen': Debian vs Ubuntu

Пытаюсь в ксене через virt-install сделать машинку с бубунтой.
Урлом указываю: http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/
После стягивания manifest имею:
Could not find a kernel path for virt type 'xen'

Оказалось, в манифесте пути не совпадают с фактическими. Поэтому либвирт не может скачать файлики ксеновые.
Из дебага:
 Fri, 20 Jul 2012 15:12:40 DEBUG    HTTP hasFile: didn't find http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/images/xen/vmlinuz
А всё потому, что на самом деле путь:
http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/current/images/xen/vmlinuz

Для сравнения взял дебиан, урл:
http://mirrors.cn99.com/debian/dists/Debian6.0.5/main/installer-amd64/
Всё шикарно поставилось )

ЗЫ
Только после сетапа надо в виртуалке ксен ядро поставить и конфиг машинки поправить (http://www.howtoforge.com/installing-debian-squeeze-6.0-domu-on-centos-5.5-x86_64-dom0)

пятница, 13 июля 2012 г.

Self signed cert and existing key

Как сгенерить самоподписанный сертификат для существующего закрытого ключа:
$ openssl req -new -key mykey.key -out myreq.req -subj '/C=RU/ST=Moscow/L=Moscow/O=AccessD Lab/OU=SA Dept/CN=accessdlab.blogspot.com'
$ openssl req -x509 -key mykey.key -days 1825 -in myreq.req -out mycert.crt

среда, 6 июня 2012 г.

Рамдиск и свободная оператива

Как считается память, отведённая под рамдиск?
Оказалось, что свободное место на рамдиске подсчитывается, как свободная память, а занятое - и как used, и как cached


суббота, 21 апреля 2012 г.

fork vs pthread

Попытка построить ядро моего диплома, включающего сбор ip, tcp и http заголовков с отправкой их в mysql для последующего анализа на базе одного процесса провалилась - инсерт сильно дольше приёма очередного пакета при большом трафике, в БД каша получается.
Попытался делать так - форкать отдельный процесс под отправку данных в БД и передавать ему обработанный пакет через пайп - тот же эффект.
Стал одним процессом собирать запросы в shared memory,  дочерним зеркалировать участок памяти и из зеркала слать. Синхронизацию делал через posix semaphores. Что получил - при большом трафике тот процесс, что загребает трафик, постоянно заходит в свою критическую зону, а отсылающий процесс просто висит в ожидании, отжирая целое ядро.

Уже было отчаился, но решил переписать с тредами - и, о диво! Оно заработало!!!
Механика такая: создаём 2 треда - для сбора трафика и для отправки.
Первый в pcap_loop callout раздирает пакет и формирует VALUE список, добавляя его в своей критической секции в шаренный через анонимный mmap участок.
Второй тред в своей критикал цепляет содержимое вышеуказанного участка в свой буфер и после выхода из критикала спокойно инсертит одним запросом. Сегодня вечером выкатил на продакшн, было около 3 тыс. инсертов в секунду.
Вот сам код, непричёсанный ещё, правда:
 https://github.com/speedcorezombie/pget/blob/master/pget.c

суббота, 10 марта 2012 г.

Как заставить работать 6pm.com

1. Купить за 4.5$ в месяц впс в BurstNET. Я там на какую-то срочную акцию попал, поэтому мну скинули доллар. Взял в Лос Анжелесе.
2. Вкатить openvpn. Не забыть врубить tun. Настроить можно, например, как тут:
http://wolandblog.com/1103-ustanovka-i-nastrojka-openvpn-na-centos-5-3

Мой хистори:
   17  wget http://mirror.optus.net/epel/5Server/x86_64/epel-release-5-4.noarch.rpm
   18  yum localinstall epel-release-5-4.noarch.rpm --nogpgcheck
   19  yum install openvpn
   20  touch /etc/openvpn/openvpn.conf
   21  mkdir /etc/openvpn/ccd
   22  mkdir /etc/openvpn/keys
   26  mkdir /etc/openvpn/easy-rsa
   36  cp -r /usr/share/openvpn/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
   38  cd /etc/openvpn/easy-rsa/
   39  chmod +x clean-all
   40  chmod +x build*
   41  vi /etc/openvpn/easy-rsa/vars
   42  cd /etc/openvpn/easy-rsa
   48  source ./vars
   49  ./clean-all
   50  ./build-ca
   51  ./build-key-server vpnserver
   52  cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/keys/ca.crt
   53  cp /etc/openvpn/easy-rsa/keys/vpnserver.crt /etc/openvpn/keys/vpnserver.crt
   54  cp /etc/openvpn/easy-rsa/keys/vpnserver.key /etc/openvpn/keys/vpnserver.key
   56  ./build-dh
   57  cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/keys/dh1024.pem
   58  vi /etc/openvpn/openvpn.conf
   59  echo "ifconfig-push 172.16.0.101 172.16.0.102" > /etc/openvpn/ccd/accessd
   61  ./build-key accessd
   68  cd /etc/openvpn/easy-rsa/keys/
   69  tar czf accessd.tgz accessd.key accessd.crt ca.crt

3. Настроить NAT:
sysctl net.ipv4.ip_forward=1
/sbin/iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
/sbin/iptables -A FORWARD -i venet0 -o tun0 -m state/sbin/iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT
 4. Настроить клиента и можно пулять трафик в заппосовскую сеть через наш впс в ЛА.

Альтернатива - халявный инстанс в амазоне. Но на мои 2 акка халява не положена, а ещё один делать впадлу.

суббота, 11 февраля 2012 г.

EXT3-fs error: unlinked inode

Стало время от времени появляться:
Feb  7 00:03:03 xxx kernel: EXT3-fs error (device sda8): ext3_lookup: unlinked inode 11848061 in dir #17097522
Feb  7 00:03:03 xxx kernel: Aborting journal on device sda8.
Feb  7 00:03:03 xxx kernel: EXT3-fs error (device sda8): ext3_lookup: unlinked inode 11848060 in dir #17097522
Feb  7 00:03:03 xxx last message repeated 3 times
Feb  7 00:03:03 xxx kernel: ext3_abort called.
Feb  7 00:03:03 xxx kernel: EXT3-fs error (device sda8): ext3_journal_start_sb: Detected aborted journal
Feb  7 00:03:03 xxx kernel: Remounting filesystem read-only
Спустя некот.время - от неск.мин до часа - сервак вис, выкидывая:

Feb  7 00:25:54 xxx kernel: Pid: 27096, comm: repquota Not tainted 2.6.18-194.17.4.el5 #1
Feb  7 00:25:54 xxx kernel: RIP: 0010:[<ffffffff88055c3d>]  [<ffffffff88055c3d>] :ext3:ext3_journal_start_
sb+0x0/0x46
Айноды всё время одни и те же.
Нашёл баг: https://bugzilla.redhat.com/show_bug.cgi?id=494927

Собственно, предложенное решение - пересборка журнала:
umount /dev/sda8
tune2fs -O ^has_journal /dev/sda8
e2fsck -fy -C 0 /dev/sda8
tune2fs -j /dev/sda8
mount /dev/sda8
помогло.

понедельник, 6 февраля 2012 г.

Харденинг

Надо пробовать чуток укрепить хостинги...

1. Сетевой стек. Посмотрим, что будет, если сделать:
net.ipv4.tcp_max_syn_backlog=2048
net.ipv4.tcp_synack_retries=3
net.ipv4.tcp_fin_timeout=20
По идее, сможем больше синов держать, быстрее закрывать те, что так и не открыты до конца и быстрее прибивать закрываемые.

2. limit_conn с $binary_remote_addr для всех виртуал хостов. Штучек 16 должно хватить.
Так же можно попробовать ставить rate с айпишника, но может вызвать эээ.. огорчение у некот. клиентов. Ещё наверно имеет смысл разграничить по числу коннектов на один виртуал хост вообще, но тоже может вызвать неадекватную реакцию.

Что бы ещё сделать?

chkconfig и systemctl

Заметил, что в новой Федоре стопать/стартовать, включать/выключать сервисы стало несколько иначе, чем раньше:

Вместо:
service sshd start
теперь принято:
systemctl start sshd.service

Вместо:
chkconfig sshd on
надо делать:
systemctl enable sshd.service

Хотя пока и то, и другое работает, хотя при команде chkconfig дергается соотв. systemctl

Собственно, тут небольшая памятка по systemd:
http://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet

вторник, 6 декабря 2011 г.

Doom 3 vs Fedora 15 & Pulseaudio

Когда купиз свою леновку x120e, то решил проверить производительность видюху погоняв Doom 3. Нормально пошёл, только звука не было.

Тут вот поиграть решил..
Звука либо нет, либо лаг в 10 секунд. В конце концов сделал так:
1. Поставил в настройках дума oss
2. Немножко поправил скрипт запуска:
#!/bin/sh
# Needed to make symlinks/shortcuts work.
# the binaries must run with correct working directory
cd "/home/accessd/local/Games/Doom3"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
padsp ./doom.x86
#exec ./doom.x86 "$@"
padsp - это пульсовый враппер для требующего oss софта
3. В настройках дума (~/.doom3/base/DoomConfig.cfg) заменил девайс с /dev/dsn на /dev/dsn1 (который у меня в девах болтается)
4.  modprobe snd-pcm-oss (собственно, чтобы девайс появился)
Всё, звук есть!

И ещё поправил разрешение под своё 1366x768, в конфиге надо сделать:

seta r_customHeight "768"
seta r_customWidth "1366"
seta r_mode "-1"
seta r_aspectRatio "1"