qemu qcow2 ресайз

Posted in Новости on 21 февраля, 2023 by admin

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

# qemu-img info vm1.qcow2
image: vm1.qcow2
file format: qcow2
virtual size: 1.95 PiB (2191180645269504 bytes)
disk size: 30.7 GiB
cluster_size: 65536
backing file: /srv/default_storage/centos7-base
backing file format: qcow2
Format specific information:
    compat: 0.10
    compression type: zlib
    refcount bits: 16

Стандартными средствами qemu-img resize это исправить можно, но крайне долго:

# time qemu-img resize vm1.qcow2 --shrink -1T
Image resized.

real    0m4.257s
user    0m2.515s
sys     0m0.609s

Поэтому я пошел другим путем и просто по сути пересоздал диск с нуля, перекатив на него мои данные:

  1. mv vm1.qcow2 vm1.qcow2.old
  2. qemu-img create -f qcow2 -o preallocation=metadata vm1.qcow2 20G
  3. virt-resize vm1.qcow2.old vm1.qcow2

Получилось что-то в районе 2-3 минут.

add binary file to rpm package CentOS 7

Posted in Новости on 13 сентября, 2019 by admin

Понадобилось создать rpm пакет для node_exporter ( компонент мониторинга Prometheus ). Как обычно с rpmbuild создал окружение и вышел такой spec:

Name:           prometheus-node-exporter
Version:        0.5.0
Release:        1
Summary:        Prometheus node_exporter official release rpm package

Group:          PT
BuildArch:      x86_64
License:        GPL
URL:            https://github.com/
Source:         prometheus-node-exporter-0.5.0.tar.gz

%description
Prometheus official node_exporter release

%prep
%setup -q
%build
%install
install -m 0755 -d $RPM_BUILD_ROOT/usr/local/bin
#install -m 0755 node_exporter $RPM_BUILD_ROOT/usr/local/bin/node_exporter
cp node_exporter $RPM_BUILD_ROOT/usr/local/bin/node_exporter

%files
/usr/local/bin/node_exporter

%changelog
* Fri Sep 13 2019 Nikolai Vaganov 0.5.0
  - Initial rpm release for official source

Но незадача пришла на этапе сборки пакета в виде ошибки Binary ID :

# rpmbuild -bb SPECS/prometheus-node-exporter.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.CYr1Tz
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf prometheus-node-exporter-0.5.0
+ /usr/bin/tar -xf -
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/prometheus-node-exporter-0.5.0.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd prometheus-node-exporter-0.5.0
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.t2q8zQ
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd prometheus-node-exporter-0.5.0
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.hipri7
+ umask 022
+ cd /root/rpmbuild/BUILD
+ '[' /root/rpmbuild/BUILDROOT/prometheus-node-exporter-0.5.0-1.x86_64 '!=' / ']'
+ rm -rf /root/rpmbuild/BUILDROOT/prometheus-node-exporter-0.5.0-1.x86_64
++ dirname /root/rpmbuild/BUILDROOT/prometheus-node-exporter-0.5.0-1.x86_64
+ mkdir -p /root/rpmbuild/BUILDROOT
+ mkdir /root/rpmbuild/BUILDROOT/prometheus-node-exporter-0.5.0-1.x86_64
+ cd prometheus-node-exporter-0.5.0
+ install -m 0755 -d /root/rpmbuild/BUILDROOT/prometheus-node-exporter-0.5.0-1.x86_64/usr/local/bin
+ cp node_exporter /root/rpmbuild/BUILDROOT/prometheus-node-exporter-0.5.0-1.x86_64/usr/local/bin/node_exporter
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /root/rpmbuild/BUILD/prometheus-node-exporter-0.5.0
extracting debug info from /root/rpmbuild/BUILDROOT/prometheus-node-exporter-0.5.0-1.x86_64/usr/local/bin/node_exporter
*** ERROR: No build ID note found in /root/rpmbuild/BUILDROOT/prometheus-node-exporter-0.5.0-1.x86_64/usr/local/bin/node_exporter
error: Bad exit status from /var/tmp/rpm-tmp.hipri7 (%install)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.hipri7 (%install)

При этом если поменять бинарник на обычный текстовый файл sh или txt , то таких проблем не наблюдалось.

В итоге был найден фикс. Требуется в самый верх spec файла добавить :

%define debug_package %{nil}

и сборка прошла успешно !!!!

Tags: , , ,

prometheus count by unique label

Posted in Новости on 4 сентября, 2019 by admin

count by (label_name) (metric_name)

Tags: ,

python molecule test systemd service

Posted in Новости on 2 сентября, 2019 by admin

Тестирование запущенности и автостарта systemd сервиса :

def test_service(host):
assert host.service("service_name").is_running is True
assert host.service("service_name").is_enabled is True

Tags: , , ,

python molecule systemd services inside container

Posted in Новости on 2 сентября, 2019 by admin

Чтобы systemd сервисы внутри контейнера работали корректно и корректно проверялись требуется :

  1. Поддержка systemd на машине с docker, где тестируется роль
  2. Образ с ОС, которая поддерживает systemd
  3. Добавить в molecule.yml волюм, привилегии и init:
    privileged: true
    command: "/usr/sbin/init"
    volume_mounts:
    - "/sys/fs/cgroup:/sys/fs/cgroup:ro"

Tags: , , ,