ลินุกซ์ - โควต้าต่อไดเรกทอรี?


21

ฉันมีสถานการณ์ต่อไปนี้:

พาร์ติชันเดียวถูกเมาท์เป็น / ด้วยพื้นที่ดิสก์จำนวนมาก

มีช่วงของไดเรกทอรี (/ pg / tbs1, / pg / tbs2, / pg / tbs3 และอื่น ๆ ) และฉันต้องการ จำกัด ขนาดโดยรวมของไดเรกทอรีเหล่านี้

ทางเลือกหนึ่งคือการสร้างไฟล์ขนาดใหญ่จากนั้น mkfs และติดตั้งผ่านลูปแบ็คจากนั้นตั้งค่าโควต้า แต่การขยายตัวอาจทำให้เกิดปัญหาเล็กน้อย

มีวิธีอื่นในการทำให้โควต้าทำงานต่อไดเรกทอรีหรือไม่

linux  quota 

การติดตั้งไฟล์ผ่านลูปแบ็คไม่ได้แสดงถึงปัญหาการขยายตัว คุณเพียงแค่ขยายไฟล์พื้นฐานและใช้resize2fsเพื่อขยายระบบไฟล์ ฉันคิดว่าการใช้ LVM เป็นวิธีแก้ปัญหาที่ดีกว่า แต่สิ่งที่คุณเสนอนั้นไม่มีข้อ จำกัด ที่คุณคิด
larsks

นอกจากนี้ btrfs และ zfs
hanshenrik

คำตอบ:


17

หากคุณถูกบังคับให้ใช้ ext3 การใช้ LVM น่าจะเป็นทางออกที่ดีที่สุดของคุณ สร้างระบบไฟล์ใหม่ต่อโครงการ ที่จะมีลักษณะเช่นนี้:

# 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

การขยายระบบไฟล์โครงการเป็นเรื่องง่าย:

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

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

6

หากคุณไม่พึ่งพาสิทธิ์ของกลุ่มคุณสามารถใช้กลุ่ม UNIX ที่แตกต่างกันสำหรับแต่ละ "ไดเรกทอรีโควต้า" จากนั้นตั้งค่า sgid bit ในแต่ละไดเรกทอรี (ดังนั้นไฟล์และไดเรกทอรีที่สร้างขึ้นจะอยู่ในกลุ่มของไดเรกทอรีแทนที่จะเป็นกลุ่มหลัก ของผู้ใช้ผู้สร้าง) และใช้โควต้ากลุ่ม


5

ใช่. ดูระบบไฟล์ XFS และโควต้าโครงการ ระบบไฟล์อื่นไม่มีคุณสมบัตินี้


น่าเสียดายที่ฉันไม่สามารถเปลี่ยน fs พื้นฐานได้ แต่เป็นเรื่องดีที่รู้ว่า XFS มีความสามารถนี้

5

ฉันต้องการทำสิ่งนี้มาระยะหนึ่งแล้วเพราะฉันไม่ต้องการให้ผู้ใช้ระบบสำหรับผู้ใช้จดหมายเสมือนทั้งหมดของฉัน ระบบไฟล์ ZFS ที่มีโควต้าจะยอดเยี่ยมและฟิวส์ zfs ทำให้ความคืบหน้าทุกวัน แต่สิ่งที่ฉันต้องการคือโซลูชันที่มีน้ำหนักเบามาก ในที่สุดฉันก็ตัดสินใจที่จะเขียนระบบไฟล์ FUSE ที่ฉันสามารถเมาท์เป็นเลเยอร์บนระบบไฟล์อื่นได้ (ไดเรกทอรีฐานใด ๆ จะทำงานได้จริง) มันมียูทิลิตี้สำหรับการจัดการโควต้าที่สามารถสคริปต์ได้อย่างง่ายดายและเนื่องจากค่าโควต้าจะถูกเก็บเป็น xattrs ในไดเรกทอรีหรือไฟล์หนึ่งจุดเชื่อมต่อสามารถให้การสนับสนุนสำหรับโควต้าจำนวนโดยพลการ

ฉันได้ทำการทดสอบบนเซิร์ฟเวอร์อีเมลมาระยะหนึ่งแล้วและเพิ่งตัดสินใจว่าจะถึงช่วงวัยรุ่นและพร้อมที่จะเปิดตัวในป่า ถ้าคุณอยากรู้คุณสามารถตรวจสอบได้ที่http://code.google.com/p/fusequota/ ฉันขอขอบคุณข้อเสนอแนะใด ๆ



กระจก Git ใช้งานไม่ได้สำหรับฉัน ไม่มีข้อผิดพลาด แต่ฉันสามารถเกินโควต้า (ใน ext4 ที่มีตัวเลือกเมา rw, relatime, data = สั่ง)
timdiels

3

ระบบไฟล์ใหม่สำหรับแต่ละโฟลเดอร์ที่แชร์คือ IMHO overkill เพียงสร้างกลุ่มใหม่สำหรับแต่ละโฟลเดอร์ที่ใช้ร่วมกันตั้งกลุ่มเจ้าของของโฟลเดอร์ที่ใช้ร่วมกันไปยังกลุ่มนี้ตั้งค่าบิตเหนียวเป็นกลุ่ม (เพื่อให้ทุกไฟล์และไดเรกทอรีใหม่มีกลุ่มนี้เป็นเจ้าของ) และสำหรับสิทธิ์ในไฟล์และโฟลเดอร์ใช้รายการ acl จากนั้นตั้งค่าโควต้าสำหรับกลุ่มเหล่านี้


1

ฉันไม่ทราบวิธีการตั้งค่าคำพูดต่อไดเรกทอรี

แต่ตามความคิดของคุณในการสร้างระบบไฟล์ที่มีขนาด จำกัด นี่อาจเป็นสถานที่ที่LVMจะเป็นทางออกที่ดี

คุณสามารถสำรอง / ติดตั้งใหม่และใช้lvmเพียงจัดสรรจำนวนพื้นที่ขั้นต่ำที่จำเป็นสำหรับโลจิคัลวอลุ่มของคุณ มันง่ายมากที่จะขยายโลจิคัลวอลุ่มlvm

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.