Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    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 Виртуальная Среда
    [TUTORIAL] Внутреннее устройство поддержки снимков SAN в Proxmox VE 9

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    [TUTORIAL] Внутреннее устройство поддержки снимков SAN в Proxmox VE 9, Proxmox Виртуальная Среда
     
    bbgeek17
    Guest
    #1
    0
    12.08.2025 15:26:00
    Всем привет! Рад поделиться подробным обзором одной из заметных новых функций в PVE9: улучшенной поддержки снапшотов для устаревших SAN. Эта функция — значительный шаг вперёд в расширении совместимости PVE с традиционными корпоративными системами хранения, чего многие из нас давно ждали... и на этот счёт мне за годы задали массу вопросов.

    Inside Proxmox VE 9 SAN Snapshot Support: https://kb.blockbridge.com/technote/proxmox-qcow-snapshots-on-lvm/

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

    Немного предыстории: многие корпоративные пользователи PVE были вынуждены использовать файловое хранилище, вроде NFS, для снапшотов ВМ из-за совместимости с QCOW2-дисками. Устаревшие SAN с их статическим выделением LUN создавали серьёзные проблемы из-за динамической природы QCOW2. Новый подход PVE9 призван решить эту проблему с помощью хитрого управления LVM, что может открыть новые возможности для многих, кто использует традиционные SAN.

    Если вы планируете протестировать эту функцию или хотите разобраться в деталях, эта статья будет полезна. Как всегда, пишите, если есть вопросы, исправления или мы что-то упустили!

    Приятного чтения! Команда Blockbridge

    Blockbridge: сверхнизкая задержка, all-NVME общее хранилище для Proxmox — https://www.blockbridge.com/proxmox
     
     
     
    fiona
    Guest
    #2
    0
    26.11.2025 12:17:00
    Привет, я бы тоже так предположил, но не был уверен, поэтому проверил — и, похоже, это действительно так: блочный режим не зависит от O_DIRECT: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/block/fops.c?h=v6.17#n641. Даже если бы зависел, ioctl для обнуления в любом случае не смотрит на блочный режим при выполнении обнуления: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/block/ioctl.c?h=v6.17#n217.
     
     
     
    bbgeek17
    Guest
    #3
    0
    17.09.2025 14:21:00
    Привет, @spirit! Спасибо за терпение. Давно хотел ответить, но всё было довольно напряжённо. По поводу кэширования, думаю, тут есть небольшое непонимание касательно выделения субкластеров и эффекта включения l2_extended=on. В QCOW включение l2_extended увеличивает накладные расходы на метаданные с 8 до 16 байт на кластер данных. Дополнительные 8 байт частично используются для битовой карты, которая отслеживает состояние выделения субкластеров. Само по себе это снижает эффективность кэша примерно на 50% из-за возросших накладных расходов на метаданные. QCOW-образы с выделением субкластеров позволяют разбивать родной кластер на 32 субкластера. Это не увеличивает размер адресного пространства (не создаёт дополнительную L3-таблицу). Вместо этого это даёт возможность загружать небольшие части кластера во время операции COW. Такая схема помогает оптимизировать производительность COW, особенно когда размеры I/O совпадают с размером выделения субкластеров. Чтобы сохранить одинаковую эффективность кэша при использовании субкластеров с l2_extended=on, нужно удвоить размер чанка, чтобы соотношение метаданных и данных оставалось постоянным. Чтобы действительно улучшить эффективность, размер чанка нужно увеличить ещё больше. По поводу практического вопроса, который мы обсуждали ранее: я провёл быстрый тест с диском 1 TiB и несколькими снапшотами на одной виртуалке. По грубым замерам (смотрел resident memory), удалось увеличить занимаемую QEMU память почти на 500 МБ, просто обращаясь к определённым сдвигам, совпадающим с L2-таблицей в каждом снапшоте. Это значит, что для увеличения кэша не нужно касаться всех данных, достаточно нескольких стратегических сдвигов. Учитывая современную производительность систем, сделать это можно всего за пару сотен микросекунд. Что касается оптимизированного обнуления — добавлю это в список того, с чем хочу поэкспериментировать! Blockbridge: ультранизкая задержка, полностью NVME-шаред-сторедж для Proxmox — https://www.blockbridge.com/proxmox
     
     
     
    spirit
    Guest
    #4
    0
    18.11.2025 11:43:00
    @bbgeek17 оптимизация зануления была добавлена в pve-storage версии 9.0.14 и выше!
     
     
     
    bbgeek17
    Guest
    #5
    0
    24.11.2025 18:04:00
    Привет, @spirit! Отличная работа! Могу подтвердить, что обнуление блоков работает отлично. Мы видим примерно 8 ГБ/с при безопасном извлечении — это довольно неплохо. Одно что бросилось в глаза: похоже, что для обнуления не используется O_DIRECT? Есть ли риск, что обнулённые блоки могут остаться в буфере и не попасть на диск при отключении питания? Blockbridge: сверхнизкая задержка, полностью NVME-общее хранилище для Proxmox — https://www.blockbridge.com/proxmox
     
     
     
    spirit
    Guest
    #6
    0
    25.11.2025 17:33:00
    Я не уверен, так как используется ioctl ioctl(fd, BLKZEROOUT), который приказывает хранилищу записать нули от начального сектора до конечного. (Что-то вроде разгрузки, немного похоже на discard). Так что, мне кажется, что O_DIRECT, CACHE_NONE и тому подобное здесь не применимы, ведь на самом деле мы не пишем нули через файловую систему. Может, @fiona сможет подтвердить?
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

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