Сколько петлевых устройств можно создать (и смонтировать) в современной системе Linux (ядро 2.6.30+)? - PullRequest
2 голосов
/ 03 марта 2012

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

Поскольку в Linux не существует стандартного метода реализации квот на каталоги (я знаю, что квоты в первую очередь ориентированы на пользователей или группы, но нам нужно что-то вроде способа, которым Windows Server 2008 R2 обрабатывает квоты вдля каждого каталога) Я решил использовать трюк.В основном я делаю это:

touch client1.ext3
dd if=/dev/zero of=./client1.ext3 bs=1024 count=16384
mkfs.ext3 ./client1.ext3
mount -o loop,rw ./client1.ext3 ./mountpoint

Это просто пример кода, но это идея ... Я создаю виртуальные «тома», которые я назначаю своим клиентам, чтобы они могли хранить свои личные данные и, в случае, еслиим нужно больше, они могут платить в расчете на каждое хранилище.

Проблема, с которой я сталкиваюсь, заключается в том, что я вижу только 8 устройств с циклом в моей иерархии / dev, и в настоящее время у нас 17 тестовых клиентовдля нашего приложения, поэтому количество существующих в настоящее время петлевых устройств не покрывает мои потребности.Я знаю, что вы можете выделить до 256 устройств с циклом до версии ядра 2.6.23, и ограничение (начиная с версии 2.6.24 и далее) теоретически больше не присутствует, хотя у меня все еще есть некоторые проблемы.

Честно говоряЯ чувствую, что заполнение иерархии / dev с помощью 1000+ петлевых устройств (которые вообще не будут размонтироваться в течение всего срока службы системы) - это очень неправильно, и не так, как это нужно делать, но, возможно, это можно сделать в среднесрочной перспективе.В связи с этим у меня возникли следующие вопросы:

  • Сколько памяти занимает одноконтурное устройство при выделении?
  • Сбой системы или снижение производительности при наличии 256+ выделенных петлевых устройств?
  • Могу ли я динамически увеличивать количество устройств петли?или ...
  • Как заранее определить количество доступных устройств петли во время загрузки?

Ответы [ 3 ]

2 голосов
/ 03 марта 2012

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

1 голос
/ 03 марта 2012

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

0 голосов
/ 10 января 2017

LVM добавляет вам статически разделенное пространство на жестком диске, и на нем создаются файловые системы.если это ext4 или xfs, вы добавляете свободное pv-пространство в lv и изменяете размер на устройстве fly, назначенном пользователю или группе.к сожалению, если вы хотите уменьшить размер (уменьшить), вы должны сделать это в автономном режиме.сначала вы должны уменьшить размер несмонтированной файловой системы, затем вы должны уменьшить размер lv.но это рискованно, потому что если вы уменьшите lv ниже размера файловой системы, то fs будет поврежден.У xfs нет функции сжатия, вы можете только увеличить ее.

Другой подход - более продвинутые файловые системы.это полностью поддерживается btrfs в linux, или zfs реализован как модуль ядра linux, а не как fuse.используя эти файловые системы, вы можете создавать логические субтомы и на лету увеличивать / уменьшать максимально доступное пространство.свободное пространство является общим для всех томов.в этих файловых системах невозможно выделить пространство любовника в том, что данные на нем, то fs повреждение на этом пути невозможно.к сожалению, zfs как модуль вы должны скомпилировать независимо, потому что нет официального распределенного ядра linux, поддерживающего этот fs.Но вы можете проверить btrfs , его функциональность очень близка к zfs и официально поддерживается ядром.

btw.Цикл основан на блочных устройствах с основным номером 7 (см. / dev / loop * специальные файлы блоков), и доступно 64 точки монтирования.может быть, этот счет выше, но я никогда не достигал этого.некоторый рецепт, как настроить больше циклов здесь: http://www.tldp.org/HOWTO/CDServer-HOWTO/addloops.html.Но мой друг рассказал мне о какой-то хитрости, вы можете вручную добавить больше петлевых устройств, и они будут использоваться на лету с помощью mknod / dev / loop8 b 7 8, mknod / dev / loop9 b 7 9 и т. Д., Конечно, без замены модулей.файл conf или аналогичный, и при создании во временной файловой системе udev все дополнительные циклы будут потеряны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...