Fedor
Может, сама модель дисков выбрана не очень удачно.
Fedor
Или аппаратные проблемы
Сергей
Или аппаратные проблемы
он имитирует физическое повреждение диска. А диск (точнее раздел) по прежнему остался в пуле
Сергей
в статусе онлайн
Fedor
Я на счётчик смотрю
Fedor
Всё остальное уже не столь важно в данном случае, мне кажется.
Сергей
представь что диск накрылся физически. а zfs по прежнему в пуле пишет что диск online.
Fedor
так вроде лог был выкинут?)
Fedor
вообще лог надо в миррор всегда
Сергей
Fedor
а, блин.
Fedor
не обратил внимания, сорри
Fedor
но ошибки на кеше меня, всё таки, смущают. а почему он не был выкинут - надо исходники, наверное, смотреть.
Сергей
но ошибки на кеше меня, всё таки, смущают. а почему он не был выкинут - надо исходники, наверное, смотреть.
ошибки как раз и полезли так как на ходу диск "вытащили". Но по уму - зфс должна была сразу пометить unavail
Fedor
но на первом листинге ошибки тоже имеются
Сергей
но на первом листинге ошибки тоже имеются
да, второй скрин - это уже вручуную рескан сделан. и один из разделов перешёл в недоступный
Qwerty
/dev/sde, весь диск
два раздела. sde1 - log sde2 - cache
Qwerty
ошибки как раз и полезли так как на ходу диск "вытащили". Но по уму - зфс должна была сразу пометить unavail
Вот мне так кажется, что такое поведение должно быть. Если устройства нет, то UNAVAILABLE должно показывать а не ONLINE.
Сергей
Вот мне так кажется, что такое поведение должно быть. Если устройства нет, то UNAVAILABLE должно показывать а не ONLINE.
согласен. но тут нужно действительно лезть в исходники и смотреть какая логика
Сергей
Хотя логика у zpool немного вроде другая: (man zpool) The health of the top-level vdev, such as mirror or raidz device, is potentially impacted by the state of its associated vdevs, or component devices. A top-level vdev or component device is in one of the following states: DEGRADED One or more top-level vdevs is in the degraded state because one or more component devices are offline. Sufficient replicas exist to continue functioning. One or more component devices is in the degraded or faulted state, but sufficient replicas exist to continue functioning. The underlying conditions are as follows: • The number of checksum errors exceeds acceptable levels and the device is degraded as an indication that something may be wrong. ZFS continues to use the device as necessary. • The number of I/O errors exceeds acceptable levels. The device could not be marked as faulted because there are insufficient replicas to continue functioning. FAULTED One or more top-level vdevs is in the faulted state because one or more component devices are offline. Insufficient replicas exist to continue functioning. One or more component devices is in the faulted state, and insufficient replicas exist to continue functioning. The underlying conditions are as follows: • The device could be opened, but the contents did not match expected values. • The number of I/O errors exceeds acceptable levels and the device is faulted to prevent further use of the device. OFFLINE The device was explicitly taken offline by the zpool offline command. ONLINE The device is online and functioning. REMOVED The device was physically removed while the system was running. Device removal detection is hardware-dependent and may not be supported on all platforms. UNAVAIL The device could not be opened. If a pool is imported when a device was unavailable, then the device will be identified by a unique identifier instead of its path since the path was never correct in the first place.
Сергей
на момент импорта пула устройство могло быть открыто
Qwerty
на момент импорта пула устройство могло быть открыто
Но я не импортировал пул. Просто копировал туда данные.
Сергей
Но я не импортировал пул. Просто копировал туда данные.
пул импортируется при старте системы
Qwerty
Разобрался с таким поведением, похоже оно такое, в случае если добавлять разделы. Если добавлять полностью весь диск, то тогда показывает сразу.
Алексей
Ребята, всем привет. вопрос на засыпку. Кто нибудь работал с зфс рекордсайз 4мб? Я наблюдаю очень странное поведение при чтении данных с такого размера. Суть в чём: на датасете включена компрессия, это значит что если файлы будут меньше, то блок будет урезаться кратно степени двойки до тех пор пока не станет минимально возможным в который влезет этот файл. Так вот, у меня все файлы на этом датасете меньше 4мб. Файлов реально много, несколько миллионов. В плане занятого места на данном датасете всё чётко, объем файлов соответствует тому сколько занято, т.е. компрессия работает как нужно. Но когда я файлы копирую на другой датасет с рекордсайз 1мб я заметил что, читается ну скажем в 4 раза больше чем записывается на новый датасет. Такое ощущение, что жёсткий диск все равно читает 4мб блоки не смотря на то что данных в нем полмегабайта или даже ещё меньше. Ну собственно это нормально или он должен всё таки читать сколько реально весит блок а не пустоту?
Алексей
Это я всё к тому что реальное извлечение данных с такого датасета в 4 раза медленнее чем могло бы быть с 1мб рекордсайз
Алексей
Это баг или фича в итоге?
Алексей
При zfs send кстати говоря точно такая же картина, читает в среднем раза в 4 больше чем реально данных
Fedor
Интересное наблюдение.
Алексей
(я понимаю что 4мб это ССЗБ, просто пытаюсь понять правильно ли оно работает вообще)
Fedor
Надо б администрейшн гайд перечитать.
Алексей
Очевидно что такой нестандартный размер блока не подходит к мелким файлам, но из всего что я читал до этого у меня сложилось впечатление что таких эффектов быть не должно
Fedor
То, что он при частичном запросе данных читает полный блок - это точно. а вот с компрессией - не знаю, я её не включаю
Алексей
Лучше включить, реально место экономит, да хотя бы просто zle
Алексей
С другой стороны это может помочь увеличить фрагментацию, но тут надо смотреть что уже тебе больше нужно, иопсы или место
Fedor
фрагментация в cow всегда.
George
Ребята, всем привет. вопрос на засыпку. Кто нибудь работал с зфс рекордсайз 4мб? Я наблюдаю очень странное поведение при чтении данных с такого размера. Суть в чём: на датасете включена компрессия, это значит что если файлы будут меньше, то блок будет урезаться кратно степени двойки до тех пор пока не станет минимально возможным в который влезет этот файл. Так вот, у меня все файлы на этом датасете меньше 4мб. Файлов реально много, несколько миллионов. В плане занятого места на данном датасете всё чётко, объем файлов соответствует тому сколько занято, т.е. компрессия работает как нужно. Но когда я файлы копирую на другой датасет с рекордсайз 1мб я заметил что, читается ну скажем в 4 раза больше чем записывается на новый датасет. Такое ощущение, что жёсткий диск все равно читает 4мб блоки не смотря на то что данных в нем полмегабайта или даже ещё меньше. Ну собственно это нормально или он должен всё таки читать сколько реально весит блок а не пустоту?
Это же вы arc урезали жёстко? На этом датасете что выставлено?
Алексей
Это же вы arc урезали жёстко? На этом датасете что выставлено?
На 4мб и 1мб датасетах включена только метадата. С арком я больше не балуюсь т.к. решение нашел, я об этом писал. Т. Е. Никаких там дискриминаций по объему кеша и выделенному ему оперативки нет
Алексей
фрагментация в cow всегда.
Да но её можно принудительно увеличить)
George
попробуйте включить на время primarycache=all и посмотреть сколько после этого читается.
George
там есть что покрутить на этот случай, но пока кажется, что вы сами выбрали это поведение, отключив кеш данных))
Алексей
Это интересно
Алексей
Сейчас попробую
Алексей
Хотя нет не попробую
Алексей
У меня нет столько рамы чтобы проверить
Алексей
Дело в том, что я мигрирую с этого датасета на другой жёсткий диск
Алексей
Поэтому можно считать что когда я тупо рсинком копирую, то данные холодные
Алексей
Ну и как я уже говорил, зфс сенд точно так же себя ведёт. Хотя казалось бы...
Алексей
Осталось докопировать всего то терабайт. Включу конечно сейчас кэш. Но результат кмк очевиден, ничего не поменяется
George
У меня нет столько рамы чтобы проверить
ну можно и на 100МБ проверить то датасете)
Алексей
ну можно и на 100МБ проверить то датасете)
😊 что мы будем проверять на нем? как за секунду прочитаются данные?
Алексей
да, но что будет означать чтение 100мб датасета если он будет полностью в кэше? что мы выясним? если мы выясним то что берется из кэша не лезет за этим на блины мы, то мы это и так уже знаем, и я это проверил на практике
Алексей
ну это будет проблематично устроить
Алексей
как минимум мне на этот датасет надо будет залить данные и потом ждать непонятно сколько пока оно не вымоется
Алексей
чистота эксперимента сомнительна
Алексей
надо хотябы гигов 100
Алексей
ну так то да согласен
Алексей
AMAZING при включении primarycache=all пишет даже больше чем читает 😱😱😱😱😱😱😱
Алексей
я твой дом труба шатал. как он работает не понеатнооооо
George
AMAZING при включении primarycache=all пишет даже больше чем читает 😱😱😱😱😱😱😱
ну если пишете в другой датасет с 1МБ блоком, то там будет в 4 раза больше меты в части блоков
Алексей
ну это несопоставимо мета и данные. речь идет о порядке сотни мб/сек
Алексей
ребята, всем спасибо. не уверен конечно до конца но вроде бы копируется поживее.
Алексей
я расту вместе с вами! 👍
George
плюс чем смотрите "сколько пишет"
Алексей
я думаю это работает так: изза компрессии блок урезан, но по какой-то причине жесткий диск читает его полный дефолтный размер (не смотря на то что он ужат) (возможно это фича/баг данной реализации), и заметает таким образом кусок или весь следующий блок целиком. (получается как бы невольный префетч) Без кэша этот префетч аннигилируется и читать блок нужно каждый раз заново. а с кэшем, возможно, (если он (зфс) такой умный как я думаю) идут попадания, поэтому суммарно скорость передачи данных вырастает
Алексей
ну тогда надо смотреть конкретные цифры
я смотрю двумя вещами zpool iostat и iotop
Алексей
а вы префетч то отключали?)
насколько я вычитал, он работает только когда primarycache=all
George
но на не больших файлах он не должен конечно давать эффект
Алексей
во всех остальных случаях включить его нельзя
Алексей
а в нашем случае он как бы невольно работает, хотя вроде бы и не должен
Алексей
насколько я вычитал, он работает только когда primarycache=all
так что нет, специально я его не отключал