Linux - kuota per direktori?


21

Saya memiliki skenario berikut:

Partisi tunggal dipasang sebagai /, dengan banyak ruang disk.

Ada berbagai direktori (/ pg / tbs1, / pg / tbs2, / pg / tbs3 dan seterusnya), dan saya ingin membatasi ukuran total direktori ini.

Salah satu opsi adalah membuat beberapa file besar, dan kemudian mkfs mereka, dan mount over loopback, dan kemudian mengatur kuota, tetapi ini membuat ekspansi sedikit bermasalah.

Apakah ada cara lain untuk membuat kuota berfungsi per direktori?

linux  quota 

Memasang file melalui loopback tidak benar-benar menimbulkan masalah ekspansi. Anda cukup memperluas file yang mendasarinya dan kemudian gunakan resize2fsuntuk menumbuhkan sistem file. Saya pikir menggunakan LVM adalah solusi yang lebih baik, tetapi yang Anda usulkan tidak memiliki keterbatasan seperti yang Anda pikirkan.
larsks

juga btrfs dan zfs
hanshenrik

Jawaban:


17

Jika Anda terpaksa menggunakan ext3, maka menggunakan LVM mungkin adalah solusi terbaik Anda. Buat sistem file baru per proyek. Itu akan terlihat seperti ini:

# Create a 10g filesystem for "project1" in volume group "vg0"
lvcreate -L 10g -n project1 vg0

# Create an ext3 filesystem.
mke2fs -j /dev/vg0/project1

# Mount it (obviously you would want this in /etc/fstab)
mount /dev/vg0/project1 /projects/project1

Menumbuhkan sistem file proyek itu mudah:

# Add 2GB to the volume.
lvextend -L +2g /dev/vg0/project1

# Grow the filesystem.
resize2fs /dev/vg0/project1

6

Jika Anda tidak bergantung pada izin grup, Anda dapat menggunakan grup UNIX berbeda untuk setiap "direktori kuota", lalu mengatur bit sgid pada setiap direktori (jadi file dan direktori yang dibuat akan menjadi milik grup direktori alih-alih grup utama dari pengguna pembuat), dan gunakan kuota grup.


5

Iya nih. Lihatlah sistem file XFS dan kuota proyek. Sistem file lain tidak menawarkan fitur ini.


Sayangnya saya tidak dapat mengubah fs yang mendasarinya. Tapi senang mengetahui bahwa XFS memiliki kemampuan ini.

5

Saya sebenarnya ingin melakukan ini untuk sementara waktu karena saya tidak ingin harus membuat pengguna sistem untuk semua pengguna email virtual saya. Sistem file ZFS dengan kuota akan bagus, dan zfs-fuse membuat kemajuan setiap hari, tetapi yang saya inginkan adalah solusi yang sangat ringan. Akhirnya saya memutuskan untuk menulis filesystem FUSE yang bisa saya mount sebagai layer di atas filesystem lain (direktori dasar mana pun akan bekerja dengan benar). Ini memiliki utilitas untuk mengelola kuota yang dapat dituliskan dengan mudah dan karena nilai kuota hanya disimpan sebagai xattrs pada direktori atau file, satu mountpoint dapat memberikan dukungan untuk jumlah kuota yang sewenang-wenang.

Saya telah mengujinya di server email untuk sementara waktu dan baru-baru ini memutuskan telah mencapai usia remaja dan siap untuk dirilis ke alam liar. Jika Anda penasaran, Anda dapat memeriksanya di http://code.google.com/p/fusequota/ . Saya akan sangat menghargai umpan balik apa pun.



Cermin Git tidak bekerja untuk saya. Tidak ada kesalahan, tetapi saya dapat melebihi kuota (pada ext4 dengan opsi mount rw, relatime, data = ordered)
timdiels

3

Filesystem baru untuk setiap folder bersama adalah IMHO berlebihan. Buat saja grup baru untuk setiap folder bersama, atur grup pemilik folder bersama ke grup ini, atur bit sticky ke grup (sehingga setiap file dan direktori baru memiliki grup ini sebagai pemilik) dan untuk izin pada file dan folder menggunakan daftar acl. Kemudian tetapkan kuota untuk grup ini.


1

Saya tidak mengetahui metode apa pun untuk menetapkan kutipan per direktori.

Namun seiring dengan ide Anda menciptakan sistem file dengan ukuran terbatas. Ini mungkin tempat di mana lvm akan menjadi solusi yang baik.

Anda dapat membuat cadangan / menginstal ulang dan menggunakan lvm , hanya mengalokasikan jumlah ruang minimum yang diperlukan untuk volume logis Anda. Sangat mudah untuk memperluas volume logis lvm .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.