George
Все это будет приближенно
именно, ни дедуп ни компрессию невозможно заранее рассчитать. Так что если у вас переподписка по месту больше 1, то такие ситуации возможны
Константин
именно, ни дедуп ни компрессию невозможно заранее рассчитать. Так что если у вас переподписка по месту больше 1, то такие ситуации возможны
А что с данными и с доступом на запись по итогу будет ? Датасеты такой конфигурации будут разделять общее пространство пула ?
Константин
И в какой то момент не смогут записать тот гарантированный минимум который выделили?
George
А что с данными и с доступом на запись по итогу будет ? Датасеты такой конфигурации будут разделять общее пространство пула ?
они всегда разделяют общее пространство, в zfs не резервируется фактическое пространство, резервирование работает только на уровне расчёта объёма свободного пространства, и то не на 100% точно
George
резервируя на 100ГБ больше, чем есть на пуле, вы сами создаёте эту ситуацию
Константин
резервируя на 100ГБ больше, чем есть на пуле, вы сами создаёте эту ситуацию
Но в одном случае zfs следит за этим и не даёт а в другом разрешает
George
можете ещё тут обсудить с коммьюнити при желании https://github.com/openzfs/zfs/discussions
George
99% ответят что это возможный tradeoff этого механизма при использовании дедупа и сжатия
George
(в общем то, дедуп и сжатие для того и нужны, чтобы смочь запихнуть в пул больше чем там есть :D )
Константин
Константин
Коэф 1
Константин
Дублирующиеся блоков нет
George
Всем привет. Помогите разобраться с поведением или это баг в zfs. Есть пул на 1000 гигов. На нем я не могу создать 2 толстых файловых системы zfs на 500 и 600 гигов (refreservation = 500 и 600 гигов соответственно). И это правильно. НО 1 создаю толстую ФС на 500 гигов 2 включаю на ней дедупликацию 3 заливаю туда 200гиг, т.е. 20 одинаковых файлов по 10 гигов 4 наблюдаю картину что реально записалось чуть больше 10 гигов на пул и коэф дедупа 20 5 вижу что 190 гигов толстая фс вернула пулу , потому что у пула свойство available увеличилось примерно на столько. 6 создаю вторую толстую фс на 600 гиг, zfs разрешило создать 8 на пуле ещё 90 гиг свободных вижу 9 удаляю все данные с дедуплицированной толстой фс 10 я так понимаю она пытается себе назад 190 вернуть 11 вижу что те 90 свободных из пула исчезли , на пуле стало 0 , но откуда ещё 100 гигов удалось взять ???? 12 результат следующий , что не получилось вначале сделать , удалось другим путём , у меня 2 Толстых фс 500 и 600 гигов соответственно на пуле в 1000 гигов. Вопрос откуда эти 100 гиг если их физически нет. Получается толстые фс которым предоставлено обязательное пространство делят между собой общее пространство пула ? Что будет с данными если забить и ту и ту фс полностью ? Они перетруться или zfs не даст записать ? Как сумма refreservation 2х датасетов больше чем размер пула ???? Можете пожалуйста объяснить такое поведение???
так вот же дедуп
Константин
Он был изначально
Константин
Но на 9 пункте все удаляется
Константин
Дедуплицированных данных нет
George
Но на 9 пункте все удаляется
ну в пункте 6 вы уже зарезервировали больше чем есть на пуле > 6 создаю вторую толстую фс на 600 гиг, zfs разрешило создать
George
дедуп вам позволил вместо 200ГБ занять всего 10 и 190 оставить другим
George
вот вы их и заняли
George
а когда данные удалили то "накладочка вышла"
Константин
При удалении я ожидал какой нить ошибки связанной с памятью
George
в общем если видите проблему - можете обосновывать и предлагать решения, ссылку я выше кинул. Но я другого решения не вижу, честно говоря, tradeoffs нынешнего решения понятны и удобны
Константин
почему?
Потому что в какой то момент зарезервированное место стало больше реального на пуле. И обращаясь к ману видно что происходит разногласие между описанием и реальной работой
George
"пока работает так", если кратко)
George
т.к. желающих менять не видно, можно доку обновить по резервированию, чтобы было очевидно
Константин
"пока работает так", если кратко)
спасибо, почитал, значит живем с этим(((
Константин
т.к. желающих менять не видно, можно доку обновить по резервированию, чтобы было очевидно
наверное стоило бы пометить взаимоотношения резервации и дедупликации
DOK ꧁꧂
А почему в убунте программа «диски» пишет про zfs какуюто дичь?
DOK ꧁꧂
И не может примонтировать
Ilya
Видит каждый датасет как отдельный диск?
Alexander
Почти)) /dev/dich🤣
Andrey
Вы бы листинг привели что-ли zpool list -v А так м б это loop на какое-нибудь устройство например, dd if=/dev/zero of=/tmp/tst.dd bs=1M count=100 mknod /dev/dich1 b 7 8 losetup /dev/dich1 /tmp/tst.dd zpool create pool1 /dev/dich1 zpool list -v pool1 NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT pool1 80M 110K 79,9M - - 3% 0% 1.00x ONLINE - dich1 80M 110K 79,9M - - 3% 0,13% - ONLINE
Fedor
На заметку - есть команда zfs history
Константин
т.к. желающих менять не видно, можно доку обновить по резервированию, чтобы было очевидно
В продолжение о дедупе. Ещё не могли бы пояснить механизм дедупликации в zfs. Правильно ли я понимаю сама дедупликация происходит онлайн (т.е. дедуплицируются новые блоки после включения опции дедупа до ее отключения, старые блоки в режиме офлайн не дедуплицируются) и при этом она асинхронная (т.е. данные сначала записываются на диск, а потом уже происходит дедупликация через сравнение контрольных сумм, и получается что происходит разрастание до реальных размеров, после повторяющиеся блоки чистятся). Так ли все работает и есть ли возможность как то менять асинхронный/синхронный режимы вручную ? Или вручную управлять онлайн/офлайн режимом, кроме как перезаписывать данные способом send/recv?
werter
про дедуп можно еще сторону VDO от redhat посмотреть у VDO накладные расходы на дедуп меньше
George
В продолжение о дедупе. Ещё не могли бы пояснить механизм дедупликации в zfs. Правильно ли я понимаю сама дедупликация происходит онлайн (т.е. дедуплицируются новые блоки после включения опции дедупа до ее отключения, старые блоки в режиме офлайн не дедуплицируются) и при этом она асинхронная (т.е. данные сначала записываются на диск, а потом уже происходит дедупликация через сравнение контрольных сумм, и получается что происходит разрастание до реальных размеров, после повторяющиеся блоки чистятся). Так ли все работает и есть ли возможность как то менять асинхронный/синхронный режимы вручную ? Или вручную управлять онлайн/офлайн режимом, кроме как перезаписывать данные способом send/recv?
Дедуп сейчас строго онлайн синхронный, в момент записи сравнивается хеш, и если уже есть - только в dedup table (ddt) на диске счётчик изменится
George
про дедуп можно еще сторону VDO от redhat посмотреть у VDO накладные расходы на дедуп меньше
А вот вопрос, видел тесты где vdo хуже был по перформансу, буду рад что-то свежее глянуть если есть
werter
тут не подскажу
Константин
Дедуп сейчас строго онлайн синхронный, в момент записи сравнивается хеш, и если уже есть - только в dedup table (ddt) на диске счётчик изменится
В теории я тоже везде такое описание читал. Но вот странно на практике, при тестировании zvol расшаренного по iscsi протоколу заметил что свободное место на пуле уменьшается. Уменьшается практически на тот же размер что мы пишем на клиенте, а после уже начинает обратно освобождаться соизмеримо коэффициенту дедупа. Такое ощущение как будто дедуп происходит асинхронно в параллельном потоке
nikolay
Fsync
nikolay
Или через echo 1 or 2 or 3
Ivan
интересно
nikolay
Если вы про утилиты в составе zfs, то у них нет таких опций
nikolay
Перечисленные выше команды как раз сбрасывают все данные из кэшей, в том числе из zil на диски
DOK ꧁꧂
Видит каждый датасет как отдельный диск?
Zpool волбще не видит второго диска. Но через программу “disks” его видно и он отформатирован хз чем и примонтирован в /mnt/disk2. Захожу в эту папку, накидываю мусор и смотрю размер: размер не увеньшается. Зато у других дисков уменьшается. Такое впечатление что это фейковое монтирование
DOK ꧁꧂
Линукс вообще второй диск автоматом монтирует хотькудато?
Ilya
Бяда какая-то. Надо смотреть lsblk, mount, zpool status
DOK ꧁꧂
Да в жопу зфс на линуксе это убожество кривое
Ivan
и линукс туда же и комплюктеры эти ваши
Δαρθ
sync ?
Δαρθ
просто sync
Ivan
ну вот же https://t.me/ru_zfs/19215 чем не нравится то ?
Ivan
тогда reboot
Ivan
sync попросит все записать из буферов записи, а дроп кэш опустошит арк кэш
Ivan
у меня такое было на fat32 с китайскими флешками )
Ivan
Дурак?
нет. еще вопросы будут ?
Δαρθ
чего небезопасного-то?
Ivan
чего небезопасного-то?
когда-то читал что небезопасно 1и2 передавать.
Δαρθ
почему? как аргументировали?
Ivan
не уверен так ли это на самом деле )
DOK ꧁꧂
нет. еще вопросы будут ?
Нет, зачем дурачка спрашивать) Но ты ведь все равно сам с херней всюду лезешь)
Semyon 🌀
есть возможно оживить пул?) загрузился с mfsbsd