Привет! Недавно столкнулся с странными проблемами, связанными с lvm2. При запуске таких утилит, как "lvs", "vgs", "lvcreate" и др. из скрипта запуска контейнера или с использованием "nohup" появляются ошибки:
Код:
root@kvmtest:~# nohup lvs >lvs.log
nohup: ignoring input and redirecting stderr to stdout
root@kvmtest:~# nohup vgs >vgs.log
nohup: ignoring input and redirecting stderr to stdout
root@kvmtest:~# cat lvs.log vgs.log
stdin: fdopen failed: Invalid argument
stdin: fclose failed: Invalid argument
stdin: fdopen failed: Invalid argument
stdin: fdopen failed: Invalid argument
stdin: fclose failed: Invalid argument
stdin: fdopen failed: Invalid argument
Пример скрипта /etc/pve/openvz/100.mount:
Код:
#!/bin/bash
PATH="/bin:/usr/bin:/sbin:/usr/sbin"
lvs -vvv -d || exit $?
vgs -vvv -d || exit $?
exit 0
Сообщения при запуске OpenVZ:
Код:
root@kvmtest:~# vzctl start 100
Starting container ...
File descriptor 3 (/var/log/vzctl.log) leaked on lvs invocation. Parent PID 2733: /bin/bash
File descriptor 4 (/dev/vzctl) leaked on lvs invocation. Parent PID 2733: /bin/bash
File descriptor 5 (pipe:[35519]) leaked on lvs invocation. Parent PID 2733: /bin/bash
File descriptor 6 (pipe:[35519]) leaked on lvs invocation. Parent PID 2733: /bin/bash
File descriptor 7 (/dev/null) leaked on lvs invocation. Parent PID 2733: /bin/bash
stdin: fdopen failed: Invalid argument
stdin: fclose failed: Invalid argument
stdin: fdopen failed: Invalid argument
Ошибка при выполнении mount скрипта /etc/pve/openvz/100.mount
Ожидаемый вывод (работает без "nohup"):
Код:
root@kvmtest:~# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
data pve -wi-ao--- 4.50g
root pve -wi-ao--- 2.50g
swap pve -wi-ao--- 1.25g
root@kvmtest:~# vgs
VG #PV #LV #SN Attr VSize VFree
pve 1 3 0 wz--n- 9.50g 1.25g
uname -a:
Код:
Linux kvmtest 2.6.32-26-pve #1 SMP Mon Oct 14 08:22:20 CEST 2013 x86_64 GNU/Linux
lsb_release -a:
Код:
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.2 (wheezy)
Release: 7.2
Codename: wheezy
pveversion -v
Код:
proxmox-ve-2.6.32: 3.1-114 (running kernel: 2.6.32-26-pve)
pve-manager: 3.1-20 (running version: 3.1-20/c3aa0f1a)
pve-kernel-2.6.32-26-pve: 2.6.32-114
pve-kernel-2.6.32-23-pve: 2.6.32-109
lvm2: 2.02.98-pve4
clvm: 2.02.98-pve4
corosync-pve: 1.4.5-1
openais-pve: 1.1.4-3
libqb0: 0.11.1-2
redhat-cluster-pve: 3.2.0-2
resource-agents-pve: 3.9.2-4
fence-agents-pve: 4.0.0-2
pve-cluster: 3.0-8
qemu-server: 3.1-8
pve-firmware: 1.0-23
libpve-common-perl: 3.0-7
libpve-access-control: 3.0-7
libpve-storage-perl: 3.0-17
pve-libspice-server1: 0.12.4-2
vncterm: 1.1-4
vzctl: 4.0-1pve4
vzprocps: 2.0.11-2
vzquota: 3.1-2
pve-qemu-kvm: 1.4-17
ksm-control-daemon: 1.1-1
glusterfs-client: 3.4.1-1
Я тестировал на чистой установке Proxmox 3.1 (wheezy 7.1) под KVM, а также после обновления пакетов (wheezy 7.2) — результат одинаковый. То же самое происходит и на продакшн-кластере (ядро pve-kernel-2.6.32-23-pve: 2.6.32-109). Единственное, что помогает — откат lvm2 до версии 2.02.95-8, но считаю, что это не правильное решение (например, clvm зависит от lvm2).
Итого, простые шаги для воспроизведения проблемы:
установить чистый Proxmox 3.1 на KVM или bare-metal
nohup lvs >lvs.log ; cat lvs.log
Код:
root@kvmtest:~# nohup lvs >lvs.log
nohup: ignoring input and redirecting stderr to stdout
root@kvmtest:~# nohup vgs >vgs.log
nohup: ignoring input and redirecting stderr to stdout
root@kvmtest:~# cat lvs.log vgs.log
stdin: fdopen failed: Invalid argument
stdin: fclose failed: Invalid argument
stdin: fdopen failed: Invalid argument
stdin: fdopen failed: Invalid argument
stdin: fclose failed: Invalid argument
stdin: fdopen failed: Invalid argument
Пример скрипта /etc/pve/openvz/100.mount:
Код:
#!/bin/bash
PATH="/bin:/usr/bin:/sbin:/usr/sbin"
lvs -vvv -d || exit $?
vgs -vvv -d || exit $?
exit 0
Сообщения при запуске OpenVZ:
Код:
root@kvmtest:~# vzctl start 100
Starting container ...
File descriptor 3 (/var/log/vzctl.log) leaked on lvs invocation. Parent PID 2733: /bin/bash
File descriptor 4 (/dev/vzctl) leaked on lvs invocation. Parent PID 2733: /bin/bash
File descriptor 5 (pipe:[35519]) leaked on lvs invocation. Parent PID 2733: /bin/bash
File descriptor 6 (pipe:[35519]) leaked on lvs invocation. Parent PID 2733: /bin/bash
File descriptor 7 (/dev/null) leaked on lvs invocation. Parent PID 2733: /bin/bash
stdin: fdopen failed: Invalid argument
stdin: fclose failed: Invalid argument
stdin: fdopen failed: Invalid argument
Ошибка при выполнении mount скрипта /etc/pve/openvz/100.mount
Ожидаемый вывод (работает без "nohup"):
Код:
root@kvmtest:~# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
data pve -wi-ao--- 4.50g
root pve -wi-ao--- 2.50g
swap pve -wi-ao--- 1.25g
root@kvmtest:~# vgs
VG #PV #LV #SN Attr VSize VFree
pve 1 3 0 wz--n- 9.50g 1.25g
uname -a:
Код:
Linux kvmtest 2.6.32-26-pve #1 SMP Mon Oct 14 08:22:20 CEST 2013 x86_64 GNU/Linux
lsb_release -a:
Код:
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.2 (wheezy)
Release: 7.2
Codename: wheezy
pveversion -v
Код:
proxmox-ve-2.6.32: 3.1-114 (running kernel: 2.6.32-26-pve)
pve-manager: 3.1-20 (running version: 3.1-20/c3aa0f1a)
pve-kernel-2.6.32-26-pve: 2.6.32-114
pve-kernel-2.6.32-23-pve: 2.6.32-109
lvm2: 2.02.98-pve4
clvm: 2.02.98-pve4
corosync-pve: 1.4.5-1
openais-pve: 1.1.4-3
libqb0: 0.11.1-2
redhat-cluster-pve: 3.2.0-2
resource-agents-pve: 3.9.2-4
fence-agents-pve: 4.0.0-2
pve-cluster: 3.0-8
qemu-server: 3.1-8
pve-firmware: 1.0-23
libpve-common-perl: 3.0-7
libpve-access-control: 3.0-7
libpve-storage-perl: 3.0-17
pve-libspice-server1: 0.12.4-2
vncterm: 1.1-4
vzctl: 4.0-1pve4
vzprocps: 2.0.11-2
vzquota: 3.1-2
pve-qemu-kvm: 1.4-17
ksm-control-daemon: 1.1-1
glusterfs-client: 3.4.1-1
Я тестировал на чистой установке Proxmox 3.1 (wheezy 7.1) под KVM, а также после обновления пакетов (wheezy 7.2) — результат одинаковый. То же самое происходит и на продакшн-кластере (ядро pve-kernel-2.6.32-23-pve: 2.6.32-109). Единственное, что помогает — откат lvm2 до версии 2.02.95-8, но считаю, что это не правильное решение (например, clvm зависит от lvm2).
Итого, простые шаги для воспроизведения проблемы:
установить чистый Proxmox 3.1 на KVM или bare-metal
nohup lvs >lvs.log ; cat lvs.log
