LVM pvmove

Сначала в компьютере был один HDD на 1Tb. На нем был установлен centos 7.5 с автоматической разбивкой диска. Т.е. использовался LVM который в centos опция по умолчанию. под root раздел автомат выделяет 50Гб — остальное — boot, swap, home.

Потом появился ssd но маленький — всего на 60Gb. поскольку оперативы много и заботится о производительности свапа смысла нет, было решено перенести на ssd только root раздел.

LVM позволяет сделать это всего несколькими командами.

Раздел на новом диске я создал с помощью gparted.

[root@adminhp ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 931,5G  0 disk
├─sda1            8:1    0   200M  0 part /boot/efi
├─sda2            8:2    0     1G  0 part /boot
└─sda3            8:3    0 930,3G  0 part
 ├─centos-root 253:0    0    50G  0 lvm  /
 ├─centos-swap 253:1    0   7,6G  0 lvm [SWAP]
 └─centos-home 253:2    0 872,7G  0 lvm /home
sdb               8:16   0 55,9G  0 disk
└─sdb1            8:17   0 47,9G  0 part

далее нужно создать Physical volume

pvcreate /dev/sdb1

далее расширить Volume group centos на новый PV

vgextend centos /dev/sdb1

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

pvmove -n root /dev/sda3 /dev/sdb1

 

 

syslog-ng

Часто возникает необходимость организовать сбор логов по сети. Для этого прекрасно подходят линукс пакеты rsyslog или syslog-ng. Т.к. я использую последний — про него и расскажу. Все это происходит в centos 7.6

установка тривиальная

yum install -y syslog-ng

главный конфиг. еще можно докладывать свои отдельные конфиги в ./conf.d

/etc/syslog-ng/syslog-ng.conf

Чтобы собрать логи по сети нужно определить в конфиге

источник
source s_udp { udp (ip ("0.0.0.0") port (514)); };

затем создать файл лога

mkdir /var/log/remote
touch /var/log/remote/diamond.log

и определить в конфиге

destination — назначение, ранее созданный лог файл
filter — фильтр входящего потока. обычно ip адрес
log — определяет откуда брать логи, чем фильтровать и куда записывать результат.

destination d_diamond { file("/var/log/remote/diamond.log"); };
filter f_diamond { netmask("192.9.200.71/255.255.255.255"); };
log { source(s_udp); filter(f_diamond); destination(d_diamond); };

 

KVM manual cloning vm

Появилась необходимость склонировать вм и запустить ее на соседнем гипервизоре. Есть несколько вариантов это сделать, я буду использовать ручной. вм источник — uvd1. склонировать нужно в uvd2.

virsh shutdown uvd1

cp /home/vm/{uvd1,uvd2}.qcow2

virsh dumpxml uvd1 > /tmp/uvd2-template.xml

sed -i /uuid/d /tmp/uvd2-template.xml
sed -i '/mac address/d' /tmp/uvd2-template.xml
sed -i s/uvd1/uvd2/ /tmp/uvd2-template.xml

srv1
virsh define /tmp/uvd2-template.xml

так как запустить ее надо на соседнем гипервизоре - копирую ее
scp ./uvd2.qcow2 192.9.30.202://home/vm/
scp /tmp/uvd2-template.xml 192.9.30.202:/root/


после чего запускаю на 
srv2
virsh define /root/uvd2-template.xml

 

minicom работа по rs232

Установка стандартная

yum -y install minicom

Первый запуск проводить с ключем -s для первоначальной настройки. Прежде чем запускать — выяснить какой файл отвечает за rs232 устройство. Это может быть /dev/ttyS0 (ttyS1,2,3) — стандартный встроенный в плату ком порт. Или /dev/ttyUSB0 в случае использования USB-COM переходников.

minicom -s
#выход из программы
Cntr + A затем Shift + J
#справка
Cntr + A затем Shift + Z

#отправить Cntr + С на подключенный хост
Cntr + С затем Cntr + С

Вся навигация по менюшкам работает стрелками. Никаких чудес.

Иногда при запуске получаешь ошибку

Устройство /dev/ttyS0 заблокировано.

в этом случае помогает убить процесс

killall -9 minicom

можно просто удалить файл «LCK..ttyS0» в директории /var/lock/.

 

 

centos 7 имя пакета по команде

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

# which ping
/bin/ping

# rpm -qf /bin/ping
iputils-20160308-10.el7.x86_64

centos 7 kvm install

В последнее время часто приходится поднимать на centos 7 хост виртуализации на базе технологии qemu-kvm. Ничего сложного, но есть некоторые моменты, которые забываются, поэтому опишу их тут, чтобы в будущем было где подглядывать.

Подготовка.

Для того чтобы в виртуалках нормально работала сеть необходимо сковырнуть NetworkManager — иначе сеть в виртуальные машины не попадет

# systemctl stop NetworkManager.service
# systemctl disable NetworkManager.service
Установка.
yum install qemu-kvm libvirt
service libvirtd start

# lsmod | grep kvm
kvm_intel              55432  0 
kvm                   346318  1 kvm_intel

virsh sysinfo
#выдают XML как и должен

yum install seabios 
#необходимо чтобы появился нужный bios

chmod 666 /dev/kvm
#по умолчанию встают неправильные права
Создание хранилища.

Хранилища могут быть разными. Сейчас меня интересует самый простой вариант — папка в файловой системе сервера.

# mkdir /home/vm
# virsh pool-define-as guest_images_dir dir - - - - "/home/vm" 
Пул guest_images_dir определён

virsh pool-list --all 
#Хранилище создано но не запущено

virsh pool-build guest_images_dir 
virsh pool-start guest_images_dir 
virsh pool-autostart guest_images_dir 

#проверить
virsh pool-info guest_images_dir
Настройка сети.

Есть много вариантов настройки, но у меня пока используется только бридж. Идея в том, что необходимо создать виртуальный бридж интерфейс, перенести настройки ip из физического интерфейса в новый виртуальный. В физический интерфейс добавить MASTER=br0 (SLAVE=br0 если участвуют больше одного интерфейса)

DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="static"
IPADDR=XXX.XXX.XXX.XXX
GATEWAY=XXX.XXX.XXX.XXX
DNS1="XXX.XXX.XXX.XXX"
DNS2="XXX.XXX.XXX.XXX"
MTU="1500"
NETMASK="255.255.255.0"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
NAME="System br0"


DEVICE="eth0"
BOOTPROTO="none"
HOSTNAME="hostname"
HWADDR="XX:XX:XX:XX:XX:XX"
MTU="1500"
ONBOOT="yes"
TYPE="Ethernet"
NAME="System eth0"
MASTER=br0
BRIDGE="br0"

проверить и поправить iptables (если используется)

brctl show

iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
service iptables save
service iptables restart

 

tar gz

Распаковка архива tar.gz
tar -xvf /path/to/archive.tar.gz

-x — распаковка
-v — визуализация процесса
-f — путь в файлу архива

Создание архива
tar -cvzf files.tar.gz ~/files

-с — упаковать
-z — сжать зипом

Просмотр содержимого архива
tar -tf  archive.tar

Извлечь часть архива

Порой из tar-архивов (.tar, .tar.gz, .tar.bz2) очень больших объемов требуется извлечь далеко не все содержимое, а лишь несколько определенных файлов. В таких случаях разархивировать исходный tar целиком нецелесообразно, поскольку не только потребует заметных ресурсов (в первую очередь, это нагрузка на диск), но и может занять продолжительное время.

Разумеется, авторы tar предусмотрели возможность извлечения из архива лишь указанных объектов. Все довольно тривиально — достаточно перечислить нужные файлы в качестве аргументов tar после самого имени архива. Например:

tar -xf archive.tar myfile1 dir2/myfile2

Эта команда извлечет из архива archive.tar файлы myfile1 и dir2/myfile2. В случае со сжатым архивом все делается аналогичным образом — добавляются соответствующие ключи: «z» для .gz (gzip) и «j» для .bz2 (bzip2).

 

источники

Работа с архиватором tar в Linux

linux open ports

Довольно часто возникает необходимость посмотреть какие порты открыты. В линуксе это можно сделать тремя способами.

netstat

netstat -ntulp
  • -l или —listening — посмотреть только прослушиваемые порты
  • -p или —program — показать имя программы и ее PID
  • -t или —tcpпоказать tcp порты
  • -u или —udp показать udp порты
  • -n или —numeric показывать ip адреса в числовом виде

lsof

lsof -i

или проверить конкретный порт

lsof -i|grep 80

nmap

nmap localhost

С ним связано много интересного.
подробней тут