Квоты проекта в ext4

Это касается установки квот проекта / квот каталогов в файловых системах ext4. Патч для разрешения квот проекта в файловых системах ext4 был представлен через патч https://lore.kernel.org/patchwork/patch/541895/.

Я попробовал следующие шаги (сопровождаемые соответствующими командами): 1. Создать файловую систему на блочном устройстве mkfs.ext4 /dev/nvme0n1

  1. Включить квоту проекта tune2fs -O проект -Q prjquota /dev/nvme0n1

  2. Смонтируйте блочное устройство: mount -o prjquota /dev/nvme0n1 /test

  3. Включить квоты на пути монтирования: quotaon -Pv -F vfsv1 /test

  4. Создайте идентификатор проекта / имя проекта для квоты проекта: echo 51:/test/first >> /etc/projects echo testproj:51 >> /etc/projid

  5. Изменить квоту, связанную с пользователем проекта: testproj edquota -P testproj

установите блок мягких блоков на 10, жесткий блок на 20

  1. Соответствует установленной квоте

repquota -avugP

Отчет по квотам проекта на устройстве / dev / nvme0n1 Время отсрочки блокировки: 7 дней; Время отсрочки Inode: 7days Ограничения блока Ограничения файла

Проект использовал мягкую твердую грацию использовал мягкую твердую грацию

testproj - 0 10 20 0 0 0

  1. Начните писать / выполнять ввод-вывод в указанном каталоге в / test / first

Fallocate -l 10G ten.txt

  1. Я вижу, что в указанном месте создается файл размером 10G, и, выполнив вышеуказанную команду в #7, я не вижу изменений в потребляемых inode.

Есть ли другие шаги для включения квот в файловых системах ext4?

Версия ядра:4.15.0-36-generic

0 ответов

Я считаю, что тебе не хватает

chattr +P -p 51 /test/first

/etc/projects, похоже, используется только инструментами XFS. Также /etc/projid предназначен только для красивой печати.

fyi это процедура, которую я придумал:

(шаг 0 для создания блочного устройства:

dd if=/dev/zero of=/tmp/fs bs=1024 count=80000
losetup -f /tmp/fs
losetup -l

)

  1. создать файловую систему с достаточно большими inodes:
mkfs.ext4 -I 256 /dev/loop0
  1. включите квоты проекта и убедитесь, что файловая система смонтирована с ним по умолчанию (здесь используются расширенные параметры с -E, избегая опции монтирования в шаге 3, но также довольно хитро, поскольку вы не видите его в / proc / mounts как смонтированный как таковой)
tune2fs -Q prjquota  /dev/loop0
tune2fs -E mount_opts=prjquota /dev/loop0
  1. смонтировать это
mount /dev/loop0 /mnt/loop/
  1. квота по команде не кажется полезной, поэтому пропустите эту

  2. установите идентификатор проекта, но в качестве чистой любезности для следующего системного администратора, входящего в ваш ящик. На самом деле не требуется

echo testproj:51 >> /etc/projid
  1. фактически сделайте вашу папку частью проекта (которой не было в вашем списке)
mkdir abc
chattr +P -p 51 abc
  1. редактировать квоту. Давайте использовать инструмент set quota, который когда-нибудь можно будет использовать позже в каком-нибудь доступном playbook, в отличие от edquota, который запускает интерактивный редактор:
setquota -P testproj 0 1234 0 0 /mnt/loop/
  1. Подтвердите, что квота установлена
repquota  -P   /mnt/loop/
# in some parsable format, assuming you wrote some simple enough strings in projid, since the xml formatter is pretty basic
repquota -P /mnt/loop/ -O xml
  1. убедитесь, что он работает:

как обычный пользователь:

dd if=/dev/zero of=someoutput oflag=append
loop0: write failed, project block limit reached.
dd: writing to 'someoutput': Disk quota exceeded
2471+0 records in
2470+0 records out
1264640 bytes (1.3 MB, 1.2 MiB) copied, 0.00985608 s, 128 MB/s
  1. убедитесь, что вы можете тривиально избежать этого, как обычный пользователь:
chattr  -p 43 someoutput
dd if=/dev/zero of=someoutput oflag=append
dd: writing to 'someoutput': No space left on device
127427+0 records in
127426+0 records out
65242112 bytes (65 MB, 62 MiB) copied, 0.561987 s, 116 MB/s

здесь полностью заполняется файловая система.

РЕДАКТИРОВАТЬ: дополнительная информация об ограничениях квот проекта Re: Владелец файла квоты проекта может изменить свой идентификатор проекта?, Re: ошибки ext4 и квот проекта (/ features)

Другие вопросы по тегам