В Linux, как я могу создать файл с тонким предоставлением, чтобы его можно было смонтировать и создать файловую систему?
Я строю систему, которая дает пользователям определенное количество дискового пространства. Я делаю это так:
- создать файл с дд
- создать файловую систему ext4 внутри файла
- смонтируйте файл и сообщите программе пользователя использовать точку монтирования в качестве рабочего каталога
Я не хочу использовать систему квот Linux, так как я не хочу, чтобы пользователи были пользователями локальной системы.
Вышеприведенный код работает нормально, но он тратит пространство, так как пользователи не используют все свои квоты, но все квоты уже распределены.
Есть ли команда, которая может сделать то же самое, что и dd, но не выделить весь файл сразу? Таким образом, я мог бы создать файл размером 20 ГБ, и при его монтировании он сообщал бы о 20 ГБ пространства, но он только физически занимал бы то, что было записано в него?
3 ответа
Вы можете использовать seek
параметр dd
создать разреженный файл:
dd if=/dev/zero of=filesystem.img bs=1k seek=1024M count=1
создаст файл, который может иметь размер до 1G, но будет занимать только необходимое пространство.
Посмотрите на редкие файлы с.
dd if=/dev/zero of=file.img bs=1 count=0 seek=1024M
создает разреженный файл размером 1024 МБ, который можно отформатировать и смонтировать как файловую систему. Больше информации о разреженных файлах и их использовании здесь.
В CentOS вы можете использовать инструменты qemu, как показано ниже;
qemu-img create -f raw the_filename 5G