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

2016-02-03

openSUSE 42.1 virtualbox driver setup

Итак, есть проблема. При установке на openSUSE 42.1 virtualbox 5 нужно собрать модули ядра.
То есть выполнить инструкцию от virtualbox:

/sbin/rcvboxdrv setup

Но при ее выполнении получаем ошибку:

Bad argument setup

Нашел рекомендацию следующую:

sudo /usr/lib/virtualbox/vboxdrv.sh setup

Читать далее

2015-03-24

ThunerBird для корпоратива

В ПРОЦЕССЕ НАПИСАНИЯ!!!! НЕ ЗАКОНЧЕНО!!!

В предыдущей теме мы пытались, как оказалось, перекопать огород зубочисткой, а хотели от нас совсем другого. А хотели от нас... Тут заинтригую и не скажу.

А пока задача вот такая. Вся контора сидит на thunderbird версии от 2 до 31. Есть адресная книга на ldap, и ко всем клиентам она привязана. Нужно чтобы ко всем письмам прикреплялась подпись, в содержании которой будет ФИО, контакты, должность, компания, адрес и логотип. На данный момент есть 4 почтовых сервера, из которых 3 для пользователей. Везде postfix, на 2-х dovecot, на одном cyrus-imapd. В будущем эти три объединим в один cyrus-imapd. Общее количество ящиков - порядка 500. Те что на dovecot сидят на POP, cyrus-imapd - на IMAP.

Карочи, заапарк йурскага периада.

Конечно, будет все приводится в порядок, а пока цель - подпись, благо есть адресная книга и при должном напильнике thunderbird можно превратить в классный корпоративный клиент. По крайней мере так в инете пишуть :) А чо, а мы попробуем...

Во первых, пока говорить будем о версии 31.5. За старичков возможно отдельно что-то скажем, а может и нет.

Файл который нас интересует - omni.ja. Файл являетс jar архивом. В нем есть файлы greprefs.js и default/prefs/all-thunderbird.js. Сие есть файл с глобальными настройками, которые, насколько я понял, менее приоритетные, чем настройки из файла prefs.js, который лежит в профиле.
Есть у меня такое впечатление, что default/prefs/all-thunderbird.js это тот же greprefs/all.js из знаменитой статьи на хабре(http://habrahabr.ru/post/101905/). Кстати, спасибо автору, статья была одним из источников для сего творения.

Редактируем default/prefs/all-thunderbird.js, добавляем туда строку

pref("general.config.filename", "thunderbird.cfg");

После чего создаем файл thunderbird.cfg, и располагаем его возле файла omni.ja

Настроим в нем, например, нашу адресную книгу:



Читать далее

2015-03-18

Корпоративная подпись в почте. Add A Disclaimer To Outgoing Emails With alterMIME

Выполнено на базе статьи http://habrahabr.ru/post/242185/

Предполагается, что необходимые пакеты находятся в /u02/install/ (addAttachFilter.pl, altermime-0.3.10.tar.gz)

antares:~ # cd /u02/install/
antares:/u02/install # tar -xvzf altermime-0.3.10.tar.gz
antares:/u02/install # cd altermime-0.3.10/

Дальше моя инициатива. При компиляции получаем ошибку:

cc1: warnings being treated as errors
qpe.c: In function ‘qp_encode’:
qpe.c:94: error: format ‘%d’ expects type ‘int’, but argument 5 has type ‘size_t’
make: *** [qpe.o] Error 1

Основываясь на подсказке компилятора, в файлах qpe.c и qpe.h меняем size_t на int.

ВНИМАНИЕ!!! Если у вас ошибки нет(версия компилятора старенькая), то менять исходники не надо!!!

Компилим и ставим:

antares:/u02/install/altermime-0.3.10 # make
cc -Wall -Werror -g -I. -O2  -c qpe.c
cc -Wall -Werror -g -I. -O2  altermime.c strstack.o mime_alter.o ffget.o pldstr.o filename-filters.o logger.o MIME_headers.o libmime-decoders.o boundary-stack.o qpe.o -o altermime
antares:/u02/install/altermime-0.3.10 # make install
strip altermime
cp altermime /usr/local/bin
chmod a+rx /usr/local/bin/altermime

Вроде без ошибок.
Дальше в соответствии с документацией (брал из deb пакетов, ибо с сайта ее не дернешь - ссылки не работают:

antares:/u02/install/altermime-0.3.10 # useradd -r -c "Postfix Filters" -d /var/spool/filter filter
antares:/u02/install/altermime-0.3.10 # mkdir /var/spool/filter
antares:/u02/install/altermime-0.3.10 # chown filter /var/spool/filter
antares:/u02/install/altermime-0.3.10 # chmod 750 /var/spool/filter


postfix_filter.sh берем также из deb пакета и копируем в

antares:/u02/install/altermime-0.3.10 # cp /u02/install/postfix_filter.sh /etc/postfix/disclaimer
antares:/u02/install/altermime-0.3.10 # chown filter /etc/postfix/disclaimer
antares:/u02/install/altermime-0.3.10 # chmod 750 /etc/postfix/disclaimer

antares:/u02/install/altermime-0.3.10 # touch /etc/postfix/disclaimer_addresses
 

Вносим в disclaimer_addresses какие-нибудь адреса из тех, к которым нужно цеплять подпись, так что файл будет иметь вид:


mail1@domain.com
khsdkfh@domain.com
jdjdj@domain.com

Файле /etc/postfix/disclaimer приводим к виду:

#!/bin/sh
# Localize these.
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
DISCLAIMER_ADDRESSES=/etc/postfix/disclaimer_addresses

# Exit codes from
EX_TEMPFAIL=75
EX_UNAVAILABLE=69

# Clean up when done or when aborting.
trap "rm -f in.$$" 0 1 2 3 15

# Start processing.
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit
$EX_TEMPFAIL; }

cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }

####### Changed From Original Script #######
# obtain From address
from_address=`grep -m 1 "From:" in.$$ | cut -d "<" -f 2 | cut -d ">" -f 1`

if [ `grep -wi ^${from_address}$ ${DISCLAIMER_ADDRESSES}` ]; then
    /usr/local/bin/altermime --input=in.$$ \
        --disclaimer=/etc/postfix/disclaimer.txt \
        --disclaimer-html=/etc/postfix/disclaimer.txt \
        --xheader="X-Copyrighted-Material: Please visit http://www.company.com/privacy.htm" || \
            { echo Message content rejected; exit $EX_UNAVAILABLE; }
fi
####### Changed From Original Script END #######

$SENDMAIL -oi "$@"
exit $?


Создаем файл с подписью:

antares:/u02/install/altermime-0.3.10 # touch /etc/postfix/disclaimer.txt

Собственно в нем будет текст подписи. Например такой:

Пусть всегда будет солнце!
Пусть всегда будет небо!!
Пусть всегда будем мама!!!
Пусть всегда буду я!!!!

В файле /etc/postfix/master.cf меняем

smtp      inet  n       -       n       -       -       smtpd

на

smtp      inet  n       -       n       -       -       smtpd
        -o content_filter=dfilt:


и в конце добавляем:

dfilt     unix    -       n       n       -       -       pipe
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient} 


Ну и рестартуем постфикс после этого.

Ну и что не маловажно - после этого имеем маленькую радость - письма адресатов из файла disclaimer.txt автоматически дописываются веселым жизнейтверждающим лозунгом ;)

То есть прилепить принудительно текстуху при прохождении письма через MTA - это мы сделали.

Но нам этого мало.

Обновление от 23.03.2015 - нам этого оказалось вообще не так надо. Руководство промеж собой перетерло и решилось на кровавый вариант. Он будет описан отдельно. Так что данную тему пока закрываем.


Читать далее

2015-02-11

Автологин windows server

В некоторых случаях надо, чтобы был автологин по админом на виндозный сервер. Склероз не позволяет зхапомнить, поэтому каждый раз приходится гуглить или спрашивать. Так вот, чтоб не спрашивать:

control userpasswords2

замечательная мегаутилита запускается из командной строки и позволяет решить проблему :)

Читать далее

2015-01-21

Склерозник. MySQL, PHPMyAdmin, MediaWiki

Ставим SLES11 SP3, в нем ставим все компоненты из названия темы, нехитрым путем добавления репозиториев.

MySQL

f01:~ # chkconfig mysql on
f01:~ # /etc/init/d/mysql start
f01:~ # mysqladmin -u root password 'root'

Apache2

f01:~ # chkconfig apache2 on
f01:~ # /etc/init.d/apache2 start

После этого можемзайти на http://url/phpmyadmin под root с паролем root.



Читать далее

2014-12-12

Быстренька миграция с openldap2-2.3.19 на openldap2-2.4.26

0. ssh root@openldap2319
1. slapcat -v -l antares.ldif
2. scp antares.ldif root@openldap2426:/root/ldap/
3. ssh root@openldap2426
4. /etc/init.d/ldap stop
5. slapadd -v -l ldap/antares.ldif
6. /etc/init/d/ldap start
Читать далее

2014-08-18

Приколы с конфигурированием cyrus-imapd

После долгих мучений с применением параметров с конфигурационных файлах cyrus-imapd выяснилось:

Если ты в конфигурационном файле /etc/imapd.conf изменил значение параметра, то последующее комментирование данного параметра не вернет его в значение по умолчанию. По крайней мере это касается версии 2.4.17. Если тебе нужно для параметра поставить другое значение, его нужно прописывать явно. Иначе будет работать установленное в последний раз.

Читать далее

2014-05-08

ntp, nagios check_ntp_time, версии, заковыки, проблемы...

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

А почему узнали уже в момент отгребания - а потому что nagios ничего, падла, нам не сказал, чтоб наше внимание привлекло. Все горело зелененьким, приятненьким таким цветом.

А после снятия побоев после отгребания после того как nagios ничего не сказал после того как проблемы уже были херзнаетсколько времени, так вот после всего этого оказалось, что в некоторых случаях плагин check_ntp_time статус показывает так (горит зеленым):

NTP OK: Offset 0.0008825864061 secs

, а в некоторых так(и сука тоже горит зеленым):

NTP OK: Offset unknown

Ну я же не смотрю на зеленое, система мониторинга и нужна падла для того, чтоб привлекать внимание к проблемным местам правильным способом...

Во-о-о-от. А там разбалансы по 10 минут.....

Собственно, в результате было выяснено, что существует незакрытый баг (по крайней мере все так говорят) в этом плагине, который тянется из версии в версию. На данный момент доступна версия 1.5, и в ней баг тоже присутствует.

В ходе разборок было выяснено, что офсет не проверяется на серверах, где версия ntp стоит выше, чем 4.2.4p8-1.3.28, это SuSE Linux Enterprise Server Service Pack 3 64bit (ntp-4.2.4p8-1.22.1.x86_64.rpm)

Проблема была решена понижением версии пакета ntp до ntp-4.2.4p8-1.3.28.

На всякий случай конфиги.

Сервер NTP

server 127.127.1.0
fudge  127.127.1.0 stratum 10
server ua.pool.ntp.org iburst
server pl.pool.ntp.org iburst
server se.pool.ntp.org iburst
server si.pool.ntp.org iburst
server uk.pool.ntp.org iburst
server fi.pool.ntp.org iburst
server ie.pool.ntp.org iburst
server ru.pool.ntp.org iburst
driftfile /var/lib/ntp/drift/ntp.drift
logfile   /var/log/ntp
logconfig =all
disable auth
disable monitor

Клиент NTP (по сути тоже сервер, но время берет из сервера выше, поэтому клиент)

server 127.127.1.0
fudge  127.127.1.0 stratum 10
server 10.77.11.70 prefer iburst
server 10.77.11.8 iburst
server 10.77.1.8 iburst
driftfile /var/lib/ntp/drift/ntp.drift
logfile   /var/log/ntp
logconfig =all

В /etc/sysconfig/ntp присутствует:

NTPD_FORCE_SYNC_ON_STARTUP="yes"
NTPD_FORCE_SYNC_HWCLOCK_ON_STARTUP="yes"

Читать далее

2014-03-20

Linux. Склерозник. Полезные наборы команд.

Рекурсивно подсчитает количество файлов в текущем каталоге и всех вложенных

find . -type f|wc -l

Смотрим изменения в файле в динамике

watch -n 1 -d "egrep 'High|Low' /proc/meminfo"

Делаем локальную копию сайта

wget -r -k -l 7 -p -E -nc http://www.puschitz.com

Установка проски без редактирования конфигов

export http_proxy=http://10.77.111.111:3128

Проверяем, какие слорты ОЗУ на матери заняты, какие свободны:

dmidecode -t memory


Читать далее

2014-03-05

Блокирование трафика с подсети (iptables)

Часто нужно залочить трафик с подсети на какой-то хост.
Делаем просто - на хосту, куда подсеть не должна попасть:

Блокировка диапазона ip

iptables -I INPUT -m iprange --src-range 10.77.1.1-10.77.1.254  -j DROP

Разблокирование диапазона ip

iptables -D INPUT -m iprange --src-range 10.77.1.1-10.77.1.254  -j DROP

Или аналогично с маской:

iptables -A INPUT -s 10.77.1.0/24 -j DROP
iptables -D INPUT -s 10.77.1.0/24 -j DROP

Читать далее

2014-03-04

SSH без пароля

Это реально удобно.
Реальная ситуация - есть два сервера, с одного на другой каждую ночь нужно копировать некий файл. Чтобы ничего не монтировать, не настраивать nsf или samba cisf, можно использовать scp, предварительно проведя небольшую настройку.

Итак, первый сервер adonis01. С него будет копироваться файл на второй сервер ora8t1. На обоих серверах динозаврик SLES8SP3(OpenSSH_3.4p1, SSH protocols 1.5/2.0)

ssh root@adonis01
adonis01:~ # ssh-keygen -t rsa -b4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:                                                                                           
Your identification has been saved in /root/.ssh/id_rsa.                                                               
Your public key has been saved in /root/.ssh/id_rsa.pub.                                                               
The key fingerprint is:                                                                                                
12:23:56:78::ab:cd:ef:12:ee:56:4r:58:e2:d8:d1 root@adonis01

После этого в /root/.ssh появилось 2 файла - id_rsa и id_rsa.pub

adonis01:~ # scp /root/.ssh/id_rsa.pub root@ora8t1:/root/.ssh/id_rsa_adonis01

ssh root@ora8t1
ora8t1:~ # cat /root/.ssh/id_rsa_adonis01 >> /root/.ssh/id_rsa_remote
ora8t1:~ # mcedit /etc/ssh/sshd_config

PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/id_rsa_remote
HostbasedAuthentication no
UseLogin no
ChallengeResponseAuthentication no
X11Forwarding yes
UsePrivilegeSeparation no
Subsystem       sftp    /usr/lib/ssh/sftp-server

ora8t1:~ # /etc/init.d/sshd restart

Все, настроили.
Проверяем

ssh root@adonis01
adonis01:~ # ssh ora8t1 df -hl

Должны получить нужный результат. Все, теперь для scp ничего вводить не надо - все будет работать без паролей.

Читать далее

2014-01-20

CentOS 4.9 на Citrix XenServer 6.2 SP1. Пляски с бубном...

Если бы не необходимость переехать с VMWare ESXi Server на Citrix XenServer 6.2, никаких плясок с бубнами не было бы. А так...

Короче, нужно запустить Oracle 9iR2 на виртуальной машине linux. Как известно, варианта 2 - SLES9 либо CentOS4(или RHEL4). SLES9 на XenServer 6.2 не поддерживается, и не ставится, сука, хотя я и люблю его очень... Но поставить не удалось. Так что вариант 1 - RH4.

Итак, во склерозник по приведению CentOS4 в нормальное состояние для решения моей задачи:

1. Графики на CentOS в виртуальной консоли НЕ БУДЕТ!!! ВЫКУСИТЕ ФСЕ!!! Пипец. Когда ставишь с шаблоном для не поддерживаемых ВМ, графика есть, но есть и проблемы с настройкой ядра и установкой XenTools, а вот из шаблона графики нет. vncserver вам в помощь, хоть он работает... Но, внимание, уровень исполнения д.б. 5, так что редайтируйте inittab, а то замахаетесь руками между уровнями прыгать...

2. После обновления до 4.9 ломается yum, выдает ошибку:

Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.main(sys.argv[1:])
  File "/usr/share/yum-cli/yummain.py", line 97, in main
    result, resultmsgs = do()
  File "/usr/share/yum-cli/cli.py", line 477, in doCommands
    return self.updatePkgs()
  File "/usr/share/yum-cli/cli.py", line 955, in updatePkgs
    self.doRepoSetup()
  File "/usr/share/yum-cli/cli.py", line 71, in doRepoSetup
    yum.YumBase.doRepoSetup(self, thisrepo=thisrepo)
  File "__init__.py", line 225, in doRepoSetup
  File "repos.py", line 523, in baseurlSetup
  File "repos.py", line 832, in getMirrorList
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 583, in urlopen
    return default_grabber.urlopen(url, **kwargs)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 741, in urlopen
    return self._retry(opts, retryfunc, url)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 702, in _retry
    r = apply(func, (opts,) + args, {})
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 740, in retryfunc
    return URLGrabberFileObject(url, filename=None, opts=opts)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 893, in __init__
    self._do_open()
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 960, in _do_open
    fo, hdr = self._make_request(req, opener)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 1059, in _make_request
    fo = opener.open(req)
  File "/usr/lib/python2.3/urllib2.py", line 326, in open
    '_open', req)
  File "/usr/lib/python2.3/urllib2.py", line 306, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.3/urllib2.py", line 502, in
    lambda r, proxy=url, type=type, meth=self.proxy_open: \
  File "/usr/lib/python2.3/urllib2.py", line 509, in proxy_open
    if '@' in host:
TypeError: iterable argument required


Полечить можно только правильно прописав proxy в /etc/yum.conf


Читать далее

2013-12-19

Linux. Используем файл как файловую систему.

Мучались мы долго с квотированием файловых ресурсов на samba, в итоге пришли к простому решению. Делаем файл ограниченного размера, подключаем его как файловую систему, шарим через самбу. Все, никто никогда за пределы файла не вылезет:

Создаем и монтируем ресурс размером 100М:

dd if=/dev/zero of=/files01/fs/alexsf.fs bs=1024 count=100000
mkfs.ext3 /files01/fs/alexsf.fs
mkdir /files01/mnt/alexsf
mount -t ext3 -o loop /files01/fs/alexsf.fs /files01/mnt/alexsf

Если нужно увеличить размер, например до 300М:

umount -l /files01/mnt/alexsf
dd if=/dev/zero of=/files01/fs/alexsf.fs bs=1 count=0 seek=300M
e2fsck -f /files01/fs/alexsf.fs
resize2fs /files01/fs/alexsf.fs
mount -t ext3 -o loop /files01/fs/alexsf.fs /files01/mnt/alexsf
e2fsck -f /files01/fs/alexsf.fs

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

Для монтирования при загрузке, в /etc/fstab добавить

/files01/fs/alexsf.fs   /files01/mnt/alexsf     ext3    acl,user_xattr  1 0

С флагами внимательно, провтыкаете - сервер не загрузится. Если стремно постоянно редактировать fstab, что придется делать на большой файлопомойке, где порядка сотни самбовских шар, можно написать скриптец и запихнуть его в init.d, ну и линки соответственно сделать для вашего уровня выполнения.

Такой вот скрипт:

#! /bin/sh
#
# Copyright (c) 2013 Filippov A.S.
#
# /etc/init.d/mntusersfs
#
### BEGIN INIT INFO
# Provides:          mntusersfs
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network
# Default-Start:    3 5
# Default-Stop:    3 5
# Description:       Mount users filesystems
### END INIT INFO

. /etc/rc.status

rc_reset

case "$1" in
  start)
        echo "Mount users filesystems..."
        mount -v -t ext3 -o loop /files01/fs/a1.ext3 /files01/mnt/a1
        mount -v -t ext3 -o loop /files01/fs/a2.ext3 /files01/mnt/a2
        mount -v -t ext3 -o loop /files01/fs/alexsf.ext3 /files01/mnt/alexsf
        rc_status -v -r
        ;;
    stop)
        echo "Umount users filesystems..."
        umount -l -v /files01/mnt/a1
        umount -l -v /files01/mnt/a2
        umount -l -v /files01/mnt/alexsf
        rc_status -v
        ;;
    status)
        mount -l -t ext3
        ;;
    restart)
        $0 stop
        $0 start
        rc_status
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart}"
        exit 1
        ;;
esac

rc_exit

В этом случае при провтыке в скрипте он просто не отработает целиком. Ошибки легче исправлять на живой системе :)

А вот так ставим на автозагрузку:

chkconfig mntusersfs on

Спустя пять дней закончились loop devices. Сейчас делаю так(номер loop увеличиваю при создании новой ФС)

dd if=/dev/zero of=/files01/userfs/admsektor.ext3 bs=1024 count=2048000
mkfs.ext3 /files01/userfs/admsektor.ext3
mkdir /files01/usermnt/admsektor
mknod -m 660 /dev/loop8 b 7 8
mount -t ext3 -o loop /files01/userfs/admsektor.ext3 /files01/usermnt/admsektor
mkdir /files01/usermnt/admsektor/admsektor
chmod 777 /files01/usermnt/admsektor/admsektor
tune2fs -m 1 /dev/loop8
tune2fs -r 1 /dev/loop8

Читать далее

2013-02-14

logrotate. Как переворачивать часто...

Про линукс.
Часто бывает, что какие-то логи растут с бешеной скоростью, терять их нельзя, давать разрастаться тоже. А logrotate в формате даты, которую дописывает к файлу при перевороте, может добавлять время с указанием не менее дня. Что делать, если надо указывать все до секунды??? А вот что(пример переворотов логов bucardo):

/var/log/bucardo/bucardo.log {
notifempty
size=100M
rotate 200
missingok
dateext
dateformat -%Y%m%d
copytruncate
olddir /var/log/arhiv/bucardo
postrotate
  CURDTT=$(date +%Y%m%d)
  CURDT=$(date +%Y-%m-%d.%H.%M.%S)
  mv /var/log/arhiv/bucardo/bucardo.log-$CURDTT /var/log/arhiv/bucardo/bucardo.log-$CURDT
  tar -cvzf /var/log/arhiv/bucardo/bucardo.log-$CURDT.tar.gz /var/log/arhiv/bucardo/bucardo.log-$CURDT
  rm /var/log/arhiv/bucardo/bucardo.log-$CURDT
endscript
}

Читать далее

2012-12-17

Большое горе, или восстановление VMFS 3

Итак, я, походу, налажал нипадецки. И надо из этой лажи выбираться...

Значит, есть ESXi 4.1. К серверу через FC адаптер подключена дисковая полка CLARiiON AX4-5.На дисковой полке создан виртуальный диск, размером 1.8Tb. Диск подключен к ESXi как datastore, и на нем создана виртуальная машина. Используется эта виртуалка для хранения бэкапов, которые еще не записаны на диски и вообще самых важных. Ну а че, это же, типа, самое надежное место хранения.... было... пока я не решил место увеличить....

Ну, да, по порядку...

Итак, места виртуалке стало не хватать (бэкапы место жрут будь здоров), и я решил, как я это делаю обычно, это самое место увеличить. В Navisphere на AX4 увеличиваю виртуальный диск на 150Gb. Все нормально, все как обычно. Потом выключаю виртуалку, открываю свойства datastore, нажимаю замечательную кнопочку "Increase", указываю максимально допустимый размер (был указан по умолчанию), ну и говорю - "Огонь, давай, родимый, расти!!!". А ESXi мне и говорит в ответ нечеловеческим голосом:

Call "HostDatastoreSystem.ExpandVmfsDatastore" for object "ha-datastoresystem" on ESXi "esxi05" failed.
Operation failed, diagnostics report: Unable to grow Filesystem, please see VMkernel log for details 


И вот тут я понял - ЖОПА!!! Еще не до конца понял, почему, но то, что это именно она я понял на 110%. Упало у меня все ниже подошвы и начал я подозревать, что хана пришла бэкапам :(

Кнопка там была всего одна, с оптимистичной надписью "ОК" ее и нажал, прекрасно понимая, что никакого ОК не будет, причем долго...

После нажатия datastore исчез, виртуалка перешла в состояние unaccessible. 

2013.01.15

Итак, итог...
Восстановить получилось примерно 35 Гиг архивов, что составило около 2% от общего количества убитых данных. Прямо скажем - негусто.

Как получилось в итоге восстановить - при помощи R-Studio, спасибо разработчикам, это мегавещь, всем советую всегда иметь под рукой на всякий случай.

Почему восстановил так мало - из-за суеты и неправильных действий на самом начальном этапе. Если бы сразу сделал все как надо, восстановил бы гораздо больше, может даже всё.

В идеале в моей ситуации нужно было действовать так:
0. Не делать никаких действий, связанных с изменениями файловой система на убитом разделе. Все участники процесса увидят его таким, какой он есть.
1. Физически переподключить убитый datastore на ESXi сервер 5-й версии и никак его не настраивать и не добавлять. Должно существовать только физическое соединение.
2. На сервере, куда подключили datastore, создать виндозную виртуалку, лучше xp, установить в нее R-Studio.
3. Найти место, куда будут восстанавливаться данные. Место должно быть джоступно по сети созданной виртуалке.
4. Добавить datastore в виртуалку как Physical LUN(Mapped Raw LUN), не создавать на нем никаких файловых систем, ничего. Винда его и видеть не должна, все увидит R-Studio.
5. Запустить R-Studio, просканировать datastore, все, что нашло - восстановить на место, созданное в п.3. Чтобы R-Studio лучше нашло потерянный данные, необходимо указать программе, что конкретно искать, иначе, если она будет искать все подряд, то и бабуина там найдет, и восстановить, только в итоге не бабуин окажется, а стадо дохлых жирафов... У меня например на разделе весом 2 TB нашло 400 EB (эктобайт, как я понимаю) каких-то zip-ов, которых там сроду небыло.

Предостережение для таких же горюющих, как и я:
НИКОГДА, НИКОГДА, НИКОГДА НИЧЕГО НЕ МЕНЯЙТЕ НА ФАЙЛОВОЙ СИСТЕМЕ, С КОТОРОЙ НУЖНО ВОССТАНОВИТЬ ДАННЫЕ. ОНА ДО ОКОНЧАНИЯ ПРОЦЕССА ВОССТАНОВЛЕНИЯ СВЯТАЯ И НЕПРИКАСАЕМАЯ КОРОВА, ДАЖЕ ДЫШАТЬ НА НЕЕ ОСТОРОЖНО. ВОССТАНОВИТЬ МОЖНО ПОЧТИ ВСЕ И ОТОВСЮДУ НЕ ПОМЕНЯВ НИ БАЙТА. ЭТО, ПРАКТИЧЕСКИ, ЗАЛОГ УДАЧНОГО ПРОЦЕССА ВОССТАНОВЛЕНИЯ.

Читать далее

2012-11-14

fsck на ходу...

Есть такой хомут в sles11 sp2 на ext3 - если собрать софтрейд 5-го уровня, на нем использовать ext3, то, частенько, линуха некорректно считает место на массиве. Не спорю - может это хомут конкретно моего железа, но все-таки есть такое дело...

Как лечить.

Ну первое - запустить чекдиск прямо во время работы системы, указав ему ничего не делать. Он вроде как и не делает ничего, но место после этого какое-то время считает правильно:

fsck -n /dev/md3

Ну и вариант второй - более правильный - перезапустить систему, с обязательной проверкой диска во время загрузки:

shutdown -Fr now

Читать далее

2012-11-13

Оптимизируем дисковое пространство linux. Изменение процента зарезервированных блоков.

По умолчанию 10% блоков каждого раздела linux резервирует. 5 для нужд суперпользователя и 5 для служебных нужд блоков. В некоторых случаях это роскошь, особенно когда место надо, а взять его негде. Тогда это соотношение можно поменять,и оставить под каждое резервирование, например, 1%.

tune2fs -m 1 /dev/
tune2fs -r 1 /dev/ 

Читать далее

2012-09-11

Красивые шрифты в linux

Достоинство и недостаток linux в том, что переставляешь его очень редко. Поэтому какие-то базовые настройки красивостей в интерфейсе просто забываешь. Ну а как тут упомнишь, если делаешь это раз в три года.

Посему пишу в этом склерознике.

Обновлялся с openSUSE 12.1 до 12.2. Результат плачевен - система не загрузилась. А с моей мутной конфигурацией дисковой подсистемы восстановить ее не получилось. Переставился. Подлил домашний каталог из бэкапа. Все хорошо, все восстановилось и работает, настройками мозг не паришь, но вот кривизна шрифтов из установки по умолчанию просто бесит.

Короче не мудрствуя лукаво делаем следующее - в настройках KDE выставляем все шрифто, кроме монощиринного в freesans 10 (в гноме делаем то же самое).
Ставим пакеты msttcorefonts и fetchmsttfonts.

 Кажется это все.

Уже не помню - два дня как переставился. Через три года, при следующей переустановке, вспомню, уточню.

Читать далее

2012-01-05

Как добавить swap файл в linux

На РЭСовских серверах сложилась такая ситуация, что резко перестало хватать swap. Раздел для этого дела создать невозможно, поэтому добрый шаман Линик кинул мне вот такой замечательный способ:

http://www.cyberciti.biz/faq/linux-add-a-swap-file-howto/

dd if=/dev/zero of=/opt/swap bs=1024 count=2097152
mkswap /opt/swap
/sbin/mkswap /opt/swap
chown root:root /opt/swap
chmod 0600 /opt/swap
/sbin/swapon /opt/swap
Читать далее

2011-06-08

Восстановление Software RAID 1 на SLES9

Давно использую софтрэйд и вот первый раз у меня реальная проблема. Выгладит она так:

deimos:/proc # lsraid -a /dev/md0
[dev 9, 0] /dev/md0 D98A9487.3EE69195.E35737F7.76A313AC online
[dev ?, ?] (unknown) 00000000.00000000.00000000.00000000 missing
[dev 8, 33] /dev/sdc1 D98A9487.3EE69195.E35737F7.76A313AC good



deimos:/proc # mdadm -D /dev/md0
/dev/md0:
Version : 00.90.00
Creation Time : Thu Aug 17 16:16:53 2006
Raid Level : raid1
Array Size : 35543680 (33.90 GiB 36.40 GB)
Device Size : 35543680 (33.90 GiB 36.40 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Wed Jun 8 17:26:02 2011
State : clean, no-errors
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0


Number Major Minor RaidDevice State
0 0 0 -1 removed
1 8 33 1 active sync /dev/sdc1
2 8 17 -1 faulty /dev/sdb1
UUID : d98a9487:3ee69195:e35737f7:76a313ac
Events : 0.269823066

deimos:/proc # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[2](F)
35543680 blocks [2/1] [_U]

unused devices:


То есть грубо говоря и мягко выражаясь сдох один из дисков находящихся в RAID массиве. Спасибо всем, кто придумал RAID, но на конторе это никак не сказалось - все программы работают, никто ничего не заметил.

Кроме меня.

Стремно что в любой момент все может грохнуться а бэкапы только суточной давности. Поэтому первым делом делаем резервную копию в двух разных вариантах - логическую и тупое копирование файлов при отключеных сервисах, которые их используют. А потом ничего не боясь начинаем тренироваться с восстановление массива.

Первым делом понадеемся на то, что винт живой и попробуем его просто удалить из массива и что-нибудь с ним сделать:

mdadm /dev/md0 -r /dev/sdb1

Перегружаемся и видим что яст его увидел (до перезагрузки не видел), что не может не радовать.
Пробуем добавить:

mdadm /dev/md0 -a /dev/sdb1

mdadm после этого покажет нам его как spare. Сначала меня это напугало, но глянув в /proc/mdstat увидел, что идет синхронизация массива:

deimos:~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[2]
35543680 blocks [2/1] [_U]
[>....................] recovery = 0.1% (70528/35543680) finish=566.6min speed=1041K/sec
unused devices:

Так что все гуд.

Нужно не забыть на всех массивах mdadm настроить на отправку сообщений по почте...



Читать далее