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).
источники
ssh login withaout password
Чтобы настроить ssh вход без пароля необходимо сгенерировать ключи и положить их на желаемый хост в /root/.ssh/autorized_keys
ssh-keygen
ssh-copy-id user@host
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
С ним связано много интересного.
подробней тут