понедельник, 22 июля 2013 г.

LVM snapshot

Резервное копирование с помощью snapshot

создаем snapshot именуемый dns_master_snapshot с LV раздела /dev/vg_main/lv_dns_master с таблицей исключений объемом 1Гб

lvcreate -s -L 1G -n dns_master_snapshot /dev/vg_main/lv_dns_master

 1Гб это кол-во данных допустимых для снимка до потери его согласованности

  --- Logical volume ---
  LV Name                /dev/vg_main/dns_master_snapshot
  VG Name                vg_main
  LV UUID                jqKaDm-UKE8-1Ufb-rg0v-pIsA-yIoM-hbklOE
  LV Write Access        read/write
  LV snapshot status     active destination for /dev/vg_main/lv_dns_master
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  COW-table size         1.00 GiB
  COW-table LE           256
  Allocated to snapshot  0.00%
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:5

по мере модификации данных в исходном LV разделе, место в COW-table снапшота будет постепенно заканчиваться

копируем данные с помощью dd (так же если раздел доступен как файловая система, можно его примонтировать и заархивировать tar'ом)

[root@laborant /]# dd if=/dev/vg_main/dns_master_snapshot of=/mnt/backup/dns_master.backup
20971520+0 records in
20971520+0 records out
10737418240 bytes (11 GB) copied, 122.834 s, 87.4 MB/s

четверг, 30 мая 2013 г.

Virsh

virsh destroy domain-id - немедленно погасить ВМ (аналог отключения машины по питанию). Рабочие данные машинки при этом не удаляются

virsh undefine domain-id - удаление конфига машинки. Не останавливает работу ВМ, если она запущена в момент удаления

virsh shutdown domain-id - штатное выключение ВМ



пятница, 8 марта 2013 г.

Обновление ядра без аппаратной перезагрузки сервера

Работает как на Debian-based, так и на RedHat-based дистрибутивах.

устанавливаем новое ядро и kexec-tools

apt-get install linux-image-<new_version> kexec-tools

загружаем  новое ядро

kexec -l /boot/vmlinuz-<new_version> --initrd=/boot/initrd.img-<new_version> --append="`cat /proc/cmdline`"

и запускаем

kexec -e

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

uname -a

В результате подобной загрузки нового ядра все запущенные на сервере процессы перезапустятся.
Так же, если новое ядро после инсталляции не прописалось в /boot/grub/menu.lst или /boot/grub/grub.cfg, то exec-utils во время своей установки пропишет его туда самостоятельно наряду со всеми остальными найденными им ядрами (в любом случае стоит проверить корректность grub конфига, перед выполнением kexec -e).

суббота, 16 февраля 2013 г.

Файлы устройств

Файлы устройств существуют двух типов: файлы байт-ориентированного устройства и блочно-ориентированного устройства.

root@master:/dev# file urandom
urandom: character special
root@master:/dev# file sda
sda: block special
root@master:/dev#

Создаются с помощью команды:

mknod <имя_файла> <тип_устройства> <старший номер> <младший номер>

Тип:

b - блочно-ориентированное устройство
с - байт-ориентированное устройство
u - байт-ориентированное устройство (unbuffered)

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

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