Denver
Так насколько я помню zfs не даёт создание degrade pool из одного диска. Или сейчас он уже это умеет?
Не знаю как в Линукс, но фрибсд у меня сначала был один диск, потом в зеркало добавил второй диск. А вот raidz1 2 или 3 так не получится
Denver
С зеркалом возможно добавлять диски и удалять
Vladislav
Разделы используются А) для проверки write latency на диск (отдельный раздел куда выполняется короткий fio/dd) Б) под нужды задачи/системы В) Часть людей считают, что zfs не умеет оставлять кусок в конце диска под разные размеры (умеет), поэтому пишут ересь про разделы
Alexander
С зеркалом возможно добавлять диски и удалять
добавлять да, а вот сразу создать мирор даст ли на 1 девайсе?
Alexander
Нет. На одном не даст
так у товарища именно этот кейс) и он его хочет провернуть)
Denver
так у товарища именно этот кейс) и он его хочет провернуть)
Ух ты, не заметил. А я думал он про команды спрашивал
Alexander
Даст
если с файликом?
Vladislav
если с файликом?
С sparse файликом*
Alexander
потом добавить запасной и детачнуть файлик
Сергей
так у товарища именно этот кейс) и он его хочет провернуть)
Не. Не на одном. У меня две физические железки по 1ТБ каждая.
Denver
Даст
Согласен. Просто люди в других терминах думают. И если им легче от этого пусть будет не даст. Ничего не поменяется
Alexander
Не. Не на одном. У меня две физические железки по 1ТБ каждая.
так у тебя на одном уже данные)) и ты с него хочешь чтобы пошла копия))
Alexander
тут вообще интересно, и файловая, как бы там уже есть)) и явно он использовался без зфс))
Сергей
Да. Я создаю пул из одного диска - не зеркало. Затем со второго перенести (путем обычного копирования) данные в созданный пул, а уже после этого подключать к пулу второй диск (с которого уже скопированы данные) и создавать зеркало.
Vladislav
И, я правильно понимаю, что никто не послал человека прочитать документацию?
Denver
Послали Ман почитать
Vladislav
https://openzfs.github.io/openzfs-docs/man/master/8/zpool-attach.8.html https://openzfs.github.io/openzfs-docs/man/master/8/zpool-add.8.html
Vladislav
Так пусть читает и тренируется на кошках файлах
Alexander
а пока сделать, просто копии))
Сергей
А файлы тоже можно использовать как блочные устройства?
Hennadii
Да. Я создаю пул из одного диска - не зеркало. Затем со второго перенести (путем обычного копирования) данные в созданный пул, а уже после этого подключать к пулу второй диск (с которого уже скопированы данные) и создавать зеркало.
надо сразу зеркало создавать, одно устройство там буде Whole Disk, как рекомендовано в документации hxxps : // openzfs . github . io / openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html#whole-disks второе устройство - это sparse file, как про это написано в hxxps : // github . com / openzfs/zfs/issues/16367 потом сделать zpool offline для этого sparse file и потом zpool detach для него. после этого - можно будет потом добавить второй диск в этот degraded mirror через zpool attach лучше делать именно Whole disks, потому что тогда и производительность пула будет выше, потому что отключается совершенно не нужный в данном случае Linux IO elevator и кроме того - гораздо проще будет в будущем менять сбойные диски через zpool replace - не надо будет самому создавать никакие таблицы разделов или разделы - все это файловая система ZFS сделает самостоятельно.
Айтуар
Vladislav
Можно примонтировать через /dev/loop
Не надо так делать. У ZFS есть нормальный встроенный механизм для создания пула через файлы
Hennadii
Вопрос, как определить какой диск вышел из строя когда целым добавляется?
посмотреть zpool status # zpool status pool: tank state: ONLINE scan: resilvered 5.32T in 2 days 11:20:22 with 0 errors on Sun Dec 11 12:03:12 2022 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 ata-ST16000NM003G-2KH113_ZL2FHBH7 ONLINE 0 0 0 ata-ST16000NM003G-2KH113_ZL2FHBPR ONLINE 0 0 0 ata-ST16000NM001J-2TW113_ZR703LBB ONLINE 0 0 0 ata-ST16000NM003G-2KH113_ZL2FJ6CN ONLINE 0 0 0 ata-ST16000NM003G-2KH113_ZL2FJ8QB ONLINE 0 0 0 raidz2-1 ONLINE 0 0 0 ata-ST16000NM003G-2KH113_ZL2FJ9T8 ONLINE 0 0 0 ata-ST16000NM003G-2KH113_ZL2FJA0L ONLINE 0 0 0 ata-ST16000NM003G-2KH113_ZL2FJALS ONLINE 0 0 0 ata-ST16000NM003G-2KH113_ZL2FMGML ONLINE 0 0 0 ata-WDC_WUH721816ALE6L0_2CJ2G9UL ONLINE 0 0 0
Alexey
человек обратился с простым вопросом, вы ему за воротник напихали... 1. Создаем пул. Корневой датасет будет смонтирован в корень: /tank zpool create -o ashift=12 -O relatime=off -O atime=off -O compression=zstd -O xattr=sa -O normalization=formD -O acltype=posixacl -f tank /dev/disk/by-id/[чистый диск] 2. копируем данные со второго диска в пул cp /mnt/[каталог для монтирования диска с данными] /tank 3. проверяем, что данные скопировались zpool list zfs list видим, что % изменились, есть какая-то занятость пула ls -l /tank также видим семейные данные 4. форматируем диск с данными 5. добавляем диск к пулу с учетом, что хотим сделать зеркало zpool attach tank /dev/disk/by-id/[диск в пуле] /dev/disk/by-id/[подготовленный диск] 6. проверяем, ждем окончания синхронизации данных watch zpool status
Сергей
надо сразу зеркало создавать, одно устройство там буде Whole Disk, как рекомендовано в документации hxxps : // openzfs . github . io / openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html#whole-disks второе устройство - это sparse file, как про это написано в hxxps : // github . com / openzfs/zfs/issues/16367 потом сделать zpool offline для этого sparse file и потом zpool detach для него. после этого - можно будет потом добавить второй диск в этот degraded mirror через zpool attach лучше делать именно Whole disks, потому что тогда и производительность пула будет выше, потому что отключается совершенно не нужный в данном случае Linux IO elevator и кроме того - гораздо проще будет в будущем менять сбойные диски через zpool replace - не надо будет самому создавать никакие таблицы разделов или разделы - все это файловая система ZFS сделает самостоятельно.
Вот это то о чем я читал и здесь, выше, упоминал - что если есть возможность то лучше использовать диск целиком, без разделов. Я правильно понимаю, что и таблица разделов, та же GPT, не нужна?
Hennadii
Вот это то о чем я читал и здесь, выше, упоминал - что если есть возможность то лучше использовать диск целиком, без разделов. Я правильно понимаю, что и таблица разделов, та же GPT, не нужна?
zfs самостоятельно создаст таблицу разделов gpt, вот как эти диски выглядят через lsblk: # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 14.6T 0 disk ├─sda1 8:1 0 14.6T 0 part └─sda9 8:9 0 8M 0 part sdb 8:16 0 14.6T 0 disk ├─sdb1 8:17 0 14.6T 0 part └─sdb9 8:25 0 8M 0 part sdc 8:32 0 14.6T 0 disk ├─sdc1 8:33 0 14.6T 0 part └─sdc9 8:41 0 8M 0 part sdd 8:48 0 14.6T 0 disk ├─sdd1 8:49 0 14.6T 0 part └─sdd9 8:57 0 8M 0 part sde 8:64 0 14.6T 0 disk ├─sde1 8:65 0 14.6T 0 part └─sde9 8:73 0 8M 0 part sdf 8:80 0 14.6T 0 disk ├─sdf1 8:81 0 14.6T 0 part └─sdf9 8:89 0 8M 0 part sdg 8:96 0 14.6T 0 disk ├─sdg1 8:97 0 14.6T 0 part └─sdg9 8:105 0 8M 0 part sdh 8:112 0 14.6T 0 disk ├─sdh1 8:113 0 14.6T 0 part └─sdh9 8:121 0 8M 0 part sdi 8:128 0 14.6T 0 disk ├─sdi1 8:129 0 14.6T 0 part └─sdi9 8:137 0 8M 0 part sdj 8:144 0 14.6T 0 disk ├─sdj1 8:145 0 14.6T 0 part └─sdj9 8:153 0 8M 0 part
Vladislav
жестко :)
Зато справедливо
Vladislav
И плюс, потом будет меньше проблем с восстановлением данных, если перед тем как заниматься zfs человек прочитает доку и zfs 101
Alexey
"Здравствуйте, я новичок, я хочу..." "Иди читай доки, прежде чем в клуб к нам вступать!" :))
Alexey
"Не достоин!.. пока"
Alexander
"Не достоин!.. пока"
совершенно не так, человеку дали советы, как не потерять свою "ценную" информацию, параллельно изучить и попробовать на кошках.. если будет пытаться пробовать , сам искать решение на файликах, люди помогут советом
Сергей
Ребята, не ссорьтесь, пожалуйста) Я получил много ответов, в том числе конструктивные. Благодарю всех ✌️ сЁдняЖпятницаВычЁ 😏
Hennadii
Здравствуйте, All! Подскажите пожалуйста, как оптимальнее всего настроить сервер с ZFS, чтобы была прежде всего максимальная надежность хранения данных и вторым по приоритетности - максимальная скорость работы, но не в ущерб надежности и стабильности. Технические параметры сервера Процессор AMD Ryzen 9 3900 12-Core Processor Память 128 GiB DDR4 ECC Подсистема хранения 2 x 1.92 TB (Gen 3) NVMe + 8 x 22 TB SATA 6Gb/s 7200 rpm Операционная система Rocky Linux 9.5 + zfs-2.1.16 Планирую сделать один RAIDZ2 vdev из всех этих 8 HDD каждый из которых имеет размер 20 TiB (или 22 TB, другими словами). zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posix tank raid2 ... Это выделенный сервер у которого только одна роль - backup server, куда будут писаться через ssh zfs send ...| zfs recv ... в постоянном режиме все датасеты со всех серверов (постоянная репликация с паузой между повторными попытками в 10 минут). Датасеты с удаленных серверов - это в основном sparse zvol размером 64 TiB с volblocksize=16K и данными на XFS внутри zvol. ARC займет своих 50% оперативной памяти или даже 80%. L2ARC не вижу смысла вообще делать, потому что на этот сервер будут в основном только писать, а читать будут очень редко - когда надо будет что-то восстановить из резервных копий. special device на NVMe тоже не вижу смысла делать, потому что это значительно уменьшит надежность файловой системы и увеличит ее хрупкость, даже если бы это и дало какой-то небольшой прирост производительности при записи на диски. При такой конфигруации - если делать из 8 HDD на 20 TiB один RAIDZ2 vdev - два HDD уйдут на контрольные суммы и примерно 120 TiB будет доступного места на диске. Если в такой конфигурации сервер не будет справляться с нагрузкой на запись - тогда наверное единственным вариантом будет сделать два RAIDZ2 vdev каждый по 4 диска, тогда на контрольные суммы уйдет 4 диска и полезный объем пула будет 80 TiB, но при этом - будет в два раза выше производительность дисковой подсистемы, потому что будет два RAIDZ2 vdev вместо одного. RAIDZ3 vdev из 8 HDD наверное нет смысла делать, потому что это еще сильнее уменьшит производительность дисковой подсистемы по сравнению с RAIDZ2 vdev. А надежность у RAIDZ2 vdev вполне достаточная для выполнения этой задачи. Что не могу пока что понять: Если поставить logbias=throughput то в man странице написано, что в таком случае SLOG вообще не будет использоваться. А если поставить logbias=latency (по умолчанию) тогда будет использоваться SLOG для записи synchronous requests. Но не понятно, когда 100% операций записи на zfs pool производит команда zfs receive - есть ли тогда synchronous requests и какой именно размер SLOG будет самым оптимальным для такого zpool ? Или имеет смысл просто поставить logbias=throughput и забыть про эту проблему с SLOG (он же ZIL) и L2ARC вообще? Возможно есть еще какие-то варианты и способы как выжать максимум производительности из файловой системы ZFS на этом сервере, обладающего таким hardware, возможно про какие-то еще настройки zpool для оптимизации производительности я забыл ? tuned profile на этом сервере установлен в network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance.
Vladislav
Здравствуйте, All! Подскажите пожалуйста, как оптимальнее всего настроить сервер с ZFS, чтобы была прежде всего максимальная надежность хранения данных и вторым по приоритетности - максимальная скорость работы, но не в ущерб надежности и стабильности. Технические параметры сервера Процессор AMD Ryzen 9 3900 12-Core Processor Память 128 GiB DDR4 ECC Подсистема хранения 2 x 1.92 TB (Gen 3) NVMe + 8 x 22 TB SATA 6Gb/s 7200 rpm Операционная система Rocky Linux 9.5 + zfs-2.1.16 Планирую сделать один RAIDZ2 vdev из всех этих 8 HDD каждый из которых имеет размер 20 TiB (или 22 TB, другими словами). zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posix tank raid2 ... Это выделенный сервер у которого только одна роль - backup server, куда будут писаться через ssh zfs send ...| zfs recv ... в постоянном режиме все датасеты со всех серверов (постоянная репликация с паузой между повторными попытками в 10 минут). Датасеты с удаленных серверов - это в основном sparse zvol размером 64 TiB с volblocksize=16K и данными на XFS внутри zvol. ARC займет своих 50% оперативной памяти или даже 80%. L2ARC не вижу смысла вообще делать, потому что на этот сервер будут в основном только писать, а читать будут очень редко - когда надо будет что-то восстановить из резервных копий. special device на NVMe тоже не вижу смысла делать, потому что это значительно уменьшит надежность файловой системы и увеличит ее хрупкость, даже если бы это и дало какой-то небольшой прирост производительности при записи на диски. При такой конфигруации - если делать из 8 HDD на 20 TiB один RAIDZ2 vdev - два HDD уйдут на контрольные суммы и примерно 120 TiB будет доступного места на диске. Если в такой конфигурации сервер не будет справляться с нагрузкой на запись - тогда наверное единственным вариантом будет сделать два RAIDZ2 vdev каждый по 4 диска, тогда на контрольные суммы уйдет 4 диска и полезный объем пула будет 80 TiB, но при этом - будет в два раза выше производительность дисковой подсистемы, потому что будет два RAIDZ2 vdev вместо одного. RAIDZ3 vdev из 8 HDD наверное нет смысла делать, потому что это еще сильнее уменьшит производительность дисковой подсистемы по сравнению с RAIDZ2 vdev. А надежность у RAIDZ2 vdev вполне достаточная для выполнения этой задачи. Что не могу пока что понять: Если поставить logbias=throughput то в man странице написано, что в таком случае SLOG вообще не будет использоваться. А если поставить logbias=latency (по умолчанию) тогда будет использоваться SLOG для записи synchronous requests. Но не понятно, когда 100% операций записи на zfs pool производит команда zfs receive - есть ли тогда synchronous requests и какой именно размер SLOG будет самым оптимальным для такого zpool ? Или имеет смысл просто поставить logbias=throughput и забыть про эту проблему с SLOG (он же ZIL) и L2ARC вообще? Возможно есть еще какие-то варианты и способы как выжать максимум производительности из файловой системы ZFS на этом сервере, обладающего таким hardware, возможно про какие-то еще настройки zpool для оптимизации производительности я забыл ? tuned profile на этом сервере установлен в network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance.
Для начала обновиться
Vladislav
https://www.truenas.com/community/threads/silent-corruption-with-openzfs-ongoing-discussion-and-testing.114390/ This has been reproduced on OpenZFS 2.2.0, OpenZFS 2.1.11, and Open ZFS 2.1.13.
Vladislav
Здравствуйте, All! Подскажите пожалуйста, как оптимальнее всего настроить сервер с ZFS, чтобы была прежде всего максимальная надежность хранения данных и вторым по приоритетности - максимальная скорость работы, но не в ущерб надежности и стабильности. Технические параметры сервера Процессор AMD Ryzen 9 3900 12-Core Processor Память 128 GiB DDR4 ECC Подсистема хранения 2 x 1.92 TB (Gen 3) NVMe + 8 x 22 TB SATA 6Gb/s 7200 rpm Операционная система Rocky Linux 9.5 + zfs-2.1.16 Планирую сделать один RAIDZ2 vdev из всех этих 8 HDD каждый из которых имеет размер 20 TiB (или 22 TB, другими словами). zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posix tank raid2 ... Это выделенный сервер у которого только одна роль - backup server, куда будут писаться через ssh zfs send ...| zfs recv ... в постоянном режиме все датасеты со всех серверов (постоянная репликация с паузой между повторными попытками в 10 минут). Датасеты с удаленных серверов - это в основном sparse zvol размером 64 TiB с volblocksize=16K и данными на XFS внутри zvol. ARC займет своих 50% оперативной памяти или даже 80%. L2ARC не вижу смысла вообще делать, потому что на этот сервер будут в основном только писать, а читать будут очень редко - когда надо будет что-то восстановить из резервных копий. special device на NVMe тоже не вижу смысла делать, потому что это значительно уменьшит надежность файловой системы и увеличит ее хрупкость, даже если бы это и дало какой-то небольшой прирост производительности при записи на диски. При такой конфигруации - если делать из 8 HDD на 20 TiB один RAIDZ2 vdev - два HDD уйдут на контрольные суммы и примерно 120 TiB будет доступного места на диске. Если в такой конфигурации сервер не будет справляться с нагрузкой на запись - тогда наверное единственным вариантом будет сделать два RAIDZ2 vdev каждый по 4 диска, тогда на контрольные суммы уйдет 4 диска и полезный объем пула будет 80 TiB, но при этом - будет в два раза выше производительность дисковой подсистемы, потому что будет два RAIDZ2 vdev вместо одного. RAIDZ3 vdev из 8 HDD наверное нет смысла делать, потому что это еще сильнее уменьшит производительность дисковой подсистемы по сравнению с RAIDZ2 vdev. А надежность у RAIDZ2 vdev вполне достаточная для выполнения этой задачи. Что не могу пока что понять: Если поставить logbias=throughput то в man странице написано, что в таком случае SLOG вообще не будет использоваться. А если поставить logbias=latency (по умолчанию) тогда будет использоваться SLOG для записи synchronous requests. Но не понятно, когда 100% операций записи на zfs pool производит команда zfs receive - есть ли тогда synchronous requests и какой именно размер SLOG будет самым оптимальным для такого zpool ? Или имеет смысл просто поставить logbias=throughput и забыть про эту проблему с SLOG (он же ZIL) и L2ARC вообще? Возможно есть еще какие-то варианты и способы как выжать максимум производительности из файловой системы ZFS на этом сервере, обладающего таким hardware, возможно про какие-то еще настройки zpool для оптимизации производительности я забыл ? tuned profile на этом сервере установлен в network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance.
@lvdmhm, не у тебя ли была бага с zfs send?
Vladislav
Здравствуйте, All! Подскажите пожалуйста, как оптимальнее всего настроить сервер с ZFS, чтобы была прежде всего максимальная надежность хранения данных и вторым по приоритетности - максимальная скорость работы, но не в ущерб надежности и стабильности. Технические параметры сервера Процессор AMD Ryzen 9 3900 12-Core Processor Память 128 GiB DDR4 ECC Подсистема хранения 2 x 1.92 TB (Gen 3) NVMe + 8 x 22 TB SATA 6Gb/s 7200 rpm Операционная система Rocky Linux 9.5 + zfs-2.1.16 Планирую сделать один RAIDZ2 vdev из всех этих 8 HDD каждый из которых имеет размер 20 TiB (или 22 TB, другими словами). zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posix tank raid2 ... Это выделенный сервер у которого только одна роль - backup server, куда будут писаться через ssh zfs send ...| zfs recv ... в постоянном режиме все датасеты со всех серверов (постоянная репликация с паузой между повторными попытками в 10 минут). Датасеты с удаленных серверов - это в основном sparse zvol размером 64 TiB с volblocksize=16K и данными на XFS внутри zvol. ARC займет своих 50% оперативной памяти или даже 80%. L2ARC не вижу смысла вообще делать, потому что на этот сервер будут в основном только писать, а читать будут очень редко - когда надо будет что-то восстановить из резервных копий. special device на NVMe тоже не вижу смысла делать, потому что это значительно уменьшит надежность файловой системы и увеличит ее хрупкость, даже если бы это и дало какой-то небольшой прирост производительности при записи на диски. При такой конфигруации - если делать из 8 HDD на 20 TiB один RAIDZ2 vdev - два HDD уйдут на контрольные суммы и примерно 120 TiB будет доступного места на диске. Если в такой конфигурации сервер не будет справляться с нагрузкой на запись - тогда наверное единственным вариантом будет сделать два RAIDZ2 vdev каждый по 4 диска, тогда на контрольные суммы уйдет 4 диска и полезный объем пула будет 80 TiB, но при этом - будет в два раза выше производительность дисковой подсистемы, потому что будет два RAIDZ2 vdev вместо одного. RAIDZ3 vdev из 8 HDD наверное нет смысла делать, потому что это еще сильнее уменьшит производительность дисковой подсистемы по сравнению с RAIDZ2 vdev. А надежность у RAIDZ2 vdev вполне достаточная для выполнения этой задачи. Что не могу пока что понять: Если поставить logbias=throughput то в man странице написано, что в таком случае SLOG вообще не будет использоваться. А если поставить logbias=latency (по умолчанию) тогда будет использоваться SLOG для записи synchronous requests. Но не понятно, когда 100% операций записи на zfs pool производит команда zfs receive - есть ли тогда synchronous requests и какой именно размер SLOG будет самым оптимальным для такого zpool ? Или имеет смысл просто поставить logbias=throughput и забыть про эту проблему с SLOG (он же ZIL) и L2ARC вообще? Возможно есть еще какие-то варианты и способы как выжать максимум производительности из файловой системы ZFS на этом сервере, обладающего таким hardware, возможно про какие-то еще настройки zpool для оптимизации производительности я забыл ? tuned profile на этом сервере установлен в network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance.
Рекомендую лучше отработать это, как происходит восстановление, что для этого надо сделать
Vladislav
Здравствуйте, All! Подскажите пожалуйста, как оптимальнее всего настроить сервер с ZFS, чтобы была прежде всего максимальная надежность хранения данных и вторым по приоритетности - максимальная скорость работы, но не в ущерб надежности и стабильности. Технические параметры сервера Процессор AMD Ryzen 9 3900 12-Core Processor Память 128 GiB DDR4 ECC Подсистема хранения 2 x 1.92 TB (Gen 3) NVMe + 8 x 22 TB SATA 6Gb/s 7200 rpm Операционная система Rocky Linux 9.5 + zfs-2.1.16 Планирую сделать один RAIDZ2 vdev из всех этих 8 HDD каждый из которых имеет размер 20 TiB (или 22 TB, другими словами). zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posix tank raid2 ... Это выделенный сервер у которого только одна роль - backup server, куда будут писаться через ssh zfs send ...| zfs recv ... в постоянном режиме все датасеты со всех серверов (постоянная репликация с паузой между повторными попытками в 10 минут). Датасеты с удаленных серверов - это в основном sparse zvol размером 64 TiB с volblocksize=16K и данными на XFS внутри zvol. ARC займет своих 50% оперативной памяти или даже 80%. L2ARC не вижу смысла вообще делать, потому что на этот сервер будут в основном только писать, а читать будут очень редко - когда надо будет что-то восстановить из резервных копий. special device на NVMe тоже не вижу смысла делать, потому что это значительно уменьшит надежность файловой системы и увеличит ее хрупкость, даже если бы это и дало какой-то небольшой прирост производительности при записи на диски. При такой конфигруации - если делать из 8 HDD на 20 TiB один RAIDZ2 vdev - два HDD уйдут на контрольные суммы и примерно 120 TiB будет доступного места на диске. Если в такой конфигурации сервер не будет справляться с нагрузкой на запись - тогда наверное единственным вариантом будет сделать два RAIDZ2 vdev каждый по 4 диска, тогда на контрольные суммы уйдет 4 диска и полезный объем пула будет 80 TiB, но при этом - будет в два раза выше производительность дисковой подсистемы, потому что будет два RAIDZ2 vdev вместо одного. RAIDZ3 vdev из 8 HDD наверное нет смысла делать, потому что это еще сильнее уменьшит производительность дисковой подсистемы по сравнению с RAIDZ2 vdev. А надежность у RAIDZ2 vdev вполне достаточная для выполнения этой задачи. Что не могу пока что понять: Если поставить logbias=throughput то в man странице написано, что в таком случае SLOG вообще не будет использоваться. А если поставить logbias=latency (по умолчанию) тогда будет использоваться SLOG для записи synchronous requests. Но не понятно, когда 100% операций записи на zfs pool производит команда zfs receive - есть ли тогда synchronous requests и какой именно размер SLOG будет самым оптимальным для такого zpool ? Или имеет смысл просто поставить logbias=throughput и забыть про эту проблему с SLOG (он же ZIL) и L2ARC вообще? Возможно есть еще какие-то варианты и способы как выжать максимум производительности из файловой системы ZFS на этом сервере, обладающего таким hardware, возможно про какие-то еще настройки zpool для оптимизации производительности я забыл ? tuned profile на этом сервере установлен в network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance.
Это не совсем линейная прогрессия
Alexey
если есть возможность, делайте draidz2 массив на 8 дисках
Alexey
вся запись данных на zfs пул проходит через zil. Вы можете выделить его на отдельные носители или не выделять, все равно будет идти запись запись через него. Это настройки по умолчанию. параметр logbias позволяет управлять потоком записи через zil. Вы можете данные непосредственно писать на диски, минуя zill (параметр logbias=throughput ) Это актуально например для БД postgresql.
Vladislav
Здравствуйте, All! Подскажите пожалуйста, как оптимальнее всего настроить сервер с ZFS, чтобы была прежде всего максимальная надежность хранения данных и вторым по приоритетности - максимальная скорость работы, но не в ущерб надежности и стабильности. Технические параметры сервера Процессор AMD Ryzen 9 3900 12-Core Processor Память 128 GiB DDR4 ECC Подсистема хранения 2 x 1.92 TB (Gen 3) NVMe + 8 x 22 TB SATA 6Gb/s 7200 rpm Операционная система Rocky Linux 9.5 + zfs-2.1.16 Планирую сделать один RAIDZ2 vdev из всех этих 8 HDD каждый из которых имеет размер 20 TiB (или 22 TB, другими словами). zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posix tank raid2 ... Это выделенный сервер у которого только одна роль - backup server, куда будут писаться через ssh zfs send ...| zfs recv ... в постоянном режиме все датасеты со всех серверов (постоянная репликация с паузой между повторными попытками в 10 минут). Датасеты с удаленных серверов - это в основном sparse zvol размером 64 TiB с volblocksize=16K и данными на XFS внутри zvol. ARC займет своих 50% оперативной памяти или даже 80%. L2ARC не вижу смысла вообще делать, потому что на этот сервер будут в основном только писать, а читать будут очень редко - когда надо будет что-то восстановить из резервных копий. special device на NVMe тоже не вижу смысла делать, потому что это значительно уменьшит надежность файловой системы и увеличит ее хрупкость, даже если бы это и дало какой-то небольшой прирост производительности при записи на диски. При такой конфигруации - если делать из 8 HDD на 20 TiB один RAIDZ2 vdev - два HDD уйдут на контрольные суммы и примерно 120 TiB будет доступного места на диске. Если в такой конфигурации сервер не будет справляться с нагрузкой на запись - тогда наверное единственным вариантом будет сделать два RAIDZ2 vdev каждый по 4 диска, тогда на контрольные суммы уйдет 4 диска и полезный объем пула будет 80 TiB, но при этом - будет в два раза выше производительность дисковой подсистемы, потому что будет два RAIDZ2 vdev вместо одного. RAIDZ3 vdev из 8 HDD наверное нет смысла делать, потому что это еще сильнее уменьшит производительность дисковой подсистемы по сравнению с RAIDZ2 vdev. А надежность у RAIDZ2 vdev вполне достаточная для выполнения этой задачи. Что не могу пока что понять: Если поставить logbias=throughput то в man странице написано, что в таком случае SLOG вообще не будет использоваться. А если поставить logbias=latency (по умолчанию) тогда будет использоваться SLOG для записи synchronous requests. Но не понятно, когда 100% операций записи на zfs pool производит команда zfs receive - есть ли тогда synchronous requests и какой именно размер SLOG будет самым оптимальным для такого zpool ? Или имеет смысл просто поставить logbias=throughput и забыть про эту проблему с SLOG (он же ZIL) и L2ARC вообще? Возможно есть еще какие-то варианты и способы как выжать максимум производительности из файловой системы ZFS на этом сервере, обладающего таким hardware, возможно про какие-то еще настройки zpool для оптимизации производительности я забыл ? tuned profile на этом сервере установлен в network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance.
async write https://www.reddit.com/r/zfs/comments/10k4fv4/comment/j5ofp13/ https://www.truenas.com/community/threads/zfs-receive-and-slog.56820/ Детальней только в код лезть
Alexey
sync лучше не трогать, если Вам дороги данные. Если же потеря данных не критична, то можно для небольшого ускорения записи отключить синхронизацию. Даже писать не буду как, чтобы не соблазнять :)
Alexey
если вдруг пропадет питание или еще по какой причине выключится сервер, не закончив прием данных, то весь датасет не передастся/ не примется. Операция не будет закончена. Думаю, что sync в этом случае не важен? Любой из его параметров не даст результат.
Alexey
я про настройку пула писал
Vladislav
вся sync запись (которая в нашем случае async) на zfs пул проходит через ZIL. - Да это так Есть ли смысл использовать ZIL(SLOG) для zfs send | recv бэкапного сервера? с чего бы?
Vladislav
Здравствуйте, All! Подскажите пожалуйста, как оптимальнее всего настроить сервер с ZFS, чтобы была прежде всего максимальная надежность хранения данных и вторым по приоритетности - максимальная скорость работы, но не в ущерб надежности и стабильности. Технические параметры сервера Процессор AMD Ryzen 9 3900 12-Core Processor Память 128 GiB DDR4 ECC Подсистема хранения 2 x 1.92 TB (Gen 3) NVMe + 8 x 22 TB SATA 6Gb/s 7200 rpm Операционная система Rocky Linux 9.5 + zfs-2.1.16 Планирую сделать один RAIDZ2 vdev из всех этих 8 HDD каждый из которых имеет размер 20 TiB (или 22 TB, другими словами). zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posix tank raid2 ... Это выделенный сервер у которого только одна роль - backup server, куда будут писаться через ssh zfs send ...| zfs recv ... в постоянном режиме все датасеты со всех серверов (постоянная репликация с паузой между повторными попытками в 10 минут). Датасеты с удаленных серверов - это в основном sparse zvol размером 64 TiB с volblocksize=16K и данными на XFS внутри zvol. ARC займет своих 50% оперативной памяти или даже 80%. L2ARC не вижу смысла вообще делать, потому что на этот сервер будут в основном только писать, а читать будут очень редко - когда надо будет что-то восстановить из резервных копий. special device на NVMe тоже не вижу смысла делать, потому что это значительно уменьшит надежность файловой системы и увеличит ее хрупкость, даже если бы это и дало какой-то небольшой прирост производительности при записи на диски. При такой конфигруации - если делать из 8 HDD на 20 TiB один RAIDZ2 vdev - два HDD уйдут на контрольные суммы и примерно 120 TiB будет доступного места на диске. Если в такой конфигурации сервер не будет справляться с нагрузкой на запись - тогда наверное единственным вариантом будет сделать два RAIDZ2 vdev каждый по 4 диска, тогда на контрольные суммы уйдет 4 диска и полезный объем пула будет 80 TiB, но при этом - будет в два раза выше производительность дисковой подсистемы, потому что будет два RAIDZ2 vdev вместо одного. RAIDZ3 vdev из 8 HDD наверное нет смысла делать, потому что это еще сильнее уменьшит производительность дисковой подсистемы по сравнению с RAIDZ2 vdev. А надежность у RAIDZ2 vdev вполне достаточная для выполнения этой задачи. Что не могу пока что понять: Если поставить logbias=throughput то в man странице написано, что в таком случае SLOG вообще не будет использоваться. А если поставить logbias=latency (по умолчанию) тогда будет использоваться SLOG для записи synchronous requests. Но не понятно, когда 100% операций записи на zfs pool производит команда zfs receive - есть ли тогда synchronous requests и какой именно размер SLOG будет самым оптимальным для такого zpool ? Или имеет смысл просто поставить logbias=throughput и забыть про эту проблему с SLOG (он же ZIL) и L2ARC вообще? Возможно есть еще какие-то варианты и способы как выжать максимум производительности из файловой системы ZFS на этом сервере, обладающего таким hardware, возможно про какие-то еще настройки zpool для оптимизации производительности я забыл ? tuned profile на этом сервере установлен в network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance.
Есть только одна проблема. Время ребилда.
Vladislav
Ну и конечно же отсутствие hotspare и я не вижу ничего про мониторинг дисков
Alexey
при send | receive данные идут минуя SLOG на принимающей стороне? Я не увидел сейчас: передавал 32ГБ LOG не качнулся.
Vladislav
Это вопрос кому? И ответ кому?
Hennadii
Для начала обновиться
обновиться куда? на этом сервере установлена самая новая версия операционной системы и самая новая версия zfs из репозитория zfs stable. версия 2.1.16 это самая крайняя версия в ветке 2.1-release, которая устанавливается из репозитория zfs. более новой версии в ветке 2.1-release в данный момент не существует, так что некуда обновляться. более новая версия 2.2.7 из ветки 2.2-release лежит в репозитории zfs-testing, но в документации hxxps : // openzfs . github . io / openzfs-docs/Getting%20Started/RHEL-based%20distro/index.html#testing-repositories написано, что она не рекомендуется для использования on production systems: In addition to the primary zfs repository a zfs-testing repository is available. This repository, which is disabled by default, contains the latest version of OpenZFS which is under active development. These packages are made available in order to get feedback from users regarding the functionality and stability of upcoming releases. These packages should not be used on production systems. этот сервер - production system, поэтому использую zfs из репозитория zfs stable, а не zfs из репозитория zfs testing.
Vladislav
обновиться куда? на этом сервере установлена самая новая версия операционной системы и самая новая версия zfs из репозитория zfs stable. версия 2.1.16 это самая крайняя версия в ветке 2.1-release, которая устанавливается из репозитория zfs. более новой версии в ветке 2.1-release в данный момент не существует, так что некуда обновляться. более новая версия 2.2.7 из ветки 2.2-release лежит в репозитории zfs-testing, но в документации hxxps : // openzfs . github . io / openzfs-docs/Getting%20Started/RHEL-based%20distro/index.html#testing-repositories написано, что она не рекомендуется для использования on production systems: In addition to the primary zfs repository a zfs-testing repository is available. This repository, which is disabled by default, contains the latest version of OpenZFS which is under active development. These packages are made available in order to get feedback from users regarding the functionality and stability of upcoming releases. These packages should not be used on production systems. этот сервер - production system, поэтому использую zfs из репозитория zfs stable, а не zfs из репозитория zfs testing.
Это что за репозиторий?
Vladislav
https://launchpad.net/~zfs-native/+archive/ubuntu/stable Это там где последнее обновление было 387 недель назад?
Hennadii
Это что за репозиторий?
это официальный и основной репозиторий zfsonlinux . org о котором написано в документации на OpenZFS hxxps : // openzfs . github . io / openzfs-docs/Getting%20Started/RHEL-based%20distro/index.html#rhel-based-distro
Vladislav
обновиться куда? на этом сервере установлена самая новая версия операционной системы и самая новая версия zfs из репозитория zfs stable. версия 2.1.16 это самая крайняя версия в ветке 2.1-release, которая устанавливается из репозитория zfs. более новой версии в ветке 2.1-release в данный момент не существует, так что некуда обновляться. более новая версия 2.2.7 из ветки 2.2-release лежит в репозитории zfs-testing, но в документации hxxps : // openzfs . github . io / openzfs-docs/Getting%20Started/RHEL-based%20distro/index.html#testing-repositories написано, что она не рекомендуется для использования on production systems: In addition to the primary zfs repository a zfs-testing repository is available. This repository, which is disabled by default, contains the latest version of OpenZFS which is under active development. These packages are made available in order to get feedback from users regarding the functionality and stability of upcoming releases. These packages should not be used on production systems. этот сервер - production system, поэтому использую zfs из репозитория zfs stable, а не zfs из репозитория zfs testing.
Этот "сервер" использует: - десктопный проц, с неофициально заявленной поддержкой UDIMM ECC - неизвестный HBA (это не ведь не материнский SATA контроллер, который захлёбнется от постоянной нагрузки?) - неизвестной модели диски, которые могут быть SMR - и надеюсь это хотя бы Asrock \ Supermicro материнска с IPMI? Но да, конечно основная проблема которая может быть это zfs-testing и использование не RHEL-like дистрибутива
Vladislav
Я так понимаю это hetzner? Учитывая, что про восстановление или какие сетевые адаптеры (и смогут ли они прокачать этот трафик) пока что нет ни слова
Vladislav
Здравствуйте, All! Подскажите пожалуйста, как оптимальнее всего настроить сервер с ZFS, чтобы была прежде всего максимальная надежность хранения данных и вторым по приоритетности - максимальная скорость работы, но не в ущерб надежности и стабильности. Технические параметры сервера Процессор AMD Ryzen 9 3900 12-Core Processor Память 128 GiB DDR4 ECC Подсистема хранения 2 x 1.92 TB (Gen 3) NVMe + 8 x 22 TB SATA 6Gb/s 7200 rpm Операционная система Rocky Linux 9.5 + zfs-2.1.16 Планирую сделать один RAIDZ2 vdev из всех этих 8 HDD каждый из которых имеет размер 20 TiB (или 22 TB, другими словами). zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posix tank raid2 ... Это выделенный сервер у которого только одна роль - backup server, куда будут писаться через ssh zfs send ...| zfs recv ... в постоянном режиме все датасеты со всех серверов (постоянная репликация с паузой между повторными попытками в 10 минут). Датасеты с удаленных серверов - это в основном sparse zvol размером 64 TiB с volblocksize=16K и данными на XFS внутри zvol. ARC займет своих 50% оперативной памяти или даже 80%. L2ARC не вижу смысла вообще делать, потому что на этот сервер будут в основном только писать, а читать будут очень редко - когда надо будет что-то восстановить из резервных копий. special device на NVMe тоже не вижу смысла делать, потому что это значительно уменьшит надежность файловой системы и увеличит ее хрупкость, даже если бы это и дало какой-то небольшой прирост производительности при записи на диски. При такой конфигруации - если делать из 8 HDD на 20 TiB один RAIDZ2 vdev - два HDD уйдут на контрольные суммы и примерно 120 TiB будет доступного места на диске. Если в такой конфигурации сервер не будет справляться с нагрузкой на запись - тогда наверное единственным вариантом будет сделать два RAIDZ2 vdev каждый по 4 диска, тогда на контрольные суммы уйдет 4 диска и полезный объем пула будет 80 TiB, но при этом - будет в два раза выше производительность дисковой подсистемы, потому что будет два RAIDZ2 vdev вместо одного. RAIDZ3 vdev из 8 HDD наверное нет смысла делать, потому что это еще сильнее уменьшит производительность дисковой подсистемы по сравнению с RAIDZ2 vdev. А надежность у RAIDZ2 vdev вполне достаточная для выполнения этой задачи. Что не могу пока что понять: Если поставить logbias=throughput то в man странице написано, что в таком случае SLOG вообще не будет использоваться. А если поставить logbias=latency (по умолчанию) тогда будет использоваться SLOG для записи synchronous requests. Но не понятно, когда 100% операций записи на zfs pool производит команда zfs receive - есть ли тогда synchronous requests и какой именно размер SLOG будет самым оптимальным для такого zpool ? Или имеет смысл просто поставить logbias=throughput и забыть про эту проблему с SLOG (он же ZIL) и L2ARC вообще? Возможно есть еще какие-то варианты и способы как выжать максимум производительности из файловой системы ZFS на этом сервере, обладающего таким hardware, возможно про какие-то еще настройки zpool для оптимизации производительности я забыл ? tuned profile на этом сервере установлен в network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance.
Что?