LINUX.ORG.RU

Линус Торвальдс высказался о ZFS

 , , ,


3

4

В процессе обсуждения планировщиков ядра Linux пользователь Джонатан Данти пожаловался, что изменения в ядре сломали важный сторонний модуль — ZFS. Вот что написал в ответ Торвальдс:

Имейте в виду, что тезис «мы не ломаем пользователей» относится к программам пространства пользователя и к ядру, которое я сопровождаю. Если вы добавляете сторонний модуль вроде ZFS, то вы сами по себе. У меня нет возможности поддерживать такие модули, и я не отвечаю за их поддержку.

И, откровенно говоря, я не увижу ни одного шанса на включение ZFS в ядро, пока не получу официальное сообщение от Oracle, заверенное их главным юрисконсультом или, лучше всего, самим Ларри Эллисоном, в котором говорится, что всё ок, и ZFS теперь под GPL.

Некоторые думают, что добавить код ZFS к ядру — неплохая идея, и что интерфейс модуля нормально с этим справляется. Что ж, это их мнение. Я же не чувствую такое решение надёжным, учитывая спорную репутацию Oracle и проблемы, связанные с лицензированием.

Поэтому мне абсолютно неинтересны штуки вроде «слоёв совместимости ZFS», которые, как некоторые думают, изолируют Linux и ZFS друг от друга. Нам от этих слоёв никакой пользы, а учитывая склонность Oracle судиться из-за использования их интерфейсов — я не думаю, что это реально решает проблемы с лицензиями.

Не используйте ZFS. Вот и всё. По-моему, ZFS это больше баззворд, чем что-то ещё. Проблемы с лицензированием — только ещё одна причина, почему я никогда не стану заниматься этой ФС.

Все бенчмарки производительности ZFS, что я видел, совершенно не впечатляют. И, как я понимаю, ZFS уже даже толком не сопровождается, и никакой долгосрочной стабильностью здесь не пахнет. Зачем вообще её использовать?

>>> Подробности

Deleted

Проверено: a1batross ()

Ответ на: комментарий от Dimez

Так он же не про ZoL, а про саму ZFS в свете того, что ходят упорные слухи о закапывании Solaris.

gremlin_the_red ()
Ответ на: комментарий от constin

Ну, если так, то раньше Линус более аргументированных ходы делал

Dimez ★★★★★ ()
Ответ на: комментарий от Dimez

Почитал. Особенно впечатлился частотой создания этих issues

Deleted ()
Ответ на: комментарий от Deleted

Значит, плохо прочитал и, кроме того, судишь о вкусе устриц, но их не ел.

Dimez ★★★★★ ()

скоро и этого пердуна скинут

anonymous ()
Ответ на: комментарий от Deleted

а с какими ключами запускаешь smartсtl? У меня например индикатор износа 1012, чтобы это ни значило

233 Media_Wearout_Indicator 0x0032 100 100 — Old_age Always - 1012

jtad ()
Последнее исправление: jtad (всего исправлений: 2)
Ответ на: комментарий от gremlin_the_red

Но если файлы меняются, то идёт запись на все снэпшоты

НЕТ! Я тебя не тролю, внимательно изучи как оно работает. Мне в свое время пришлось взять бумажку , нарисовать в ней 8 клеток в цифрами 0 и 1 и симулировать различные операции, чтобы понять, надо оно мне или нет. И еще много времени, чтобы объяснить коллегам и друзьям, так что я не рискну делать это тут текстом.

constin ★★★ ()
Последнее исправление: constin (всего исправлений: 2)
Ответ на: комментарий от jtad

чтобы это ни значило

Этот оборот применим к любому raw value, даже температура может быть в марсианских сутках. Смотри в колонке VALUE.

anonymous ()
Ответ на: комментарий от anonymous

Тебя не смущает, что btrfs убивает ssd?

Юзаю на ssd, убийств не наблюдается[2].

$ sudo smartctl -A /dev/sda                                                                                                                                                                                                                                                                                                    
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.7-arch1-1] (local build)                                                                                                                                                                                                                                                       
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                               
=== START OF READ SMART DATA SECTION ===                                                                                                                                                                                                                                                                                       
SMART Attributes Data Structure revision number: 1                                                                                                                                                                                                                                                                             
Vendor Specific SMART Attributes with Thresholds:                                                                                                                                                                                                                                                                              
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE                                                                                                                                                                                                                               
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0                                                                                                                                                                                                                                       
  9 Power_On_Hours          0x0032   095   095   000    Old_age   Always       -       20998                                                                                                                                                                                                                                   
 12 Power_Cycle_Count       0x0032   095   095   000    Old_age   Always       -       4082                                                                                                                                                                                                                                    
177 Wear_Leveling_Count     0x0013   090   090   000    Pre-fail  Always       -       565                                                                                                                                                                                                                                     
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   100   100   010    Pre-fail  Always       -       0                                                                                                                                                                                                                                       
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0                                                                                                                                                                                                                                       
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0                                                                                                                                                                                                                                       
183 Runtime_Bad_Block       0x0013   100   100   010    Pre-fail  Always       -       0                                                                                                                                                                                                                                       
187 Uncorrectable_Error_Cnt 0x0032   100   100   000    Old_age   Always       -       0                                                                                                                                                                                                                                       
190 Airflow_Temperature_Cel 0x0032   063   034   000    Old_age   Always       -       37                                                                                                                                                                                                                                      
195 ECC_Error_Rate          0x001a   200   200   000    Old_age   Always       -       0                                                                                                                                                                                                                                       
199 CRC_Error_Count         0x003e   100   100   000    Old_age   Always       -       0                                                                                                                                                                                                                                       
235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       264                                                                                                                                                                                                                                     
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       89331698642

Этому SSD два с половиной года. Всё это время он проработал в моём домашнем сервере в режиме 24/7. На этом диске внутри btrfs лежит ежедневно обновляемая система, крутится средненагруженная БД Matrix-сервера и ежедневно собираются ночнушки пакетов из AUR в мой персональный репозиторий.

Как видишь, брат жив и абсолютно здоров.

intelfx ★★★★★ ()

Не используйте ZFS. Вот и всё. По-моему, ZFS это больше баззворд, чем что-то ещё.

Боже мой, да он единственный адекватный человек в сообществе, берегите его, как музейный экспонат!

Alve ★★★★★ ()
Ответ на: комментарий от Deleted

Особенно это впечатлило

0.7.5

Не впечатлило.

Dimez ★★★★★ ()
Ответ на: комментарий от Dimez

постоянно обновляйте

Глобально и надёжно

Deleted ()

Юзаю OpenIndiana c ZFS и не парюсь.

anonymous ()
Ответ на: комментарий от Deleted

На форуме писать - не мешки ворочать, ага :)

Dimez ★★★★★ ()
Ответ на: комментарий от MrClon

Заметь, я не говорил что btrfs как-то особенно чувствителен к падению питания. У меня нет никакой информации на этот счёт.

Спасибо. Я по сроку использования сориентировался. Тем более что тут и другие пишут, что при сбойном питании не было потерь данных. Думаю, что через пару лет уже попробую. А может и в этом году на чём-нить «неважном».

Qasta ()

Линус прав в части лицензионной опрятности, прекрасно понимая, что у него нет возможности увидеть все риски, а судиться с патентными троллями никто не хочет.

Вообще не понимаю, почему до сих пор столько внимания уделяется возможностям FS, когда от FS можно абстрагироваться и «жить» в «базе данных», решая задачи доступности, отказоустойчивости, эластичности и перфоманса на уровне приложения. Операционные системы должны трансформироваться из универсальных комбайнов в запускалки контейнеров и веб серверов, остальное уже внутри приложения. Сеть это компьютер. Sun уже нет, но облака полным ходом идут к реализации этого слогана.

aserge ()
Последнее исправление: aserge (всего исправлений: 1)
Ответ на: комментарий от Evgueni

insync и снапшоты - это совершенно разного уровня инструменты, делающие разные вещи.

Dimez ★★★★★ ()

Целиком и полностью на стороне Линуса. Чёткий мужик.

Desmond_Hume ★★★★★ ()
Ответ на: комментарий от afterlanding

Альтернатива-то какая?

Ввиду отказа шляпы от btrfs - альтернативным остаётся только связка ext4 + lvm_thin если потенциально потребуется shrink, или xfs + lvm_thin если требуется COW.

snizovtsev ★★★★ ()
Ответ на: комментарий от Dimez

Конечно. Просто фраза, что «каждые десять минут делать бэкап нереально» звучит странно. Вопрос же не про конкретную реализацию, а про какую задачу можно порешить. Вон тот же insync (да любое приложение которое реализует облачный диск) отслеживает каждое изменение файла фактически в реальном времени без всяких снапшотов. И да, я не говорю, что снапшоты не нужны (они нужны и есть вполне себе без zfs) — просто ежеминутный бэкап можно сделать и делается и без них.

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 2)
Ответ на: комментарий от snizovtsev

Шляпа ничего не делала для Btrfs, и этот отказ никакого влияния ни на кого, кроме впечатлительных ЛОР-овец, не оказал.

anonymous ()
Ответ на: комментарий от snizovtsev

или нормальный хардверный рейд, что в солидных фирмах вероятно только и используют

jtad ()
Ответ на: комментарий от Evgueni

Но это не бэкап, а синхронизация, опять же!

Dimez ★★★★★ ()
Ответ на: комментарий от khrundel

Чтоб разработать нормальный, производительный интерфейс плагина обычно нужно знать, что этот плагин будет делать и как будет устроен. Т.е. можно разработать интерфейс под существующие реализации файловых систем, но он не подойдёт для будущих.

автору понадобился особый лок

Я - днина в вопросах низкоуровневой разработки (да и вообще в вопросах разработки, чего уж там), но мне кажется странным подход, когда какие-то внутренности того, что является (должно являться) отдельным модулем выносится «наверх», в ту часть, что этот модуль дергает. То есть, для меня у «модуля» ФС должно быть два с половиной метода - «прочитай файл XXX», «запиши файл XXX» и «удали файл XXX» (это та самая половинка, потому что на самом деле мы можем хранить список файлов в каких-то метаданных и удаление файлы это по сути изменение этих метаданных). Все остальное - локи всякие, дедупликации, журналы и вся эта прочая лабуда должны быть внутри модуля ФС, он должен сам все это делать и ядру (ну а по факту процессу который решил что-то по-IO-шить) вообще без разницы как оно внутри работает. Если бы это было сделано так, то любой модуль ФС встраивался бы в полпинка, главное чтоб там были эти методы для записи и удаления. Окей, можно еще снабдить все модули какой-то «raw-функцией», в дополнение к предложенным выше, и если вдруг что-то необычное в ФС реализовано (ну те же снапшоты например) - в эту функцию передаются нужные данные. Если вдруг подсунуть ФС, где снапшотов нет - ну ОК, она просто в ответ вернет что-то типа «ERROR 404», ну и дальше пользователь сам уже разбирается.

В чем я не прав? Почему так не делают? Почему обязательно это все должно быть в ядре? Я понимаю что если у нас RTOS - да, тут нужно все это как-то разруливать в «ручном» режиме, сейчас-то у меня так и так система может колом встать в любой момент из-за дискового ожидания, так почему это в ядре обязательно делать? Буду рад за объяснение как для пятилетнего, ну или хоть ткните где почитать (не «как» - сорцы ядра мне не очень интересны, а «почему»). Спасибо!

anonymous ()
Ответ на: комментарий от mord0d

Портить её код давно начали. Линуксоиды совместно с бсдшниками.

anonymous ()
Ответ на: комментарий от anonymous

Почему так не делают?

Хороший вопрос. Есть же fuse. Производительность может быть не та. Хотя я вообще не понимаю почему это делают не на уровне софта и зачем раздувать работу с фс таким функционалом.

crutch_master ★★★★★ ()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от ncrmnt

Потому что шапка, ну т.е Айбим и оракл конкуренты. Торвальдс всегда за шапочку. Исключение пожалуй история с кдбус.

anonymous ()
Ответ на: комментарий от crutch_master

Есть же fuse.

в случае с ZFS при работе через fuse - не полный функционал.

constin ★★★ ()
Ответ на: комментарий от Lordwind

Это никакая не вспышка гнева или субекьивщина Линуса. Просто из юридических соображений хфс в ядро не принять, а тут ещё и убунта заигрывает с зфс. Красной шапочке это как серпом по яйцам. Динус просто озвучил позицию шапки-айбим

anonymous ()
Ответ на: комментарий от Dimez

А бэкап уже в самом облаке. Вон dropbox такой функционал версионирования вполне себе имеет.

Evgueni ★★★★★ ()

По-моему, ZFS это больше баззворд, чем что-то ещё.

Печалька, не признавать достижения только из-за отрицания продукта просто глупо.

torvn77 ★★★★★ ()
Ответ на: комментарий от aserge

когда от FS можно абстрагироваться и «жить» в «базе данных»,

Научишь меня ставить Постгресс так, чтобы не профершпиливать дырки в безопасности своего ПК?

torvn77 ★★★★★ ()
Ответ на: комментарий от DoctorSinus

Предоставляют продукт за бабки, с понятными ограничениями, техподдержкой и без заоблачных ожиданий.

Тебе, видимо, повезло не сталкиваться с Oracle, которой за СУБД платят огромные бабки, и тех. поддержка может сначала 5-6 недель морозиться и не признавать ошибку ошибкой, а потом ещё несколько месяцев ждать исправления. И, если повезёт, то починят через 8-14 месяцев. А может и не повезёт, тогда будешь платить деньги за кривоработающий продукт. И да, Oracle не исключение, такое в closed-source сплошь и рядом.

anonymous ()
Ответ на: комментарий от Im_not_a_robot

Смерть это будущее фс под линуксом?

anonymous ()
Ответ на: комментарий от constin

На чем такое еще можно организовать?

Зависит от объёмов, типа данных, задачи, количества пользователей и т.п.

sena ()
Ответ на: комментарий от constin

На скриншоте же написано, что упал radion, а всамо м низу скриншота видно, что btrfs успешно загрузилась. Какое отношение данный скриншот имеет к тому, что упало btrfs? Потому что упал radeon, но на скриншоте помимо XFS, ntfs, QNX есть слово «btrfs loaded»?

anonymous ()
Ответ на: комментарий от snizovtsev

xfs + lvm_thin если требуется COW.

для cow достаточно лишь xfs

anonymous ()
Ответ на: комментарий от Evgueni

Предлагаешь все хранилки на zfs заменить insync'ом и дропбоксом что ли, я не никак не пойму? :)

Dimez ★★★★★ ()
Ответ на: комментарий от Dimez

Божечки, да нет конечно. Просто я указываю на то, что «бэкап каждые десять минут» реален и без zfs. Также и снапшоты реальны без zfs, но это совсем другое утверждение.

Evgueni ★★★★★ ()

Openindiana использует ZFS и никто их не засудил, что характерно.

anonymous ()
Ответ на: комментарий от Evgueni

Божечки, да нет конечно. Просто я указываю на то, что «бэкап каждые десять минут» реален и без zfs. Также и снапшоты реальны без zfs, но это совсем другое утверждение.

Я специально не участвовал в этом отходе от темы поста.

бэкап каждые десять минут* тут поставлю любое время, каждые 3 секунды, например? Это время зависит от объема данных, IOPS, скорости передачи данных, форматы даты и тд и тп. Так или иначе, для фоточек с телефона «бэкап каждые десять минут» реален. отележивание фоточек всякими штуками типа inotify тоже реально. Но все это до какого-то предела.

Но в ZFS ты не тратишь времени и ресурсов вообще. Мнгновеннно.

Поэтому не надо размазывать сопли и осуждать что там еще можзно делать , беседа скатится не туда.

constin ★★★ ()

Пользователю может быть интересно погонять ZFS, но Линус вынужден думать о проекте. Увы, но он полностью прав

vertexua ★★★☆☆ ()

ZFS - в ядре это плохо, Reiser4 - это тоже плохо, зато тормозная Ext4 - это хорошо. Ага-ага.

X-Pilot ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)