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

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Специальное устройство для метаданных ZFS, Proxmox Виртуальная Среда
     
    Gomo
    Guest
    #1
    0
    16.06.2023 18:21:00
    Привет всем! Хочу настроить специальное устройство для метаданных для моего ZFS зеркального пула (2x HDD, по 18TB каждый), но не совсем уверен в шагах. Нашел какую-то документацию в интернете, но все еще немного сомневаюсь, не хочу все испортить и потом зеркало перестраивать. Данные, конечно, бэкаплены, но их очень много – куча терабайт, и это займет целую вечность :X Так что вот я здесь и прошу совета у того, кто делал это раньше / знает, как сделать это правильно. Купил 2x WD RED SSD (500GB) и хочу настроить их в зеркало и использовать в качестве специального устройства для метаданных для моего HDD зеркального пула. Не против установить параметр "special_small_blocks" на немного большее значение, на самом деле, хотел бы, чтобы он был около 2MB, не знаю, это разумно? (чуть меньше размера средней фотографии со смартфона). Буду очень благодарен, если кто-нибудь найдет пару минут и подскажет, какие команды использовать и как это настроить. Спасибо заранее!
     
     
     
    LnxBil
    Guest
    #2
    0
    17.06.2023 13:58:00
    Да, все НОВЫЕ файлы. Как я и пытался объяснить… отправляй/получай или копируй все данные на другой компьютер и обратно.
     
     
     
    alexskysilk
    Guest
    #3
    0
    17.06.2023 23:14:00
    Вопрос: это более эффективно, чем zfs clone zpool/mydata@move zpool/mydata-moved?
     
     
     
    Dunuin
    Guest
    #4
    0
    17.06.2023 23:26:00
    Ты правда хочешь переписать все данные и удалить старые? Клон должен просто ссылаться на старые записи, а не переписывать их заново.
     
     
     
    alexskysilk
    Guest
    #5
    0
    17.06.2023 23:32:00
    Понятно. Спасибо за разъяснения.
     
     
     
    itNGO
    Guest
    #6
    0
    16.06.2023 18:26:00
    В общем-то, это практически то же самое, что: zpool add POOLNAME special mirror /dev/sdX /dev/sdY, а для размера блока: zfs set special_small_blocks=1M POOLNAME.
     
     
     
    LnxBil
    Guest
    #7
    0
    16.06.2023 19:30:00
    Зависит от размера вашего сектора или размера блока тома. Если он ниже, то все будет записано на ваши SSD. Чтобы использовать устройство метаданных, вам нужно отправлять/получать данные в свой собственный пул, чтобы сохранять метаданные на SSD. Лучше сначала настроить пул, а потом его заполнять.
     
     
     
    Dunuin
    Guest
    #8
    0
    16.06.2023 20:13:00
    Для того, чтобы это пояснить чуть больше: "special_small_blocks" определяет, какие данные записываются на специальные устройства. Каждая запись или блок, размер которых меньше или равен "special_small_blocks", будет записана на специальное устройство. Всё, что больше, будет записано на обычные vdev. Допустим, у вас есть zvol с volblocksize 8K и datasets с recordsize 128K (это настройки по умолчанию для PVE7). Неважно, насколько велик ваш zvol, он всегда будет разделен на блоки по 8K (ваш volblocksize). Значит, даже если ваш zvol составляет 8TB, он будет состоять из 1 000 000x блоки по 8K. Если ваш special_small_blocks больше или равен 8K, то все 8TB будут храниться на специальных устройствах. Если ваш special_small_blocks меньше 8K, то всё будет храниться на обычных vdev (ваши HDD). Для файлов в dataset это зависит. Recordsize – это скорее значение "до". Сохраните 3KB файл и он создаст 4KB record. Сохраните 20KB файл и он создаст 32KB record. Сохраните 1MB файл и он создаст 8x 128KB record (так как 128KB recordsize – верхний предел... всё, что больше, будет разделено на записи максимального размера 128KB). Значит, если special_small_blocks = 128KB и recordsize = 128KB, то всё будет записываться на специальное устройство, независимо от того, 1KB или 1TB размер файла. Значит, special_small_blocks = 1M – это плохая идея, если ваш recordsize не 2M или больше. Обычно вы хотите, чтобы special_small_blocks был меньше recordsize для ваших dataset.
     
     
     
    Gomo
    Guest
    #9
    0
    17.06.2023 13:28:00
    Эмм, если честно, я тут немного потерял нить. У меня есть zfs-зеркальный пул с 2x 18TB HDD, этот пул ни к одной VM не привязан. Теперь, я бы хотел добавить специальное устройство для хранения метаданных, в зеркальной конфигурации, для всего HDD-пула -> 2x 18TB HDD в зеркале с 2x 500GB SSD в качестве специального хранилища, тоже в зеркале. У HDD-пула стандартный размер записи (128K). Вопрос в том, как мне добавить эти два SSD, чтобы они стали зеркальным специальным устройством для этого HDD-пула? И если сконфигурировать с маленьким размером блока в 64K, это значит, что все реальные файлы размером 65KB и меньше будут перемещены на SSD, а у более крупных файлов будет только метаданные на SSD? Или, ну, на самом деле, это начнет применяться только к новым файлам, а не к существующим. Верно? Но тогда как мне гарантировать, что моя новая конфигурация будет применена к существующим файлам?
     
     
     
    Gomo
    Guest
    #10
    0
    17.06.2023 01:16:00
    Спасибо за все ваши ответы! Я запустил Wendell's commend для гистограммы размеров файлов на моем пуле, и вот что получилось Какие "special_small_blocks" вы бы рекомендовали здесь? И есть ли какие-то недостатки, если специальное устройство метаданных находится вне основного накопителя, в контексте деградации/восстановления пула и т.д.? На что мне стоит обратить внимание (помимо запуска в зеркале, чтобы избежать потери данных)? И еще один вопрос. Если я все-таки перейду к настройке, мне не нужно сначала создать ZFS-зеркало с SSD, верно? Команда itNGO или, ну, "sdX" и "sdY" представляют каждый из SSD (в моем сценарии), верно? Спасибо!
     
     
     
    LnxBil
    Guest
    #11
    0
    17.06.2023 10:05:00
    Лично я использую отдельные наборы данных с специальными_small_blocks, например, чтобы контролировать, что куда попадает. Автоматическая оптимизация сложна, и если место закончилось, метаданные перенесутся на жесткие диски. Единственный совет, который я могу дать: разбивайте объем ваших данных на как можно больше наборов данных, чтобы вы могли отправлять/получать их и перераспределять при необходимости. Перестройка происходит на уровне vdev, поэтому вам нужно перестраивать ваши диски данных с ваших дисков данных и ваше специальное устройство с вашего специального устройства. Да, просто добавьте специальное зеркало, а затем отправляйте/получайте каждый набор данных вашего пула, чтобы разделить метаданные. Если этого не сделать, только новые метаданные будут переноситься на SSD.
     
     
     
    LnxBil
    Guest
    #12
    0
    17.06.2023 10:10:00
    Ой, это на самом деле не так. Недавно столкнулся с проблемой с "свободным пространством" пула. Можно исчерпать данные в пуле и не увидеть это напрямую через `zpool list`. У меня есть виртуальный эмулятор, который выступает в роли хранилища ZFS-over-iSCSI для PVE, и у него три диска на разных устройствах хранения, чтобы я мог создать пул с данными, метаданными и SLOG/ZIL:

    ```
    root@proxmox-zfs-storage ~ > zpool list -v
    NAME                                     SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
    zpool                                   1.12T   856G   291G        -         -    62%    74%  1.00x    ONLINE
     scsi-0QEMU_QEMU_HARDDISK_drive-scsi3  1020G   837G   183G        -         -    62%  82.0%      -  ONLINE
    special                                     -      -      -        -         -      -      -      -  -
     scsi-0QEMU_QEMU_HARDDISK_drive-scsi2   127G  19.3G   108G        -         -    13%  15.2%      -  ONLINE
    logs                                        -      -      -        -         -      -      -      -  -
     scsi-0QEMU_QEMU_HARDDISK_drive-scsi1  7.50G  20.4M  7.48G        -         -     0%  0.26%      -  ONLINE
    ```

    Я исчерпал ёмкость, несмотря на то, что обычный `zpool list` показывает меньше использованного пространства.
     
     
     
    Gomo
    Guest
    #13
    0
    17.06.2023 10:30:00
    Теперь, когда я проверил размер записи и понял, что у меня значение по умолчанию (128K), я вижу, что мой план установить "special_small_blocks" в 128K или выше не сработает. Получается, мне придётся использовать 64K? Правильно? Буду очень благодарен, если подскажете, как это сделать с существующими файлами – "отправка/получение". Спасибо!
     
     
     
    LnxBil
    Guest
    #14
    0
    17.06.2023 12:28:00
    Не файлы, а наборы данных. Если у вас только один набор данных, и места недостаточно, вы не сможете переместить метаданные на ваши SSD. Чтобы отправить/получить свои наборы данных, нужно создать снимок, давайте пройдемся по шагам: Предположим, у вас есть набор данных mydata, я создаю его для примера:

    Код:
    root@proxmox-zfs-storage ~ > zfs create zpool/mydata

    root@proxmox-zfs-storage ~ > zfs list zpool/mydata
    NAME           USED  AVAIL     REFER  MOUNTPOINT
    zpool/mydata    24K   132G       24K  /zpool/mydata

    Затем создайте снимок (вам нужно остановить все, что может потенциально записывать в набор данных):

    Код:
    root@proxmox-zfs-storage ~ > zfs snapshot zpool/mydata@move

    Вот наступает часть с отправкой/получением:

    Код:
    root@proxmox-zfs-storage ~ > zfs send -v zpool/mydata@move | zfs receive -v zpool/mydata-moved
    full send of zpool/mydata@move estimated size is 12.6K
    total estimated size is 12.6K
    receiving full stream of zpool/mydata@move into zpool/mydata-moved@move
    received 43.9K stream in 1 seconds (43.9K/sec)

    Теперь у вас набор данных клонирован:

    Код:
    root@proxmox-zfs-storage ~ > zfs list zpool/mydata zpool/mydata-moved
    NAME                 USED  AVAIL     REFER  MOUNTPOINT
    zpool/mydata          24K   132G       24K  /zpool/mydata
    zpool/mydata-moved    24K   132G       24K  /zpool/mydata-moved

    Вы можете удалить снимок и старые данные:

    Код:
    root@proxmox-zfs-storage ~ > zfs destroy zpool/mydata@move
    root@proxmox-zfs-storage ~ > zfs destroy zpool/mydata

    Теперь данные должны быть разделены.
     
     
     
    Gomo
    Guest
    #15
    0
    18.06.2023 12:33:00
    Итак, после бэкапа основного пула, я удалил и пересоздал его, а также добавил специальное устройство (зеркальные SSD) и установил "special_small_blocks" в 64K. Потом скопировал все файлы из места бэкапа обратно в этот пул. Есть одна папка на этом основном хранилище, которую я предоставляю через Samba на мои Windows-устройства, и когда я делаю правый клик 'свойства' на ней, она по-прежнему долго считает количество файлов и папок, как и раньше. Не думаю, что это связано с ограничениями SMB (хотя, возможно), так как расстояние между ними всего 1мс или меньше (одна и та же локальная сеть). Ожидал, что скорости значительно улучшатся. Еще вопрос. Как мне проверить распределение пространства на моих специальных устройствах в этом пуле? Они не отображаются как пул в Proxmox, мой Zabbix-агент не собирает никакой информации с них… да и я не особо понимаю в Linux.
     
     
     
    Dunuin
    Guest
    #16
    0
    18.06.2023 13:46:00
    Проверь `zpool list -v`, чтобы увидеть, сколько места осталось на твоих особенных дисках.
     
     
     
    Gomo
    Guest
    #17
    0
    18.06.2023 13:54:00
    Ах, вижу, говорит, что выделено 131 ГБ. Ну ладно, значит, метаданные и блок-часть вроде бы заработали. Или, ну, по крайней мере, мне не кажется, что эти 131 ГБ - только метаданные. Есть какой-нибудь способ проверить, где хранятся файлы размером =<64K? Запуск Wendell's histogram команды из корня пула: Code: find . -type f -print0 | xargs -0 ls -l | awk '{ n=int(log($5)/log(2)); if (n<10) { n=10; } size[n]++ } END { for (i in size) printf("%d %d\n", 2^i, size[i]) }' | sort -n | awk 'function human(x) { x[1]/=1024; if (x[1]>=1024) { x[2]++; human(x) } } { a[1]=$1; a[2]=0; human(a); printf("%3d%s: %6d\n", a[1],substr("kMGTEPYZ",a[2]+1,1),$2) }' выдает практически те же результаты, что и раньше (конечно, потому что специальное устройство является частью пула).
     
     
     
    Chicken76
    Guest
    #18
    0
    11.04.2024 09:58:00
    Во-первых, извини, что воскресил эту старую тему. Специальные маленькие блоки (special_small_blocks) применяются к zvols? Мне казалось, что это относится только к датасетам.
     
     
     
    Dunuin
    Guest
    #19
    0
    11.04.2024 10:07:00
    Да, так и есть. Тогда размер блока вола (volblocksize) должен быть больше, чем специальный маленький блок (special_small_blocks), иначе всё окажется на специальных устройствах.
     
     
     
    Chicken76
    Guest
    #20
    0
    11.04.2024 11:21:00
    Правда ли? Нашёл вот это: https://github.com/openzfs/zfs/discussions/12769. Метаданные да, а вот не блоки с самой информацией — нет.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

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