Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    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 Виртуальная Среда
    fstrim не работает в контейнерах (любая ОС) - какие есть обходные пути?

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    fstrim не работает в контейнерах (любая ОС) - какие есть обходные пути?, Proxmox Виртуальная Среда
     
    interstellar
    Guest
    #1
    0
    18.05.2019 07:01:00
    Привет снова! Я весь день пытаюсь заставить fstrim работать внутри непривилегированных LXC-контейнеров, но безуспешно. Сначала я думал, что это проблема только Debian/Ubuntu, но я попробовал несколько шаблонов ОС, и это всегда приводит к: FITRIM ioctl failed: Operation not permitted. Чтобы вы знали, в привилегированных контейнерах все работает хорошо, но, как отметили люди, они не такие безопасные. Может кто-то помочь мне разобраться с этим или рассказать, есть ли обходной путь? Я переключился на lvm-thin provisioning, так что мне нужно очищать диски контейнеров, чтобы освободить место после удаления. Или это просто не поддерживается в непривилегированных контейнерах на данный момент? Я нашел похожую проблему на linuxcontainers.org. Один из разработчиков сказал: "К сожалению, я ожидаю, что это просто ядро отказывается разрешить непривилегированному пользователю запрашивать операцию TRIM на блочном устройстве. Если вы не используете привилегированный контейнер, я не ожидаю, что вам это удастся… Один из вариантов — дать root на хосте запустить fstrim для всех /dev/rbd* устройств, фактически выполняя TRIM для всех работающих контейнеров. В противном случае вам нужно будет ждать, пока у нас не появится способ перехватывать такие системные вызовы в пространстве пользователей (в настоящее время ведется работа над этим в ядре), после чего мы могли бы заставить LXD перехватывать этот конкретный ioctl и воспроизводить его как настоящий root." Если этого не получится сделать внутри контейнеров, есть ли способ очистки образов диска с хоста? Спасибо!
     
     
     
    Proxygen
    Guest
    #2
    0
    18.11.2019 17:48:00
    Я получаю 'tput: No value for $TERM and no -T specified', когда запускаю скрипт через cron (но не при ручном запуске). pct, конечно, был заменен на /usr/sbin/pct.
     
     
     
    oguz
    Guest
    #3
    0
    19.11.2019 17:41:00
    грязная однострочка для обрезки всех контейнеров: Код: pct list | awk '/^[0-9]/ {print $1}' | while read ct; do pct fstrim ${ct}; done
     
     
     
    legrems
    Guest
    #4
    0
    20.02.2020 15:47:00
    Однострочник с xargs: Код: pct list | grep -Eo '^[0-9]+' | xargs -P X -n 1 pct fstrim Здесь `X` — это количество fstrim, которое вы хотите выполнить параллельно.
     
     
     
    jure965
    Guest
    #5
    0
    29.07.2021 11:50:00
    Системные файлы сервиса systemd, основанные на fstrim.service, fstrim.timer и однострочнике с xargs из предыдущего поста (спасибо за идею!) Не стесняйтесь исправлять/изменять/улучшать. Код: # /etc/systemd/system/pct-fstrim.service
    [Unit]
    Описание=Удалить неиспользуемые блоки всех LXC томов на текущем узле

    [Service]
    Тип=oneshot
    ExecStart=/usr/bin/bash -c '/usr/sbin/pct list | /usr/bin/grep -Eo "\x5e\x5b0\x2d9\x5d\x2b" | /usr/bin/xargs -n 1 /usr/sbin/pct fstrim' Код: # /etc/systemd/system/pct-fstrim.timer
    [Unit]
    Описание=Удалить неиспользуемые блоки всех LXC томов на текущем узле раз в неделю

    [Timer]
    OnCalendar=weekly
    Точность=1ч
    Persistent=true

    [Install]
    WantedBy=timers.target
     
     
     
    Dunuin
    Guest
    #6
    0
    11.12.2021 17:26:00
    Спасибо за однострочники и скрипт systemd. У меня такие LXCs на LVM-thin обрезаются, а вот LXCs на ZFS — нет. Нужно ли что-то особенное сделать, чтобы наборы данных, используемые ZFS для хранения дисков LXC, тоже обрезались? Этот пул ZFS тонкий и использует только SSD, так что обрезка там должна быть необходима, но команда pct fstrim возвращает, что обрезка не поддерживается: Код: root@Hypervisor:~# pct list | awk '/^[0-9]/ {print $1}' | while read ct; do pct fstrim ${ct}; done fstrim: /var/lib/lxc/100/rootfs/: операция discard не поддерживается команда 'fstrim -v /var/lib/lxc/100/rootfs/' завершилась с ошибкой: код выхода 1 fstrim: /var/lib/lxc/101/rootfs/: операция discard не поддерживается команда 'fstrim -v /var/lib/lxc/101/rootfs/' завершилась с ошибкой: код выхода 1 /var/lib/lxc/121/rootfs/: 248.9 MiБ (261033984 байт) обрезано fstrim: /var/lib/lxc/126/rootfs/: операция discard не поддерживается команда 'fstrim -v /var/lib/lxc/126/rootfs/' завершилась с ошибкой: код выхода 1 fstrim: /var/lib/lxc/133/rootfs/: операция discard не поддерживается команда 'fstrim -v /var/lib/lxc/133/rootfs/' завершилась с ошибкой: код выхода 1 VMID 121 — это тот LXC, который хранится на LVM-thin, все остальные LXCs хранятся на ZFS.
     
     
     
    LnxBil
    Guest
    #7
    0
    11.12.2021 20:55:00
    Они автоматически уменьшаются. ZFS в LXC уже является файловой системой, поэтому если вы удаляете файл, ZFS знает, что вы удалили файл, и освобождает место (если нет снимков, которые на него полагаются).
     
     
     
    Dunuin
    Guest
    #8
    0
    11.12.2021 21:04:00
    Хорошо, это имеет смысл. Но только если автотрим включен, верно? Код: root@Hypervisor:~# zpool get autotrim NAME PROPERTY VALUE SOURCE VMpool autotrim on local
     
     
     
    LnxBil
    Guest
    #9
    0
    11.12.2021 21:36:00
    Нет, это касается основного zpool. Датасеты ZFS (файловая система) делают это самостоятельно, даже если базовое блочное хранилище (например, жесткий диск) не поддерживает команду trim. Свойство autotrim предназначено для блочного хранилища на основе SSD, которое само поддерживает trim для очистки. Это относительно новшество и обычно не требуется для корпоративных SSD.
     
     
     
    Twitch6004
    Guest
    #10
    0
    17.06.2023 05:17:00
    Я использовал команду: pct list | grep -Eo '^[0-9]+' | xargs -P X -n 1 pct fstrim, но ошибка: "WARNING: Thin volume pve/vm-103-disk-0 maps 2876309504 while the size is only 2147483648. LXC" все еще остается, так что я предполагаю, что команда ничего не делает?
     
     
     
    LnxBil
    Guest
    #11
    0
    17.06.2023 10:01:00
    Это не ошибка, а предупреждение, и оно говорит о том, что тонкий объем отображает больше данных, чем его размер, что странно.
     
     
     
    Twitch6004
    Guest
    #12
    0
    17.06.2023 10:06:00
    Я разобрался, я перенёс данные на новый HDD, и старые тома всё ещё отображались на старом диске. Пришлось воспользоваться командной строкой, чтобы удалить старые данные, потом я снова запустил команду, и всё сработало.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

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