Найти тему
ServerNews

Bootlin «научит» старые NAS с 32-бит ARM-процессорами работать с хранилищем ёмкостью более 17 Тбайт

Современные объёмы жёстких дисков и технологии RAID уже давно позволяют собирать системы на десятки Тбайт данных. Однако не всегда есть возможность задействовать такие объёмы из-за ограничения аппаратной и программной частей. В строю до сих пор есть масса устаревших NAS на базе 32-битных процессоров ARM и не самых свежих ядер Linux.

Однако в такой конфигурации есть проблема, связанная с тем, что по умолчанию используются 4-КиБ (кибибайт) физические страницы, а это накладывает ограничение на максимальный размер адресуемой памяти в 16 ТиБ (~17,59 Тбайт) для хранилища, причём это практически не зависит от файловой системы. Проще говоря, современные накопители, которые уже достигли 20-Тбайт объёма, подобный NAS попросту не «осилит».

kobol.io
kobol.io

Одно из решений проблемы — использование страниц памяти большего размера. Точнее говоря, их эмуляция, так как есть некоторые нюансы в организации работы с памятью внутри ядра и собственно аппаратной реализацией в 32-бит ARM. Другим подходом является использование 64-битных (pgoff_t) смещений для адресации файловых систем, и некоторые производители уже используют его.

Подробнее обо всём этом компания Bootlin рассказывает в своем блоге. Именно она по заказу неназванного производителя NAS подготовила серию патчей для решения этой проблемы. Причём её реализация поддерживает страницы размером 4, 8, 16, 32 и 64 КиБ. То есть это даёт возможность работы с 256-ТиБ пространством в случае 64-КиБ страницы.

Перерасход памяти
Перерасход памяти

Патчи были выпущены довольно давно, но до сих пор не добавлены в основную ветку ядра Linux. И вряд ли будут. Одной из причин этого является тот факт, что поддержка больших страниц для 32-битной ARM-системы увеличивает расход памяти. Так что компромиссным вариантом пока является использование 8-КиБ страницы, которые дают поддержку до 32 ТиБ при минимально возможном перерасходе памяти.