vanoc.ru

Заметки

Перенос виртуального сервера на физический с созданием программного рейда

Комментариев нет

Задача: перести виртуальный почтовый сервер на физический с созданием RAID 1 (зеркало).

Имеется виртуалка на XenServer и физический сервер с двумя винтами по 1 Тб

Установим Centos minimal на один из винтов и поделим диск на разделы

/dev/sda1 /boot
/dev/sda2 swap
/dev/sda3 /

Теперь установим mdadm и vim (обожаю этот текстовый редактор)

yum install mdadm vim

Теперь надо подготовить второй диск для настройки на нем рейда. Скопируем схему разбивки диска с /dev/sda

sfdisk -d /dev/sda | sfdisk /dev/sdb

Что получилась можно посмотреть командой fdisk -l

Теперь сменим тип разделов /dev/sdb на «Linux raid autodetect» Для этого выполняем

fdisk /dev/sdb

жмем ‘t’, затем ‘1’ (первый раздел диска), затем ‘fd’
Повторяем все заново для каждого из разделов.
Сохраняем изменения ‘w’

В итоге смотрим что получилось уже знакомой командой

fdisk -l

Диск /dev/sdb готов. Можно на нем создать деградированный рейд, т.к. пока будем использовать только один диск.

mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3

Смотрим что получилось

cat /proc/mdstat

Отлично. Теперь создадим файловую систему.

mkfs.ext4 /dev/md0
mkswap /dev/md1
mkfs.ext4 /dev/md2

Следующим этапом будем переносить данные с виртуальной машины.
Для начала монтируем разделы

mount /dev/md2 /mnt
mkdir /mnt/boot
mount /dev/md0 /mnt/boot

Остается скопировать файлы виртуальный машины на физическую

rsync -av --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/mnt/* /* /mnt

Теперь подготовим систему для chroot

mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /run /mnt/run

Собственно заходим

chroot /mnt/

Первым делом надо подготовить fstab

blkid /dev/md*
/dev/md0: UUID="your-UUID" TYPE="ext4"
/dev/md1: UUID="your-UUID" TYPE="swap"
/dev/md2: UUID="your-UUID" TYPE="ext4"
vim /etc/fstab
UUID=your-UUID / ext4 defaults 1 1
UUID=your-UUID /boot ext4 defaults 1 1
UUID=your-UUID swap swap defaults 0 0

Создадним конфиг файл mdadm

mdadm --detail --scan > /etc/mdadm.conf

Подготовим initramfs. Здесь могут быть два варианта:

1. у вас системы, виртуальная и та, с которой вы загрузились, обновлены и у них одно и то же ядро. Тогда можно выполнить

cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bck
dracut --mdadmconf --fstab --add="mdraid" --filesystems "xfs ext4 ext3 tmpfs devpts sysfs proc" \
--add-drivers="raid1" --force /boot/initramfs-$(uname -r).img $(uname -r) -M

2. boot у систем различный. Нам нужно перетащить boot с виртуалки. Поэтому на действующей виртуальной машине смотрим «uname -r» и подставляем в предыдущую команду вместо $(uname -r)

Теперь подправим grub

vim /etc/default/grub
GRUB_CMDLINE_LINUX="rd.auto rd.auto=1 rhgb quiet"
GRUB_PRELOAD_MODULES="mdraid1x"

и создадим новый grub.cfg

grub2-mkconfig -o /boot/grub2/grub.cfg

Устанавливаем

grub2-install /dev/sdb

Перезагружаемся. Нам надо загрузиться с /dev/sdb, поэтому смотрим в биосе с какого диска загружаться.

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

Теперь проверяем.
Подключен ли swap

swapon -s
Filename Type Size Used Priority
/dev/md1 partition 12279804 0 -1

Смонтированы ли остальные разделы

mount -t ext4
/dev/md2 on / type ext4 (rw,relatime,data=ordered)
/dev/md0 on /boot type ext4 (rw,relatime,data=ordered)

Смотрим состояние рейда

cat /proc/mdstat

Осталось всего ничего. Подготовить /dev/sda и добавить в рейд

Сменим тип разделов /dev/sda на «Linux raid autodetect» Для этого выполняем

fdisk /dev/sda

жмем ‘t’, затем ‘1’ (первый раздел диска), затем ‘fd’
Повторяем все заново для каждого из разделов.
Не забываем сохранить изменения ‘w’

Подключаем в рейд

mdadm --manage /dev/md0 --add /dev/sda1
mdadm --manage /dev/md1 --add /dev/sda2
mdadm --manage /dev/md2 --add /dev/sda3

Следим за ребилдом

watch "cat /proc/mdstat"

Установим grub на /dev/sda

grub2-install /dev/sda

Собственно на этом все.

Можно добавить в mdamd.conf уведомление руту

vim /etc/mdadm.conf
MAILADDR root

И в /etc/aliases указываем куда отправлять

root= мой@емэйл.ру

Обновляем алиасы

newaliases

Спасибо cmatthew.net

8 апреля 2016 ~ 11:15


Рубрики linux

Метки ,

XenServer увеличение размера диска виртуальной машины

Комментариев нет

Делаем снапшот. В процессе он меня несколько раз спас.

По сути этот пост заметка на память, т.ч. ниже много копипаста с консоли.

Останавливаем виртуальную машину, увеличиваем размер диска в XenCenter и запускаем виртуалку.

Что имеем. В корне место почти закончилось.

% df -h
Файловая система        Размер Использовано  Дост Использовано% Cмонтировано в
/dev/mapper/centos-root   6,7G         6,7G  1,4M          100% /
devtmpfs                  909M            0  909M            0% /dev
tmpfs                     918M            0  918M            0% /dev/shm
tmpfs                     918M         8,3M  910M            1% /run
tmpfs                     918M            0  918M            0% /sys/fs/cgroup
/dev/xvda1                497M         216M  282M           44% /boot
% fdisk /dev/xvda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

28 октября 2015 ~ 16:17


Рубрики linux

Метки ,

Уведомление о завершении команды в консоли

Комментариев нет

Скрипт для zsh позволяющий вывести уведомление о завершений команды, если терминал не открыт и команда выполнялась больше 10 секунд.

function active-window-id {
echo `xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}'`
}

# end and compare timer, notify-send if needed
function notifyosd-precmd() {
if [ ! -z "$cmd" ]; then
cmd_end=`date +%s`
((cmd_time=$cmd_end - $cmd_start))
fi
if [ ! -z "$cmd" -a $cmd_time -gt 10 -a "$window_id_before" != "$(active-window-id)" ]; then
kdialog --title "$cmd_basename completed" --passivepopup "\"$cmd\" took $cmd_time seconds"
unset cmd
fi
}

# make sure this plays nicely with any existing precmd
precmd_functions+=( notifyosd-precmd )

# get command name and start the timer
function notifyosd-preexec() {
window_id_before=$(active-window-id)
cmd=$1
cmd_basename=${cmd[(ws: :)1]}
cmd_start=`date +%s`
}

# make sure this plays nicely with any existing preexec
preexec_functions+=( notifyosd-preexec )

Скрипт для КДЕ, т.к. используется kdialog для вывода уведомления. Оригинал на гитхабе. Там же для гнома.

Код сохраняем в файл .notifyosd.zsh и добавляем в .zshrc строку

[ -e ~/.notifyosd.zsh ] && . ~/.notifyosd.zsh

17 августа 2015 ~ 21:50


Рубрики linux

Метки

zsh dnf autocomplete

Комментариев нет

Добавляем в свой .zshrc

compdef dnf=yum

и запускаем консоль заново.

23 июля 2015 ~ 11:23


Рубрики fedora

Метки ,

настройка openDKIM в centos 7

Комментариев нет

Установим opendkim
yum install opendkim

Нужно в /etc/opendkim.conf поправить Mode и раскомментировать строки
Mode sv
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable

Создадим ключи
mkdir /etc/opendkim/keys/example.com
chmod 750 /etc/opendkim/keys/example.com
opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com
chmod 640 /etc/opendkim/keys/example.com/*

Допишем в /etc/opendkim/KeyTable

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private

и в /etc/opendkim/SigningTable
*@example.com default._domainkey.example.com

Перезапустим opendkim
systemctl restart opendkim.service

Осталось научить postfix работать с dkim и указать для домена TXT запись.

Добавляем в /etc/postfix/main.cf

#DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

затем
postfix restart

Добавляем TXT запись.
Берем содержимое файла /etc/opendkim/keys/example.com/default.txt

default._domainkey      IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=.................." )  ; ----- DKIM key default for example.com

Проверяем
dig txt default._domainkey.example.com

Отправляем тестовое письмо и наслаждаемся результатом.
opendkim

18 января 2015 ~ 22:41


Рубрики linux

Метки , ,

rsyslog, samba, full audit

Комментариев нет

После настройки самбы и дополнительного full.audit следует озаботиться тем, куда собственно этот аудит будет записываться.

Как рабочий пример:

# less /etc/samba/smb.full_audit.conf
         full_audit:priority = NOTICE
         full_audit:facility = LOCAL5
         full_audit:success = mkdir rmdir read write rename unlink chmod fchmod 
chown fchown ftruncate lock symlink readlink link mknod close open
         full_audit:failure = none
         full_audit:prefix = |[%S]|%u|%I

Тут важна строка full_audit:facility = LOCAL5

Настраиваем /etc/rsyslog.conf
Находим строку
*.info;mail.none;authpriv.none;cron.none /var/log/messages
и добавляем local5.none дабы в /var/log/messages не заносился аудит самбы
*.info;mail.none;authpriv.none;cron.none;local5.none /var/log/messages
Указываем куда записывать аудит
local5.* /var/log/samba/samba.audit

Дабы применились изменения перезапускаем rsyslog
service rsyslog restart

Однако в /var/log/messages скорее всего появится очень большое количество таких строк
rsyslogd-2177: imuxsock begins to drop messages from pid 194326 due to rate-limiting
rsyslogd-2177: imuxsock lost 684 messages from pid 194326 due to rate-limiting

Это связано с тем, что rsyslog по умолчанию для одного пида записывает в логи не более 200 записей в течении 5 секунд. Т.е. если пользователь заходит в самба шару с большим количеством файлов, то записей в samba.audit может быть больше 200, т.о. появляется запись в /var/log/messages о том, что rsyslog отбросил остальные строки.

Есть три варианта решения (по крайней мере я столько нашел)

1. Отключить ограничение. Добавляем в /etc/rsyslog.conf
$SysSock.RateLimit.Interval 0

2. Поиграться с интервалом и разрешенным чилом записей
например:
$SysSock.RateLimit.Interval 10
$SysSock.RateLimit.Burst 500

3. Убрать записи «imuxsock begins to drop messages бла бла бла» из /var/log/messages
Решается добавлением в /etc/rsyslog.conf после #### RULES ####

:msg, regex, "imuxsock begins to drop messages from pid .* due to rate-limiting" ~
:msg, regex, "imuxsock lost .* messages from pid .* due to rate-limiting" ~

Подробнее здесь

Дабы применились изменения перезапускаем rsyslog
service rsyslog restart

11 декабря 2014 ~ 17:09


Рубрики linux

Метки , ,

настройка brother DCP-7057R в arch linux

Комментариев нет

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

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

lsusb
Bus 003 Device 004: ID 04f9:0273 Brother Industries, Ltd

Добавим правило в udev
sudo vim /etc/udev/rules.d/10-usbprinter.rules
ATTR{idVendor}=="04f9", ATTR{idProduct}=="0273", MODE:="0664", GROUP:="lp"

и добавим пользователя в группу lp.

Везде пишут нужно запретить загрузку модуля usblp
sudo vim /etc/modprobe.d/blacklist.conf
blacklist usblp

Качаем драйвера с официального сайта Generic LPR printer driver (rpm package и Generic CUPSwrapper printer driver (rpm package).

Копируем содержимое скачанных rpm пакетов в соответствующие директории. В принципе достаточно только /opt/ (т.к. только в ней были файлы)

Правим файл /opt/brother/Printers/BrGenML1/inf/setupPrintcap (я не знаю нужен ли этот файл при печати, но тем не менее по дефолту путь не правильный) Нужно изменить строку
PRINTCAP_NAME=/etc/printcap.local
на
PRINTCAP_NAME=/etc/printcap

Так же требуется сделать симлинк на фильтр
sudo ln -s /opt/brother/Printers/BrGenML1/cupswrapper/brother_lpdwrapper_BrGenML1 /usr/lib/cups/filter

Затем (пере)запускаем cups
sudo systemctl restart cups.service

Заходим http://localhost:631/ Добавляем принтер (должен появиться в списке), указываем использовать ppd файл (/opt/brother/Printers/BrGenML1/cupswrapper/brother-BrGenML1-cups-en.ppd)

Настройка сканера

yaourt -S brscan4
или если сетевой
yaourt -S brscan4-network

21 октября 2014 ~ 13:29


Рубрики arch

Метки

Outlook Не удается создать файл

Комментариев нет

outlook

Проблема во временных файлах, а именно в том, что они не удаляются автоматически. В связи с этим есть забавный баг (а может это фича :) Outlook не может открыть файл письма, если уже приходили письма с файлами имеющими такое же название больше 99 раз (вернее, если эти файлы открывались) Все последующие файлы с подобным именем открываться и сохраняться не будут.

Лечится так. Заходим в реестр:
HKEY_CURRENT_USER\Software\Microsoft\Office\НОМЕР_ВЕРСИИ\Outlook\Security
Сморим путь указанный в OutlookSecureTempFolder и удаляем все содержимое данной директории.

5 сентября 2014 ~ 12:44


Рубрики windows

Метки

подключиться к удаленному серверу по ssh в Dolphin KDE

Комментариев нет

fish://name@server

fish в данном случае используется для ssh подключения (такие блин дела)

4 августа 2014 ~ 17:44


Рубрики linux

Метки ,

excel пароль на редактирование

Один комментарий

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

15 июля 2014 ~ 18:11


Рубрики windows

Метки ,