В чем смысл ограничений ZFS?

Попробуйте использовать полный псевдоним , который точно решает эту проблему. ( Заявление об ограничении ответственности : я являюсь автором complete_alias )

После его установки вы можете использовать одну общую функцию для заполнения множества псевдонимов, например:

complete -F _complete_alias 
complete -F _complete_alias 
complete -F _complete_alias 

Вы можете захотеть получить исходный код Файл complete_alias в каждом экземпляре bash через .bash_profile или аналогичный.

установка

mkdir ~/.bash_completion.d
curl https://raw.githubusercontent.com/cykerway/complete-alias/master/complete_alias \
     > ~/.bash_completion.d/complete_alias

приложение

source ~/.bash_completion.d/complete_alias

alias container=docker\ container
complete -F _complete_alias container

контейнер теперь может автоматически заполняться исходным _docker () обработчиком завершения;

$ container l
logs  ls    

$ container s
start  stats  stop   

9
19.02.2018, 18:50
1 ответ

Что внутренне ограничивает эти вещи?

Длинный ответ

Ограничения ZFS основаны на целых числах фиксированного размера, потому что это самый быстрый способ выполнения арифметических операций на компьютере.

Альтернатива называется арифметикой произвольной точности , но по своей сути медленная . Вот почему арифметика произвольной точности является дополнительной библиотекой для большинства языков программирования, а не способом выполнения арифметики по умолчанию. Есть исключения, но обычно это DSL , ориентированные на математику, такие как bc или Wolfram Language .

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

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

Теперь давайте обсудим практическое значение каждого из этих ограничений:

Макс. размер тома

2 128 байт уже фактически бесконечен.Вместо этого мы можем записать это число как примерно 10 38 байт, что означает, что для достижения этого предела вам потребуется один пул ZFS земного размера, в котором каждый из его 10 50 атомов используются для хранения данных, и каждый байт хранится элементом, не превышающим 10 12 атомов.

10 12 атомов звучит много, но это всего лишь около 47 пикограммов кремния .

Плотность данных в граммах составляет 2,5 × 10 -13 г / байт для памяти microSD, на момент написания: самая большая доступная SD-карта имеет размер 1 ТБ и весит около 0,25 г.¹ Карта microSD не сделана из чистого кремния, но вы не можете игнорировать упаковку, потому что нам понадобится кое-что из этого и в нашем Земном компьютере; мы предположим, что низкая плотность пластика и более высокая плотность металлических штырей в среднем примерно равны плотности кремния. Здесь нам также потребуется некоторая погрешность, чтобы учесть межкристальные соединения и т. Д.

Пико- любое значение равно 10 -12 , поэтому наши 47 пг и 2,5 × 10 -13 g / B, указанные выше числа различаются примерно на порядок величины. Это означает, что в первом приближении для создания единого ZFS-пула максимального размера из наиболее доступных на данный момент карт microSD вам, возможно, придется использовать количество атомов всей планеты размером с Землю, и только если вы начнете с что-то близкое к правильному сочетанию кремния, углерода, золота и т. д., чтобы у вас не получилось так много шлака , чтобы вы занизили оценку.

Если вы считаете несправедливым, что я использую здесь флеш-накопитель вместо чего-то более плотного, например, ленты или диска, примите во внимание соответствующие скорости передачи данных, а также тот факт, что мы даже не пытались рассмотреть возможность резервирования или замены устройства. Мы должны предположить, что этот пул ZFS земного размера будет состоять из vdevs , которые никогда не нуждаются в замене, и что они могут передавать данные достаточно быстро, чтобы вы могли заполнить пул в разумные сроки. Здесь имеет смысл только твердотельное хранилище.

Приведенное выше приближение является довольно грубым, и плотность хранения продолжает расти, но держите ситуацию в перспективе: в будущем, чтобы выполнить этот трюк по созданию пулов ZFS максимального размера, нам все равно нужно будет использовать общую корку общие ресурсы малых планет .

Макс. размер файла

Итак, у нас есть файловая система размером с планету . Что мы можем сказать о размере файлов, хранящихся в нем?

Давайте дадим каждому человеку на планете его собственный равный размер части этого пула:

10 38 ÷ 10 10 & прибл; 10 28 ÷ 10 19 & прибл; 10 9

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

Другими словами, каждый человек может хранить около миллиарда файлов максимального размера в своей крошечной личной части нашего массива хранения ZFS размером с Землю.

(Если вас беспокоит, что наш массив хранения по-прежнему имеет размер планеты здесь, в этом примере, помните, что он должен был быть таким большим, чтобы достичь первого предела, указанного выше, поэтому будет справедливо продолжать его использование для этого примера здесь.)

Максимальный размер файла для каждого файла составляет 16 EiB в ZFS, что на 16 раз больше, чем максимальный размер тома ext4 , который считается смехотворно большой сегодня сам по себе.

Представьте, что кто-то использует свою часть Planet ZFS (ранее известную как Земля) для хранения резервных копий образов дисков ext4 максимального размера. Кроме того, этот сумасшедший клиент (он всегда есть) решил tar их вверх, по 16 на файл,просто чтобы достичь максимального размера файла ZFS. После этого у этого клиента все еще будет место, чтобы сделать это еще раз еще примерно миллиард раз.

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

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

Теперь, когда вы превратили поверхность земного компьютера в ад, всем людям, пытающимся использовать этот компьютер, придется жить где-нибудь в другом месте, в месте, где вы часто слышите, как люди проклинают скорость -световые задержки, которые добавляют задержку к каждой транзакции между компьютером Земли и тем местом, где они сейчас живут. Если вы думаете, что ваше время пинга в Интернете ~ 10 мс сегодня является проблемой, представьте, что вы поместите 2,6 световых секунды между вашей клавиатурой и компьютером, если мы переместим население Земли на Луну, чтобы мы могли сделать этот земной компьютер. .

Ограничения ZFS по объему и размеру файлов - это большая научная фантастика.

Макс.количество файлов в каталоге

2 48 составляет примерно 10 14 файлов на каталог, что будет проблемой только для приложений, которые пытаются рассматривать ZFS как плоская файловая система .

Представьте себе исследователя Интернета, который хранит файлы о каждом IP-адресе в Интернете. Предположим, что отслеживаются ровно 2 32 IP-адресов после вычитания резервных пространств в старом пространстве IPv4 и последующего добавления хостов, которые теперь используют адреса IPv6, чтобы арифметика выглядела хорошо. Какую проблему пытается решить этот исследователь, которая требует от него создания файловой системы, способной хранить более 2 16 - 65536! - files per IP?

Допустим, этот исследователь также хранит файлы для каждого TCP-порта, так что с помощью только одного файла на комбинацию IP: port мы съели наш множитель 2 16 .

Исправление простое: сохраните файлы для каждого IP в подкаталоге, названном после IP, и сохраните файлы для каждого порта в подкаталоге каталога, содержащего файлы для каждого IP. Теперь наш исследователь может хранить 10 14 файлов на комбинацию IP: порт, достаточную для долгосрочной глобальной системы мониторинга Интернета.

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

Этот предел, вероятно, установлен столь же низким, как это чисто для того, чтобы не сделать структуры данных, необходимые для поиска файлов в данном каталоге, слишком большими, чтобы поместиться в ОЗУ.Это побуждает вас организовывать данные иерархически, чтобы избежать этой проблемы.

Макс. filename length

Хотя это единственное ограничение кажется строгим, на самом деле оно имеет смысл.

Это ограничение не связано с ZFS. Я полагаю, что это восходит к FFS в 4.2BSD . Я не могу найти цитату, но когда этот предел был молодым, кто-то заметил, что этого достаточно для «короткого письма бабушке».

Итак, возникает вопрос: зачем вам давать имена своим файлам. более наглядно, чем это? Любая истинная потребность, превышающая эту, вероятно, требует иерархии, и в этот момент вы умножаете лимит на количество уровней в иерархии плюс один. То есть, если файл расположен на трех уровнях иерархии, ограничение имени полного пути составляет 4 × 255 = 1020 символов.

В конечном счете, этот предел является человеческим, а не технологическим. Имена файлов предназначены для использования людьми, и людям действительно не нужно более 255 символов для полезного описания содержимого файла. Более высокий предел просто бесполезен. Ограничение старое (1983 г.), потому что с тех пор люди не научились справляться с более длинными именами файлов.

Если вы спрашиваете, откуда взялось странно выглядящее значение «255», это некоторое ограничение, основанное на размере 8-битного байта. 2 8 равно 256, и используемое здесь значение N-1, вероятно, означает, что они используют нулевой терминатор , чтобы отметить конец строки имени файла в 256-байтовом поле в метаданные для каждого файла.

Краткий ответ

Фактически, какие ограничения?


Сноски:

  1. Я измерил это, используя шкалу, указанную с точностью до 0,01 г.

  2. 7,55 миллиарда на момент написания этой статьи. Выше мы округлили это значение до 10 10 , которое мы должны достичь к середине века .

35
27.01.2020, 20:04

Теги

Похожие вопросы