Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    [РЕШЕНО] Проблемы с завершением работы/загрузкой файловых систем nfs/glusterfs и HA контейнеров / порядок служб systemd!

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    [РЕШЕНО] Проблемы с завершением работы/загрузкой файловых систем nfs/glusterfs и HA контейнеров / порядок служб systemd!, Proxmox Виртуальная Среда
     
    Apollon77
    Guest
    #1
    0
    25.06.2020 14:53:00
    Привет, немного информации о моем оборудовании: у меня кластер Intel NUC с SSD, и большая часть дискового пространства — это общая файловая система "glusterfs", где хранятся все ВМ и образы контейнеров LXC. Поскольку контейнеры не могут по умолчанию располагаться на GlusterFS, я нашел идеи на форуме создать "директорию хранения на точке монтирования gluster-fs" и использовать это для контейнеров. Я пошел этим путем. Я использую самую свежую версию proxmox pve "community" (только что обновил вчера). Теперь о моей проблеме: ВМ работают прекрасно, они корректно выключаются при отключении/перезагрузке сервера и стартуют как следует. Проблем нет! Но с контейнерами могут возникнуть проблемы при выключении и в основном при запуске. Проблема с выключением: когда я правильно читаю syslog, то вижу, что размонтирование происходит "слишком рано", и из-за этого директория становится недоступной... тогда контейнер оказывается в состоянии "не корректно остановлен из-за ошибок ввода-вывода". Честно говоря, я не ждал, как долго он будет убиваться, но kill -9 процесса lxc (то есть самый жесткий способ) решил проблему, но это не совсем приятно. Не может быть, чтобы сам glusterfs пропал, так как одна из ВМ (101) (тоже расположенная на glusterfs) остановилась успешно... только контейнер lxc вызывает проблемы (должно быть, это что-то с loop0). Логи: см. приложение. При запуске бывает наоборот, и система пытается запустить lxc, но директория еще не готова... мне нужно найти лог для этого. Я смог обойти эту проблему, увеличив количество "перезапусков" в режиме HA, и после того, как он сдается, он пробует снова. Мне кажется, что я "просто" должен добавить некоторые зависимости systemd к правильной службе pve/unmount, чтобы убедиться, что монтирования размонтируются после и стартуют до (такой флаг Wants...)... какая именно pve служба для этого подойдет? Может кто-то посоветовать, что добавить и куда? Спасибо! Инго
     
     
     
    Apollon77
    Guest
    #2
    0
    04.08.2020 11:27:00
    @Dominic Я знаю, что у тебя мало времени, но мне было бы полезно продолжить свои исследования, если ты сможешь ответить на этот вопрос: какой процесс/услуга инициирует монтирование всех мест хранения, определенных в "storage.cfg"? Это pve_guest? Или что-то другое?
     
     
     
    Dominic
    Guest
    #3
    0
    05.08.2020 13:11:00
    Некоторые сервисы определены в pve-manager/services, другие можно найти с помощью команды: ls /etc/systemd/system/mnt-pve* Пожалуйста, опубликуйте соответствующие строки из следующих команд: cat /etc/fstab
    cat /etc/pve/storage.cfg Некоторые параметры монтирования, такие как netdev, могут иметь значение, так что это должно облегчить поиск проблемы. Кроме того, это может быть интересно, потому что, похоже, я не могу воспроизвести ваши проблемы. Ваша проблема только в сообщениях, а HA работает, или HA совсем не работает? Потому что единственный раз, когда я увидел что-то, что выглядело не очень хорошо: Aug  5 12:30:47 pveA pve-ha-lrm[13809]: shutdown CT 100: UPID:pveA:000035F1:00017630:5F2A8A57:vzshutdown:100:root@pam:
    Aug  5 12:30:47 pveA kernel: [ 957.973321] blk_update_request: I/O error, dev loop0, sector 4260400 op 0x0:(READ) flags 0x3000 phys_seg 1 prio class 0
    Aug  5 12:30:47 pveA kernel: [ 957.973400] EXT4-fs warning (device loop0): htree_dirblock_to_tree:997: inode #131113: lblock 0: comm openrc: error -5 reading directory block
    Aug  5 12:30:47 pveA kernel: [ 957.973484] blk_update_request: I/O error, dev loop0, sector 4260400 op 0x0:(READ) flags 0x3000 phys_seg 1 prio class 0 когда я пытался выключить узел. Выключение тоже заняло вечность. Однако это может быть результатом какой-то предыдущей работы. Я попробовал контролируемое выключение и принудительную остановку кластерных узлов еще несколько раз, и, как и ожидалось, контейнер (ID 100) перезапускался на другом узле каждый раз. Массовый старт и остановка из GUI прошли без сучка и задоринки. Для сравнения моя конфигурация: root@pveA:~# cat /etc/fstab | grep glusterfs
    192.168.25.135:/gv0 /mnt/glusterfstab glusterfs defaults,_netdev 0 0
    root@pveA:~# cat /etc/pve/storage.cfg | grep -A5 gluster
    dir: glusterDir
       path /mnt/glusterfstab
       content rootdir
       is_mountpoint yes
       shared 1

    root@pveA:~# cat /etc/pve/lxc/100.conf
    (...)
    hostname: CT100
    ostype: alpine
    rootfs: glusterDir:100/vm-100-disk-0.raw,size=8G
    root@pveA:~# pvecm nodes

    Информация о членстве
    ----------------------
       Nodeid      Votes Name
            1          1 pveA (local)
            2          1 pveC
            3          1 pveB
    root@pveA:~# ha-manager config
    ct:100
       state started
     
     
     
    Apollon77
    Guest
    #4
    0
    05.08.2020 17:59:00
    Привет, Доминик, и спасибо за поддержку в этом вопросе. fstab — это довольно стандартная штука; обычные вещи и два блока glusterfs в данном случае. Спойлер: cat /etc/fstab # <файловая система> <точка монтирования> <тип> <опции> <дамп> <передача> /dev/pve/root / ext4 errors=remount-ro 0 1 UUID=10C4-4D23 /boot/efi vfat defaults 0 1 /dev/pve/swap none swap sw 0 0 proc /proc proc defaults 0 0 /dev/pve/data2 /gluster/brick1 xfs defaults 1 2 /dev/pve/data11 /gluster/brick11 xfs defaults 1 2 Значимая часть для storage.cfg — это nfs-шар, о котором я говорил, затем два хранилища glusterfs и монтирования директорий, чтобы запустить на них контейнеры. Спойлер: cat /etc/pve/storage.cfg nfs: apollonnas-nfs export /volume1/proxmox path /mnt/pve/apollonnas-nfs server apollonnas.fritz.box content iso,images,backup,rootdir,vztmpl maxfiles 3 options vers=3 glusterfs: glusterfs path /mnt/pve/glusterfs volume gv0 content images server 192.168.178.50 server2 192.168.178.94 dir: glusterfs-container path /mnt/pve/glusterfs content rootdir shared 1 glusterfs: glusterfs2 path /mnt/pve/glusterfs2 volume gv1 content images server 192.168.178.50 server2 192.168.178.95 dir: glusterfs2-container path /mnt/pve/glusterfs2 content rootdir shared 1 ничего мне не дает... да, сервисы mnt-pve-* здесь (и я могу использовать systemctl status), чтобы получить их статус, но существуют только три: mnt-pve-apollonnas\x2dnfs.mount mnt-pve-glusterfs2.mount mnt-pve-glusterfs.mount root@pm3:~# systemctl status mnt-pve-glusterfs.mount ● mnt-pve-glusterfs.mount - /mnt/pve/glusterfs Загружен: загружен (/proc/self/mountinfo) Активен: активен (смонтирован) с субботы 2020-07-18 18:13:55 CEST; 2 недели 3 дня назад Где: /mnt/pve/glusterfs Что: 192.168.178.50:gv0 Задачи: 0 (лимит: 4915) Память: 0B CGroup: /system.slice/mnt-pve-glusterfs.mount... Думаю, эти сервисы монтирования автоматически создаются, как только производится "монтирование". Для меня монтирование появляется при вызове "mount": 192.168.178.50:gv0 на /mnt/pve/glusterfs типа fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072) 192.168.178.50:gv1 на /mnt/pve/glusterfs2 типа fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072) apollonnas.fritz.box:/volume1/proxmox на /mnt/pve/apollonnas-nfs типа nfs (rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.178.23,mountvers=3,mountport=892,mountproto=udp,local_lock=none,addr=192.168.178.23) И тут неважно, если я размещаю "HA-контейнер" на gluster или на nfs-монтаже. Как видно из одного системного графика выше, монтирование происходит очень поздно, и менеджер HA уже пытается запустить контейнер/VM (и то же самое при выключении — они, по-видимому, удаляются слишком рано, прежде чем менеджер HA остановит VMs/Контейнеры. Может, в этом вся суть! У вас, похоже, glusterfs смонтирован через fstab, а у меня он определен сам по себе как хранилище proxmox (по документации). Может, это всё и есть корень проблемы???!! HA работает совершенно нормально, также как и узловое ограждение, миграции и прочее — все отлично, мне это действительно нравится. Как видно ниже, это ТОЛЬКО проблема при загрузке узла PVE и более проблематичная при его выключении. Моя проблема заключается в следующем: если я размещаю VM/Контейнер на своем NFS (ладно, только тестировал там) или на этом специальном монтировании каталога glusterfs, всё работает хорошо, если LXC не является HA.Если он объявлен как HA, я вижу следующие эффекты при остановке/перезагрузке/запуске узла: При запуске/загрузке узла PVE: Кажется, что менеджер HA пытается запустить LXC слишком рано, потому что чаще всего lxc выдает ошибки, что не может получить файловую систему контейнера. Я это устранил, просто определив повторы в HA, так что через какое-то время он сдается, а затем пробует снова, и тогда всё работает сразу. Причина, кажется, в том, что монтирование gluster/nfs отсутствует в некоторых случаях, когда он уже пытается запустить контейнер. Интересно, что это в основном затрагивает контейнеры LXC, а не VMs. Если я определяю lxc как не HA, а "запуск при старте" (так я понимаю, что включение управляется процессом pve-guest, а не менеджером ha), то это всегда работает. Кажется, это вопрос синхронизации при запуске. Этот эффект наблюдается примерно в 70% случаев, но тут я смог обойтись с помощью повторов. При выключении узла PVE: Здесь всё наоборот: Сначала кажется, что останавливаются "не HA" VMs и LXC — и это работает. Затем, похоже, останавливаются HA-экземпляры, но здесь у меня 100% случаев для контейнеров, когда они начинают вызывать ошибки файловой системы (в некоторых логах, как видно, даже до того, как их просят остановиться). Но иногда и HA-VM тоже. Так я понимаю, что таким образом монтирование уже удалено после завершения pve-guest, но менеджер HA все еще не остановил HA-сущности. И тут возникает эффект, что LXC не отключаются. Именно так это выглядит для меня при каждом отключении HA-контейнеров LXC. И да, выключение занимает вечность, и я хочу избавиться от этой проблемы. Я знаю, как это исправить, когда что-то происходит, и я на месте, но нет реального решения, если меня нет рядом. Инго
     
     
     
    Dominic
    Guest
    #5
    0
    06.08.2020 11:10:00
    Точная комбинация действительно может быть важна в данном случае. Также будет полезно попробовать параметры для директорий хранилищ, как, например, is_mountpoint. Вы используете стандартную политику отключения HA? pvesh get cluster/options --output-format=json-pretty Что может быть дополнительно актуально: вы выполняете отключение, а затем, спустя всего несколько секунд, снова запускаете узел или вы даете пройти хотя бы несколько (>3) минут между отключением и запуском? Было бы здорово, если бы вы еще раз обратили внимание на проблемы с NFS. NFS и отключение не должны вызывать ошибки файловой системы (и я действительно не увидел никаких). Так что, может быть, сначала стоит разобраться с этим, а затем уже рассматривать более сложную конструкцию Gluster/Directory.
     
     
     
    Apollon77
    Guest
    #6
    0
    06.08.2020 12:29:00
    Что этот параметр должен делать по-другому? На мой взгляд, идея заключается в том, чтобы не монтировать gluster через pve, а сделать это напрямую через fstab и тем самым убрать хранилище из самого pve, верно?! Какой эффект это даст? Возможно, я больше не смогу получить статистику, но что еще? Код: root@pm3:~# pvesh get cluster/options --output-format=json-pretty { "console" : "html5", "keyboard" : "de"} в основном это вопрос о перезагрузках, потому что в противном случае ВМ будут мигрированы, если я не остановлю их заранее... Я этого не пробовал, потому что это моя "продакшен-система". Ладно, я попробую. Это может занять некоторое время, нужно успеть сделать это до моего отпуска ;-) Инго
     
     
     
    Apollon77
    Guest
    #7
    0
    07.08.2020 00:35:00
    @Dominic Надеюсь, что смогу попробовать NFS в выходные. Но у меня вопрос: как можно замонтировать glusterfs напрямую в fstab, не используя хранилище proxmox, но при этом чтобы он по-прежнему был доступен для ВМ, используя более производительное gluster-lib и подобные вещи?
     
     
     
    Dominic
    Guest
    #8
    0
    07.08.2020 08:56:00
    Речь идет о доступности хранилища директорий. Точные эффекты указаны в руководстве pvesm. Это может повлиять на порядок монтирования, но я еще не проверял это точно. В документации Gluster есть подробные инструкции. Как и в Proxmox VE, в примере используется "glusterfs" в качестве "fstype" для монтирования.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры