LINUX.ORG.RU
ФорумAdmin

Ext4 и прозрачное сжатие директорий

 ,


0

3

Привет, ЛОР!

Скажи, а есть чо? Хочется прозрачного сжатия на уровне файловой системы для Ext4. Быстрый гугл не выдаёт ничего путного, но вдруг я не то ищу. В основном, гугл показывает всякие странные решения через FUSE с монтированием ZIP-архивов, что попахивает глюками и дикими тормозами.

Ситуация такая: есть старый хост с Ext4 вместо файловой системы, там база средней жирности (~300G) в PostgreSQL. Есть новый хост с ZFS и сжатием через lz4, там ровно та же база занимает ~70G реального места, то есть степень сжатия почти три раза. Хочется аналогичный результат на первом хосте без полного переформатирования диска.

Перемещено hobbit из general

★★★★★

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

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

Если ты спроверяешь данные журнала по номерам, времени и контрольным суммам - это не атомарность.

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

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

А я тебе о чём говорю?

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

Что такое «атомизировать операцию через запись метаданных»

Выбираем какой набор блоков надо перезаписать. Из индекса ФС выбираем место размещения новой версии. Пишем новые данные туда и запоминаем в оперативку новые метаданные. Когда данные записаны физически одной короткой комадой записываем новые метаданные, ссылающиеся на новые блоки. Т.к. записть данных на порядок дольше чем перезапись метаданных - на столько же падает шанс повреждений при внезапном крахе.

Допустим надо ещё снизить шанс сбоя, как раз на случай краха в момент записи метаданных. Можно вести журнал, а можно дублировать все метаданные, причём первую копию писать до записи данных а вторую после.

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

Описанный тобой способ называется CoW

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

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

Вы на спичках тоже экономите?

Может быть у его оператора VPS кусачие цены на дисковое пространство? Да и спички и кошельки быват разной степени жирности, кому то и пара БелАЗов - спички.

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

Размещению БД на RAW-устройствах , без ФС, сто лет в обед.

Примеры в студию.

Ну, оракел так умеет. Но мне кажется, это из времён когда FAT32 была новой прогрессивной ФС (оракловой базе скоро 50 лет стукнет!), и я сильно сомневаюсь, что в наши дни подобное даёт большой выигрыш.

PostgreSQL, к слову, без ФС не работает.

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

ахахахахахахахахахах

Я о вас был лучшего мнения.

Очень рад за тебя.

Тем не менее, вопрос «почему PostgreSQL на HDD для тех кто не торопится» довольно странен, учитывая скорости HDD. У меня тут ынтерпрайзный WD еле-еле 250 мегабайт/с из себя выжимает на чтение и это только по праздникам и только если его погладить по головке.

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

Тем не менее, вопрос «почему PostgreSQL на HDD для тех кто не торопится» довольно странен, учитывая скорости HDD. У меня тут ынтерпрайзный WD еле-еле 250 мегабайт/с из себя выжимает.

И что? Вам мало 250 метров в секунду для работы СУБД?

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

А там не мой код крутится. Я его только запускаю.

Но это всё не важно, потому что нет смысла долбиться в HDD, когда можно поставить диск в 20 раз быстрее.

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

И что? Вам мало 250 метров в секунду для работы СУБД?

Ты не то меряешь, лол. Тебе важно сколько случайных операций может сделать HDD. HDD может ~200 IOPS, паршивенький SSD ~20k IOPS. HDD это как кривозубая шлюха на героине – сосет классно, но ты этому рад не будешь.

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

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

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

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

В лужу, статистика говорит совершенно об обратном.

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

Даже если нет, серверные диски всё равно в разы дороже а контора не обязательно богатая и/или крупная. Можно найти тысячи причин экономить деньги и нет ни одной чтобы покупать более дорогое железо если есть более дешёвое решение.

А ещё там вроде бы упоминался прирост скорости работы...

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

и я сильно сомневаюсь, что в наши дни подобное даёт большой выигрыш.

ФС в принципе не может дать выигрыша для работы БД - это лишний слой абстракции с дублированием одного и того же функционала и у разных ФС разное поведение. Но её используют для простоты, универсальности и надёжности.

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

А я собирал lvm-массив с черепичнм чередованием блоков по 1М из 2 древних дисков по 80Гб и получил прирост в 2 раза на ext2 и что? Это не заслуга ФС, это заслуга массива и железа.

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

А я собирал lvm-массив с черепичнм чередованием блоков по 1М из 2 древних дисков по 80Гб и получил прирост в 2 раза на ext2 и что? Это не заслуга ФС, это заслуга массива и железа.

Какого массива? В ZFS все это внутри её делается. То что в лялексе у тебя есть возможность собирать софтварный рейд не означает, что эту же возможность нельзя принести в ФС (что и сделали в btrfs и bcachefs).

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

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

И нет, там разные флеши. В серверные ставят высококачественные чипы, а в бюджетку всё то, что было отбракованно из серверных.

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

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

Не, не железный. Это тупо настройка контроллера :D

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

В ZFS все это внутри её делается.

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

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

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

RAID6 не рекомендован для важных данных? Да ты же поехал!

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

Зато нзинос ячейки - железный. И если ты прошил чип под qlc, то немного попользовавшись и словив ошибку ты не сможешь перешить его под mlc чтобы продолжить работу.

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

Зато нзинос ячейки - железный. И если ты прошил чип под qlc, то немного попользовавшись и словив ошибку ты не сможешь перешить его под mlc чтобы продолжить работу.

Никто этого и не утверждал.

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

Ну так а какой к чёрту софт, если железка сдохла и реанимации не подлежит?

Речь про то, что TLC/QLC/MLC это все один и то же флеш, никакого «китайского флеша» специально для QLC нет.

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

Есть. Это то, что было отбракованно корейцами и тайваньцами и не пошло в серверные mlc, потом не пошло на mlc-кеш хороших десктопных ссд, а потом было забракованно в роли tlc/qlc массива в приличных дисках. Затем оно выкупается китайским подвалом, паяется к уценённому контроллеру и продаётся как топ рынка по соотношению цена/объём.

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

Есть. Это то, что было отбракованно корейцами и тайваньцами и не пошло в серверные mlc, потом не пошло на mlc-кеш хороших десктопных ссд, а потом было забракованно в роли tlc/qlc массива в приличных дисках. Затем оно выкупается китайским подвалом, паяется к уценённому контроллеру и продаётся как топ рынка по соотношению цена/объём.

О господи…

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

Они все как бы блочные ФС для блочных устройств...

А в каком именно модуле ядра реализован рейд не сказывается вот вообще ни на чём, а особенно на логике чередования блоков по дискам и следующему из этого ускорению.

kirill_rrr ★★★★★
()