Архив

Архив раздела ‘Linux’

Upgrading Gentoo 2007.0 to 10.0

28 Июнь 2012

отсюда http://allmybrain.com/2009/11/10/upgrading-gentoo-2007-0-to-10-0/
So I left all these servers running gentoo a couple years ago. Now, after all this time (and uptime!), I want to install something.

Error:

emerge -av portage

These are the packages that would be merged, in order:

Calculating dependencies |
!!! All ebuilds that could satisfy “>=dev-lang/python-2.5″ have been masked.
!!! One of the following masked packages is required to complete your request:
- dev-lang/python-2.5.4-r3 (masked by: required EAPI -1, supported EAPI 0)
- dev-lang/python-2.6.2-r1 (masked by: required EAPI -2, supported EAPI 0)
- dev-lang/python-2.6.2-r2 (masked by: required EAPI -2, supported EAPI 0)
- dev-lang/python-2.6.4 (masked by: required EAPI -2, supported EAPI 0)
- dev-lang/python-3.1.1-r1 (masked by: required EAPI -2, supported EAPI 0)
- dev-lang/python-2.6.3 (masked by: required EAPI -2, supported EAPI 0)

For more information, see MASKED PACKAGES section in the emerge man page or
refer to the Gentoo Handbook.
(dependency required by “sys-apps/portage-2.1.6.13″ [ebuild])

Hm. Yeah, I’m way out of date.

Solution: I found other sites that talked about forcing a python/portage install but I that sounded a little harsh. Instead, I found a snapshot of portage-2008.0 and replaced my /usr/portage with the contents of that.

cd /usr
rm -rf portage # or mv portage xxx
wget http://gentoo.mirrors.tds.net/gentoo/releases/snapshots/2008.0/portage-2008.0.tar.bz2
tar -xjpf portage-2008.0.tar.bz2
cd /etc/
rm make.profile
ln -s /usr/portage/profiles/default/linux/x86/2008.0 make.profile
emerge -av portage

That took me to portage-2.1.4.4.

From there, I can now go back to current 10.0 portage and emerge -av portage to get up to the current portage state.

Yeah, I really didn’t want to do a re-install.

admin Linux

Mdadm полезные команды

28 Июнь 2012

Стащил с http://linux.mkrovlya.ru/book/%D0%BA%D0%BE%D1%80%D0%BE%D1%82%D0%BA%D0%BE-%D0%BE-soft-raid

Подборка заметок о Soft RAID с opennet.ru [1].

Добавление программного RAID 1 раздела на Linux сервер.
Имеем два дополнительных диска:
/dev/hdb (/dev/hdb1 - 40 GB)
/dev/hdc (/dev/hdc1 - 40 GB)

Создаем RAID 1:
mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/hdb1 /dev/hdc1

Смотрим статус:
cat /proc/mdstat

Создаем файловую систему на RAID разделе:
mkfs.ext3 /dev/md0

Настраиваем монтирование при загрузке (в /etc/fstab):
/dev/md0 /data2 ext3 defaults 0 0

Как заменить сбойный диск в программном RAID1 в Linux
Программный RAID1 /dev/md0 включает в себя разделы /dev/sda1 и /dev/sdb1.
Задача заменить диск /dev/sdb.
Диагностику смотрим через (если вместо [UU] видим [U_], то целостность одного из дисков нарушена):
cat /proc/mdstat

Помечаем раздел как сбойный:
mdadm –manage /dev/md0 –fail /dev/sdb1

Отключаем раздел (удаляем из RAID1)
mdadm –manage /dev/md0 –remove /dev/sdb1

Выключаем машину, меняем диск.

Создаем через fdisk идентичные разделы, или копируем структуру первого диска /dev/sda:
sfdisk -d /dev/sda | sfdisk /dev/sdb

Добавляем раздел в RAID1 массив:
mdadm –manage /dev/md0 –add /dev/sdb1

Как перенеси существующую Linux систему на RAID1 добавив второй диск
/dev/sda - диск с установленной ОС
/dev/sdb - новый диск для зеркала

Клонируем информацию о разделах на новый диск:
sfdisk -d /dev/sda | sfdisk /dev/sdb

Создаем RAID1, но первый диск пока не трогаем, пометив его отсутствующим:
mdadm –create /dev/md0 –level 1 –raid-devices=2 missing /dev/sdb1
mdadm –create /dev/md1 –level 1 –raid-devices=2 missing /dev/sdb2
и т.д. для всех существующих разделов.

Создаем ФС:
mkfs.ext3 /dev/md0
mkfs.ext3 /dev/md1

Монтируем и копируем данные в RAID:
mount /dev/md0 /mnt
cp -dpRx / /mnt
mount /dev/md1 /mnt/var
cp -dpRx /var /mnt

Меняем устройство для загрузки, для Grub в /mnt/boot/grub/menu.lst:
title Custom Kernel 2.6.11.7
root (hd0,0)
kernel /boot/vmlinuz-2.6.11.7 root=/dev/md0 md=0,/dev/sda1,/dev/sdb1 ro
boot

title Custom Kernel 2.6.11.7 (RAID Recovery)
root (hd1,0)
kernel /boot/vmlinuz-2.6.11.7 root=/dev/md0 md=0,/dev/sdb1 ro
boot

Устанавливаем Grub на второй диск:
grub-install /dev/sda

Если при установке выдается ошибка:
/dev/sda does not have any corresponding BIOS drive.

Нужно выполнить
grub-install –recheck /dev/sda

Или установить вручную:
grub
grub: device (hd0) /dev/sdb
grub: root (hd0,0)
grub: setup (hd0)
grub: quit

cp -dp /mnt/etc/fstab /etc/fstab
cp -dp /mnt/boot/grub/menu.lst /boot/grub

Перезагружаемся (второй диск) и проверяем все ли работает, если да - подключаем старый диск в RAID:

mdadm –add /dev/md0 /dev/sda1
mdadm –add /dev/md1 /dev/sda2

cat /proc/mdstat

Мониторинг и восстановление программного RAID в Linux
Управление программными RAID1-массивами в RHEL

Мониторинг состояния

Информация о всех RAID-массивах:
# more /proc/mdstat
или
# cat /proc/mdstat
или
# watch -n .1 cat /proc/mdstat

Информация о конкретном дисковом разделе:
# mdadm -E /dev/sd<1-10>
например:
# mdadm -E /dev/sdb2

Восстановление функционирования

Восстановление функционирования (rebuild) разделов диска по одному после
однократного “несмертельного” сбоя:
# mdadm -a /dev/md<0-6> /dev/sd<1-10>
например:
# mdadm -a /dev/md0 /dev/sdb1
Нужно быть аккуратным с номерами разделов
В случае ошибки, удалить компонент из RAID командой:
# mdadm -r /dev/md0 /dev/sdb1
получается не всегда - устройство может быть занято.

Замена диска

1. Выключить компьютер и заменить диск

2. Включить компьютер и определить имеющиеся на обоих дисках разделы:
# fdisk /dev/sd -l

3. С помощью fdisk создать на новом диске разделы, идентичные оригиналу
Необходимо пометить нужный раздел нового диска (sda1 или sdb1) как загрузочный
до включения в зеркало.
Swap-разделы не подлежат зеркалированию в программном RAID

4. Выполнить Мониторинг состояния и Восстановление функционирования

Настройка оповещения

Мониторинг выполняется с помощью crond ежечасно.
В папку /etc/cron.haurly помещен файл mdRAIDmon, содержащий команду:
# mdadm –monitor –scan -1 –mail=postmaster@domain.name.ru

Для проверки рассылки сообщения добавляется ключ –test:
# mdadm –monitor –scan -1 –mail=postmaster@domain.name.ru –test

Помещая файл задания в папку, необходимо установить права доступа на выполнение
Если нужно чаще, самое простое, добавьте в /etc/crontab строку, используя нотацию с “/”, например:
*/5 * * * * root run-parts /etc/cron.my5min

Конечно, можно попробовать и другие варианты планирования заданий с atd или batch.

Создайте папку /etc/cron.my5min и поместите туда файл mdRAIDmon
C имитацией отказа диска мне было проще - сервер SR1425BK1 - с корзиной HotSwap

admin Linux, Без рубрики

WEB морда для EXIM логов - exilog

3 Март 2009

http://www.lissyara.su/?id=1867 здесь детально все описано,  мои поправки:

У меня не было модулей для перла, ставлю:

emerge  dev-perl/DBD-mysql

emerge dev-perl/DBI

emerge  dev-perl/Net-Netmask

Запустил, вроде работает
ps -ax |grep exilog
5400 ? Ss 0:00 [exilog_agent]
5401 ? S 0:32 [exilog_agent:_tail] (/var/log/exim/exim_main.log)
5406 ? S 0:05 [exilog_agent:_tail] (/var/log/exim/exim_reject.log)
5408 ? S 0:00 [exilog_agent:_queue_manager] (/var/spool/exim)
5409 ? S 0:00 [exilog_agent:_queue_actions]

Но в базу не пишет, показывает только очередь…Вообщем дело оказалось в формате лога exim
Для этого в exim.conf выставил:
log_selector = \
+all_parents \
+connection_reject \
-incoming_interface \
-lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run

После этого все заработало.

admin Linux ,

Конфигурация exim

28 Февраль 2009

Пример конфигурации acl_check_rcpt

MYSQL_DOMAINS = SELECT domain FROM domains WHERE domain=’${domain}’ AND (type=’LOCAL’ OR type=’VIRTUAL’)

MYSQL_ADD_WHITELIST_RECIPIENT = INSERT INTO whitelist(src_email,dst_email,record_expires) VALUES (’$sender_address’,'$local_part@$domain’,DATE_ADD(now(), INTERVAL 180 DAY))

MYSQL_UPDATE_WHITELIST_RECIPIENT  = UPDATE whitelist SET record_expires=DATE_ADD(now(), INTERVAL 180 DAY) WHERE dst_email=’$local_part@$domain’

MYSQL_DEL_WHITELIST_EXPIRED  = DELETE FROM whitelist WHERE record_expires < now()

MYSQL_WHITELIST_CHECK_SENDER   = SELECT CASE WHEN now() - record_expires > 0 THEN 2 ELSE 1 END FROM whitelist WHERE dst_email=’$sender_address’  LIMIT 1

MYSQL_WHITELIST_CHECK_RECIPIENT  = SELECT CASE WHEN now() - record_expires > 0 THEN 2 ELSE 1 END FROM whitelist WHERE dst_email=’$local_part@$domain’  LIMIT 1

Читать далее…

admin Linux ,