ZFS очень медленная скорость записи

Вопрос или проблема

Я настроил ZFS на OpenSUSE Tumbleweed на своем сервере T430, используя 8x SAS ST6000NM0034 6TB 7.2K RPM дисков. Пул ZFS настроен как RAIDZ-2, и для набора данных включено шифрование.

Я получаю очень медленную запись в пул, только около 33MB/s. Чтение же гораздо быстрее, на уровне 376MB/s (хотя все еще медленнее, чем я ожидал).

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

Свойства ZFS:

workstation:/media_storage/photos # zfs get all media_storage/photos
NAME                  PROPERTY              VALUE                  SOURCE
media_storage/photos  type                  filesystem             -
media_storage/photos  creation              Sat Feb 15 16:41 2025  -
media_storage/photos  used                  27.6G                  -
media_storage/photos  available             30.9T                  -
media_storage/photos  referenced            27.6G                  -
media_storage/photos  compressratio         1.01x                  -
media_storage/photos  mounted               yes                    -
media_storage/photos  quota                 none                   default
media_storage/photos  reservation           none                   default
media_storage/photos  recordsize            128K                   default
media_storage/photos  mountpoint            /media_storage/photos  default
media_storage/photos  sharenfs              off                    default
media_storage/photos  checksum              on                     default
media_storage/photos  compression           lz4                    inherited from media_storage
media_storage/photos  atime                 on                     default
media_storage/photos  devices               on                     default
media_storage/photos  exec                  on                     default
media_storage/photos  setuid                on                     default
media_storage/photos  readonly              off                    default
media_storage/photos  zoned                 off                    default
media_storage/photos  snapdir               hidden                 default
media_storage/photos  aclmode               discard                default
media_storage/photos  aclinherit            restricted             default
media_storage/photos  createtxg             220                    -
media_storage/photos  canmount              on                     default
media_storage/photos  xattr                 on                     default
media_storage/photos  copies                1                      default
media_storage/photos  version               5                      -
media_storage/photos  utf8only              off                    -
media_storage/photos  normalization         none                   -
media_storage/photos  casesensitivity       sensitive              -
media_storage/photos  vscan                 off                    default
media_storage/photos  nbmand                off                    default
media_storage/photos  sharesmb              off                    default
media_storage/photos  refquota              none                   default
media_storage/photos  refreservation        none                   default
media_storage/photos  guid                  7117054581706915696    -
media_storage/photos  primarycache          all                    default
media_storage/photos  secondarycache        all                    default
media_storage/photos  usedbysnapshots       0B                     -
media_storage/photos  usedbydataset         27.6G                  -
media_storage/photos  usedbychildren        0B                     -
media_storage/photos  usedbyrefreservation  0B                     -
media_storage/photos  logbias               latency                default
media_storage/photos  objsetid              259                    -
media_storage/photos  dedup                 off                    default
media_storage/photos  mlslabel              none                   default
media_storage/photos  sync                  disabled               inherited from media_storage
media_storage/photos  dnodesize             legacy                 default
media_storage/photos  refcompressratio      1.01x                  -
media_storage/photos  written               27.6G                  -
media_storage/photos  logicalused           27.9G                  -
media_storage/photos  logicalreferenced     27.9G                  -
media_storage/photos  volmode               default                default
media_storage/photos  filesystem_limit      none                   default
media_storage/photos  snapshot_limit        none                   default
media_storage/photos  filesystem_count      none                   default
media_storage/photos  snapshot_count        none                   default
media_storage/photos  snapdev               hidden                 default
media_storage/photos  acltype               off                    default
media_storage/photos  context               none                   default
media_storage/photos  fscontext             none                   default
media_storage/photos  defcontext            none                   default
media_storage/photos  rootcontext           none                   default
media_storage/photos  relatime              on                     default
media_storage/photos  redundant_metadata    all                    default
media_storage/photos  overlay               on                     default
media_storage/photos  encryption            aes-256-gcm            -
media_storage/photos  keylocation           prompt                 local
media_storage/photos  keyformat             passphrase             -
media_storage/photos  pbkdf2iters           350000                 -
media_storage/photos  encryptionroot        media_storage/photos   -
media_storage/photos  keystatus             available              -
media_storage/photos  special_small_blocks  0                      default
media_storage/photos  prefetch              all                    default
workstation:/media_storage/photos # 

Во время записи из /dev/random в файл 4GB:

workstation:/home/josh # zpool iostat -vly 30 1
                              capacity     operations     bandwidth    total_wait     disk_wait    syncq_wait    asyncq_wait  scrub   trim  rebuild
pool                        alloc   free   read  write   read  write   read  write   read  write   read  write   read  write   wait   wait   wait
--------------------------  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----
media_storage               25.9G  43.6T      0    471      0  33.7M      -   87ms      -   75ms      -  768ns      -   12ms      -      -      -
  raidz2-0                  25.9G  43.6T      0    471      0  33.7M      -   87ms      -   75ms      -  768ns      -   12ms      -      -      -
    wwn-0x5000c5008e4e6d6b      -      -      0     60      0  4.23M      -   86ms      -   74ms      -  960ns      -   11ms      -      -      -
    wwn-0x5000c5008e6057fb      -      -      0     58      0  4.23M      -   85ms      -   73ms      -  768ns      -   12ms      -      -      -
    wwn-0x5000c5008e605d47      -      -      0     61      0  4.21M      -   84ms      -   71ms      -  672ns      -   12ms      -      -      -
    wwn-0x5000c5008e6114f7      -      -      0     55      0  4.20M      -  101ms      -   87ms      -  768ns      -   13ms      -      -      -
    wwn-0x5000c5008e64f5d3      -      -      0     57      0  4.23M      -   95ms      -   83ms      -  768ns      -   12ms      -      -      -
    wwn-0x5000c5008e65014b      -      -      0     59      0  4.18M      -   85ms      -   74ms      -  672ns      -   11ms      -      -      -
    wwn-0x5000c5008e69dea7      -      -      0     59      0  4.20M      -   83ms      -   72ms      -  768ns      -   11ms      -      -      -
    wwn-0x5000c5008e69e17f      -      -      0     58      0  4.20M      -   82ms      -   71ms      -  768ns      -   11ms      -      -      -
--------------------------  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----
workstation:/home/josh #

Во время чтения из того же файла (кэш предварительно сброшен):

workstation:/home/josh # echo 0 > /sys/module/zfs/parameters/zfs_arc_shrinker_limit
workstation:/home/josh # echo 3 > /proc/sys/vm/drop_caches
workstation:/home/josh # zpool iostat -vly 5 1
                              capacity     operations     bandwidth    total_wait     disk_wait    syncq_wait    asyncq_wait  scrub   trim  rebuild
pool                        alloc   free   read  write   read  write   read  write   read  write   read  write   read  write   wait   wait   wait
--------------------------  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----
media_storage               25.1G  43.6T  14.9K      0   376M      0    1ms      -  596us      -  201ms      -  593us      -      -      -      -
  raidz2-0                  25.1G  43.6T  14.9K      0   376M      0    1ms      -  596us      -  201ms      -  593us      -      -      -      -
    wwn-0x5000c5008e4e6d6b      -      -  1.87K      0  46.8M      0    1ms      -  615us      -  201ms      -  582us      -      -      -      -
    wwn-0x5000c5008e6057fb      -      -  1.97K      0  45.9M      0  747us      -  412us      -      -      -  324us      -      -      -      -
    wwn-0x5000c5008e605d47      -      -  1.82K      0  47.5M      0    1ms      -  623us      -      -      -  491us      -      -      -      -
    wwn-0x5000c5008e6114f7      -      -  1.79K      0  47.9M      0    1ms      -  709us      -      -      -  831us      -      -      -      -
    wwn-0x5000c5008e64f5d3      -      -  1.95K      0  46.3M      0  922us      -  491us      -      -      -  444us      -      -      -      -
    wwn-0x5000c5008e65014b      -      -  1.81K      0  47.7M      0    1ms      -  686us      -      -      -  953us      -      -      -      -
    wwn-0x5000c5008e69dea7      -      -  1.83K      0  47.0M      0    1ms      -  603us      -  201ms      -  527us      -      -      -      -
    wwn-0x5000c5008e69e17f      -      -  1.86K      0  47.2M      0    1ms      -  650us      -      -      -  632us      -      -      -      -
--------------------------  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----  -----
workstation:/home/josh #

Есть идеи, что может быть причиной узкого места скорости?

Ответ или решение

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

Теория

ZFS – это мощная файловая система, которая предлагает множество возможностей, включая управление объемами, сжатие данных и защиту от ошибок данных. Однако, несмотря на свои достоинства, она может быть сложной в настройке, особенно с точки зрения оптимизации производительности. RAIDZ-2 – это конфигурация, предназначенная для обеспечения высокой доступности данных, жертвуя при этом некоторой производительностью.

Ваша текущая конфигурация включает в себя 8 x 6TB SAS дисков, объединенных в RAIDZ-2 массив с шифрованием. RAIDZ-2 обеспечивает защиту данных от выхода из строя двух дисков, но при этом требует дополнительных вычислительных ресурсов для генерации и проверки данных чексуммы. Это может влиять на скорость записи, особенно в сочетании с шифрованием AES-256-GCM.

Пример

Согласно предоставленным данным, ваши показатели записи составляют приблизительно 33 MB/s, что значительно ниже ожидаемого. Для сравнения, операции чтения достигают 376 MB/s, что также не полностью соответствует потенциалу вашей конфигурации оборудования. Вы отметили, что при записи наблюдаются задержки около 87ms на звеном RAIDZ, что указывает на узкое место.

Вы также используете несколько опций, влияющих на задержки, включая lz4 сжатие и aes-256-gcm шифрование. Эти особенности могут потребовать дополнительных вычислительных ресурсов, однако вы указали, что нагрузка на процессор и использование оперативной памяти не являются значительными, имея в наличии мощное оборудование с 26 физическими ядрами и 192 ГБ ОЗУ. Это говорит о том, что ваше узкое место вероятно не связано с вычислительными ресурсами.

Применение

  1. Параметры файловой системы:

    • Измените recordsize: Ваш recordsize установлен на 128K, что является стандартным для большинства рабочей нагрузки. Проверьте изменение этого параметра на 256K или 1M в зависимости от типа данных, которые вы записываете.
  2. Оптимизация шифрования и безопасности:

    • Попробуйте реализовать ZFS без шифрования для тестирования чистой производительности. Если скорость записи увеличится, шифрование является узким местом. Подумайте о более легковесных вариантах шифрования или скажите своим пользователям о снижении потребности в шифровании, чтобы оценить необходимость этого компромисса.
  3. Настройка параметров ZFS:

    • Проверьте и отрегулируйте параметры zfs_vdev_sync_write_min_active и zfs_vdev_sync_write_max_active. Иногда настройка дисковых очередей может значительно помочь повысить производительность.
  4. Кэширование и LOG-устройства:

    • Рассмотрите возможность добавления SSD в ZFS pool как ZIL (ZFS Intent Log) или L2ARC для улучшения производительности записи и чтения, соответственно.
  5. Проверка состояния дисков:

    • Убедитесь, что все физические диски работают без ошибок, используя инструменты диагностики производителя. Иногда наличие проблем с аппаратным обеспечением, например, проблема на одном из дисков, может привести к снижению производительности на всём массиве.
  6. Другие системные проверки:

    • Убедитесь, что все прошивки и драйверы обновлены до последних версий для исключения проблем совместимости или других узких мест на уровне ОС.

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

Оцените материал
Добавить комментарий

Капча загружается...