LINUX.ORG.RU
ФорумAdmin

Дедупликация и node_modules. Есть ли смысл?

 , ,


0

1

Здравствуйте. Такой вопрос. Краем уха слышал про дедупликацию в файловых системах ZFS и BTRFS. Поможет ли эта дедупликация уменьшить размер папки с проектами на node.js и rust? В каждом проекте присутствует либо node_modules (сотни мегабайт) либо target (гигабайты), в которых зачастую полно повторяющихся файлов.

Действительно ли при использовании ZFS или BTRFS все одинаковые копии файлов будут указывать на один и тот же файл на диске?

Если да, то какая из ФС лучше подходит для такой задачи?



Последнее исправление: pornandme (всего исправлений: 1)

В каждом проекте присутствует либо node_modules (сотни мегабайт) либо target (гигабайты)

А почему бы не использовать хардлинки? Или даже симлинки?

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)

для этого лучше подходит диск на терабайт, ибо
будут проблемы с производительностью (резервирование памяти + cpu для zfs)
и/или с надежностью (в случае btrfs)

zgen ★★★★★
()
Последнее исправление: zgen (всего исправлений: 2)

Действительно ли при использовании ZFS или BTRFS все одинаковые копии файлов будут указывать на один и тот же файл на диске?

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

Если да, то какая из ФС лучше подходит для такой задачи?

У ZFS есть in-band deduplication (т. е. дедупликация будет происходить непосредственно в момент записи) и она встроенная, у btrfs нужно использовать сторонние инструменты (типа bees) и они out-of-band, т. е. дедупликация будет «догонять» записи в своём темпе. Что из этого тебе больше подходит — решай сам.

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

Наверное потому что речь о сотнях тысяч мелких файлов. Ты их руками предлагаешь хардлинкать/симлинкать? ТС ищет инструмент.

intelfx ★★★★★
()

Да, действительно. Однако дедупликация - это дорого по RAM и CPU, так что профит сомнителен. С другой стороны, и ZFS и BTRFS поддерживают прозрачное сжатие, которое позволит в 2-3 раза уменьшить объёмы этих директорий без слишком уж значительных затрат по CPU/RAM (lz4). Например, у меня - в 1.92 раза. Такой вариант для тебя сгодится?

anonymous-angler ★☆
()

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

Допустим есть датасет на 1Тб, там включено шифрование и сжатие, каждый день на него сливается несжатый бекап чего-нибудь на 100Гб.

Мы врубаем дедупикацию, получаем рост потребления памяти, замедление скорости записи бекапов раз в пару, но бекапы по прежнему успевают записываться за сутки, а количество хранимых бекапов можно увеличить в два-три раза. Профит!

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

Контейнерами

С соответствующим storage driver

Наверное, ты имеешь в виду не просто «контейнеры», а конкретно Docker?

Не вижу, как докер поможет ТСу дедуплицировать node_modules между несколькими проектами.

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

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

Но да, я юзаю btrfs с дедупликацией там, где нельзя терять данные (и есть нагрузка). Можно сказать, что это мой личный прод. Полёт нормальный.

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

ну потому что экстраполировать localhost с одним рабочим паттерном на N неизвестных хостов с F workload глупо

мог бы с таким же успехом сказать УМВР, как «у нас тут принято»

Я спросил потому что мне интересно, какой есть опыт, сколько данных, с какой нагрузкой, как долго без отказа.

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

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

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

ну потому что экстраполировать localhost с одним рабочим паттерном на N неизвестных хостов с F workload глупо

А что поменяется от того, что прозвучит волшебное слово «прод»? Рабочих паттернов станет больше? Хостов?

Я спросил потому что мне интересно, какой есть опыт, сколько данных, с какой нагрузкой, как долго без отказа.

Преимущественно положительный. 2T быстрых данных, 20T медленных. БД, виртуалки, снапшоты, бэкапы, просто файлопомойка. Часть из этого — не моё (отвечаю только своей репутацией, не деньгами). ~6 лет без единого разрыва.

Это всё не локалхост, локалхост отдельно.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)

В каждом проекте присутствует либо node_modules (сотни мегабайт) либо target (гигабайты)

Что касается нодомодулей — теоретически можно подмонтировать директорию с проектами в контейнер/виртуалку и установить там все нужные пакеты глобально.

В результатах сборки вроде как не должно быть много одинакового.

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

А что поменяется от того, что прозвучит волшебное слово «прод»? Рабочих паттернов станет больше? Хостов?

Полагаю да

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

~6 лет без единого разрыва.

«Over the years, the deduplication tools emerged and then went unmaintained or haven't kept up with kernel updates. They may be still useful for research purposed but be aware that they're not recommended to be used today.»
(с) https://btrfs.wiki.kernel.org/index.php/Deduplication

Ясно-понятно.

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

Ты мне сейчас процитировал раздел «заброшенные проекты». Чего ты ожидаешь? У тебя критерий кошерной ФС — отсутствие каких бы то ни было заброшенных проектов вокруг этой ФС?

Over the years, the deduplication tools emerged and then went unmaintained or haven’t kept up with kernel updates. They may be still useful for research purposed but be aware that they’re not recommended to be used today.

Там должно быть слово «these».

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

Вместо первого “the”. Потому что там речь не в принципе о всех deduplication tools, а конкретно о нижеперечисленных заброшенных проектах (чего @zgen не увидел или не захотел увидеть в порыве найти доказательство своим предрассудкам).

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

Наверное, ты имеешь в виду не просто «контейнеры», а конкретно Docker?

Не только.

Не вижу,

Я тоже не вижу. Не думал о том, для каких целей это нужно ТС.

i586 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.