วิธีการตั้งค่าโควต้าระบบไฟล์ (ดิสก์) บน Ubuntu
โควต้าระบบไฟล์เป็นคุณสมบัติมาตรฐานในตัวที่พบใน Linux Kernel โควต้าจะกำหนดจำนวนพื้นที่ที่ไฟล์ควรมีเพื่อรองรับกิจกรรมของผู้ใช้ โควต้าดิสก์ยังจำกัดจำนวนไฟล์ที่ผู้ใช้สามารถสร้างบนระบบได้
ระบบไฟล์ที่รองรับระบบโควต้า ได้แก่ xfs, ext2, ext4 และ ext3 และอีกมากมาย การกำหนดโควต้านั้นเฉพาะกับระบบไฟล์และสำหรับผู้ใช้แต่ละคน บทความนี้นำเสนอทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับการทำงานกับระบบไฟล์โควต้าในสภาพแวดล้อม Ubuntu ที่มีผู้ใช้หลายราย
สมมติฐานที่นี่คือคุณกำลังใช้ระบบ Ubuntu กับผู้ใช้ (tecmint) ที่ได้รับสิทธิ์ sudo แนวคิดที่แบ่งปันที่นี่สามารถทำงานได้บนดิสโทร Linux ใดๆ ตราบใดที่คุณใช้เทคนิคการใช้งานที่ถูกต้อง
ขั้นตอนที่ 1: การติดตั้งโควต้าใน Ubuntu
เพื่อให้โควต้าพร้อมใช้งานและใช้งานได้ ให้ติดตั้งเครื่องมือบรรทัดคำสั่ง โควต้า โดยใช้คำสั่ง apt แต่ก่อนหน้านั้น คุณจะต้องอัปเดตแพ็คเกจซอฟต์แวร์ระบบก่อน
sudo apt update
ตอนนี้ใช้คำสั่งต่อไปนี้เพื่อติดตั้งแพ็คเกจ โควต้า บน Ubuntu
sudo apt install quota
กด Y
จากนั้นกด ENTER เพื่อให้กระบวนการติดตั้งเริ่มต้น
ยืนยันเวอร์ชันการติดตั้งโดยรันคำสั่งด้านล่าง หมายเลขเวอร์ชันของคุณอาจแตกต่างจากที่คุณเห็นด้านล่าง
quota --version
ขั้นตอนที่ 2: การติดตั้งโมดูลสำหรับโควต้าเคอร์เนล
สำหรับผู้ที่ใช้ระบบเสมือนบนคลาวด์ การติดตั้ง Ubuntu เริ่มต้นอาจไม่มีโมดูลเคอร์เนลที่รองรับการใช้โควต้า คุณต้องยืนยันโดยใช้เครื่องมือค้นหาและตรวจสอบให้แน่ใจว่าทั้งสองโมดูล quota_v1 และ quota _v2 อยู่ภายในไดเร็กทอรี /lib/modules
find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'
นี่ควรเป็นผลลัพธ์ของคำสั่งข้างต้น
ไม่ต้องกังวลกับเวอร์ชันของเคอร์เนลตราบใดที่ยังมีโมดูลทั้งสองอยู่ หากไม่พบ ให้ใช้คำสั่งต่อไปนี้เพื่อติดตั้งโมดูลเคอร์เนลโควต้าดังที่แสดง
sudo apt install linux-image-extra-virtual
คุณจะได้รับโมดูลที่เหมาะสมที่จำเป็นสำหรับการใช้โควต้า
ขั้นตอนที่ 3: การอัปเดตตัวเลือกการเมาท์ระบบไฟล์
เพื่อให้โควต้าใช้งานได้บนระบบเฉพาะ จะต้องติดตั้งด้วยตัวเลือกโควต้าที่เกี่ยวข้อง คุณสามารถทำได้โดยอัปเดตรายการระบบไฟล์ที่พบในไฟล์ /etc/fstab
sudo nano /etc/fstab
คุณควรพร้อมที่จะแก้ไขไฟล์อย่างเหมาะสม ความแตกต่างระหว่างไฟล์ fstab และเดสก์ท็อปคือความแตกต่างว่าระบบไฟล์ /
หรือ root แสดงถึงพื้นที่ดิสก์ทั้งหมดอย่างไร แทนที่บรรทัด (/)
ที่ชี้ไปที่ระบบรูทโดยใช้บรรทัดด้านล่าง
LABEL=cloudimg-rootfs / ext4 usrquota,grpquota 0 0
บรรทัดจะเปลี่ยนเพื่อให้สามารถเข้าถึง โควต้าผู้ใช้ และ grpquota ได้ คุณสามารถปล่อยอันที่ไม่ใช่ส่วนหนึ่งของการกำหนดค่าขั้นสุดท้ายไว้ได้ หาก fstab มีตัวเลือกบางอย่าง ให้เพิ่มตัวเลือกใหม่ที่ท้ายบรรทัด ขณะที่คุณดำเนินการต่อท้าย ให้คั่นรายการใหม่ด้วยเครื่องหมายจุลภาคแต่ต้องไม่มีช่องว่างระหว่างรายการเหล่านั้น
ติดตั้งระบบไฟล์อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล
sudo mount -o remount /
หมายเหตุ: ยืนยันว่าไม่มีการเว้นวรรคระหว่างตัวเลือกใน /etc/fstab เพื่อหลีกเลี่ยงข้อผิดพลาดดังกล่าว
mount: /etc/fstab: parse error
การตรวจสอบการใช้ตัวเลือกใหม่เมื่อติดตั้งระบบไฟล์ในไฟล์ /proc/mounts ดำเนินการผ่าน grep คำสั่งแสดงรายการระบบไฟล์รูทในไฟล์
sudo cat /proc/mounts | grep ' / '
จากผลลัพธ์ คุณจะเห็นสองตัวเลือกที่เราตั้งค่าไว้ ถึงเวลาเปิดระบบโควต้า
ขั้นตอนที่ 4: การเปิดใช้งานโควต้าดิสก์บน Ubuntu
ขั้นแรก คุณต้องเรียกใช้คำสั่ง quotacheck
sudo quotacheck -ugm /
คำสั่งสร้างไฟล์สองไฟล์สำหรับผู้ใช้โควต้าและกลุ่มโควต้าที่มีข้อมูลเกี่ยวกับขีดจำกัดและการใช้งานของระบบไฟล์ ต้องมีไฟล์เหล่านี้ก่อนที่คุณจะเริ่มใช้โควต้า
นี่คือคำจำกัดความของพารามิเตอร์:
-u
: เป็นสัญลักษณ์ของไฟล์โควต้าตามผู้ใช้จะถูกสร้างขึ้น-g
: ระบุว่าไฟล์โควต้าตามกลุ่มจะถูกสร้างขึ้น-m
: ปิดใช้งานการติดตั้งระบบไฟล์ใหม่เป็นแบบอ่านอย่างเดียว ในขณะเดียวกันก็ให้ผลลัพธ์ที่แม่นยำในสภาพแวดล้อมที่ผู้ใช้บันทึกไฟล์ต่อไป ตัวเลือก m ไม่จำเป็นในระหว่างการตั้งค่า
เมื่อไม่จำเป็นต้องเปิดใช้งานการใช้โควต้าตามผู้ใช้หรือกลุ่ม ก็ไม่จำเป็นต้องเรียกใช้ตัวเลือก การตรวจสอบโควต้า ยืนยันสิ่งนี้โดยแสดงรายการไดเรกทอรีรากโดยใช้คำสั่ง ls
ls /
ผลลัพธ์ตัวอย่าง
aquota.group bin dev home initrd.img.old lib64 media opt root sbin srv tmp var vmlinuz.old
aquota.user boot etc initrd.img lib lost+found mnt proc run snap sys usr vmlinuz
หากไม่รวมพารามิเตอร์ u
และ g
ใน คำสั่งquotacheck ไฟล์ที่เกี่ยวข้องจะหายไป
ตอนนี้เราพร้อมที่จะเปิดโควต้าบนระบบไฟล์รูท (/)
ด้วยคำสั่งต่อไปนี้
sudo quotaon -v /
ขั้นตอนที่ 5: กำหนดค่าโควต้าสำหรับผู้ใช้คนเดียว
เราสามารถใช้คำสั่ง edquota และ setquota เพื่อตั้งค่าให้กับผู้ใช้หรือกลุ่ม
การใช้ edquota
ตัวอย่างเช่น คำสั่ง edquota แก้ไขโควต้า เราสามารถแก้ไขโควต้าที่เป็นของผู้ใช้ tecmint โดยใช้:
sudo edquota -u tecmint
การใช้ตัวเลือก -u
ระบุว่าโควต้าเป็นของผู้ใช้ ใช้ตัวเลือก -g
หากคุณต้องการแก้ไขโควต้าที่เป็นของกลุ่ม คำสั่งจะเปิดไฟล์โดยใช้โปรแกรมแก้ไขข้อความที่คุณเลือก
เอาต์พุตจะแสดงชื่อผู้ใช้, uid, ระบบไฟล์ที่มีโควต้าที่ใช้งานอยู่ และการใช้งานบล็อกและ inodes โควต้าตาม inodes จะจำกัดจำนวนไฟล์และไดเร็กทอรีที่ผู้ใช้สามารถสร้างได้ โดยไม่คำนึงถึงขนาดที่ใช้บนดิสก์ ผู้ดูแลระบบส่วนใหญ่ชอบโควต้า แบบบล็อก ที่ควบคุมพื้นที่ดิสก์
หมายเหตุ: การใช้บล็อกไม่ได้แสดงให้เห็นว่าสามารถเปลี่ยนแปลงได้อย่างไร ขึ้นอยู่กับปัจจัยต่างๆ เช่น เครื่องมือบรรทัดคำสั่งที่รายงานบล็อกเหล่านั้น ภายในโควต้าบริบทบน Ubuntu เราสามารถสรุปได้ว่าบล็อกเดียวจะเหมือนกับพื้นที่ดิสก์หนึ่งกิโลไบต์
เมื่อใช้บรรทัดคำสั่งด้านบน ผู้ใช้จะใช้บล็อก 2032 ซึ่งเท่ากับพื้นที่ 2032KB บน /dev/sda1 ค่า 0 ปิดใช้งานทั้งขีดจำกัดซอฟต์และฮาร์ด
โควต้าทุกชุดอนุญาตให้ตั้งค่าขีดจำกัดซอฟต์และฮาร์ดได้ ผู้ใช้ที่เกินขีดจำกัดซอฟต์อาจจะเกินโควต้าของเธอ แต่ไม่ถูกห้ามไม่ให้ใช้ช่องว่างหรือ inodes มากขึ้น ผู้ใช้ในกรณีดังกล่าวมีเวลาเจ็ดวันในการแลกพื้นที่จำกัดซอฟต์ของตน หากไม่ดำเนินการดังกล่าวจะทำให้บันทึกหรือสร้างไฟล์ได้ยาก
ขีดจำกัดแบบฮาร์ดหมายถึงการสร้างบล็อกหรือ inode ใหม่จะหยุดทันทีที่คุณถึงขีดจำกัด ผู้ใช้จะรายงานการพบคำเตือนหรือข้อผิดพลาดขณะปฏิบัติงานปกติ
เราสามารถอัปเดตโควต้าบล็อกของ tecmint ให้มีซอฟต์จำกัดเป็น 100MB และ 110MB สำหรับฮาร์ดลิมิต
หลังจากแก้ไข ให้ปิดไฟล์และตรวจสอบการตั้งค่าขีดจำกัดโควต้าผู้ใช้ใหม่โดยใช้ คำสั่งโควต้า
sudo quota -vs tecmint
หมายเหตุ: ให้โอกาสผู้ใช้ในการวิเคราะห์โควต้าของตนโดยไม่ต้องเรียกใช้ คำสั่ง sudo พวกเขาจะต้องได้รับสิทธิ์ในการเข้าถึงไฟล์โควต้าการอ่านในระหว่าง ขั้นตอนการสร้างในขั้นตอนที่สี่ วิธีง่ายๆ วิธีหนึ่งในการทำเช่นนี้คือการสร้างกลุ่มผู้ใช้และให้สิทธิ์การเข้าถึงกลุ่มเพื่อให้คุณสามารถเพิ่มผู้ใช้เข้าไปได้
การใช้ชุดโควต้า
setquota อัปเดตข้อมูลโควต้าโดยใช้คำสั่งเดียวโดยไม่ต้องตั้งค่าแบบโต้ตอบใดๆ คำสั่งต้องการชื่อผู้ใช้และการตั้งค่าทั้งขีดจำกัดแบบซอฟต์และฮาร์ดที่บล็อกและไอโหนดจะใช้ คุณจะต้องประกาศระบบไฟล์ที่จะใช้โควต้าด้วย
sudo setquota -u tecmint 200M 220M 0 0 /
คำสั่งจะเพิ่มขีดจำกัดโควต้าตามบล็อกเป็นสองเท่าเป็น 200 เมกะไบต์และ 220 เมกะไบต์ 0 0
สองตัวระบุว่าไม่ได้ตั้งค่าขีดจำกัดทั้งแบบฮาร์ดและซอฟต์ ซึ่งเป็นข้อกำหนดแม้ว่าจะไม่จำเป็นต้องตั้งค่าโควต้าแบบอิงไอโหนดก็ตาม
ตามปกติ ให้ใช้คำสั่งโควต้าเพื่อตรวจสอบความคืบหน้าของคุณ
sudo quota -vs tecmint
ขั้นตอนที่ 6: การสร้างรายงานโควต้า
การสร้างรายงานโควต้าต้องระบุการใช้งานจากผู้ใช้ทั้งหมด มีการใช้คำสั่ง repquota
sudo repquota -s /
ผลลัพธ์ข้างต้นเป็นรายงานเกี่ยวกับระบบไฟล์รูท /
-s
สั่งให้ repquota ให้ผลลัพธ์ในรูปแบบที่มนุษย์สามารถอ่านได้
เวลาผ่อนผันการบล็อกเริ่มต้นคือ 7 วัน คอลัมน์เกรซจะแจ้งเตือนผู้ใช้เกี่ยวกับจำนวนวันก่อนที่จะถูกปฏิเสธการเข้าถึงดิสก์ทรัพยากร
ขั้นตอนที่ 7: ตั้งค่าระยะเวลาผ่อนผันของการกำหนดค่า
ระยะเวลาผ่อนผันคือเวลาที่ผู้ใช้ได้รับอนุญาตให้ทำงานเกินเวลาเริ่มต้น
sudo setquota -t 864000 864000 /
คำสั่งสั่งให้บล็อกและ inode มีระยะเวลาผ่อนผัน 864000 วินาที ซึ่งเทียบเท่ากับ 10 วัน การตั้งค่าจะมีผลกับผู้ใช้ทุกคน ดังนั้น จำเป็นต้องตั้งค่าแม้ว่าจะไม่มีการใช้บล็อกและไอโหนดก็ตาม ค่าเวลาต้องเป็นวินาที
ยืนยันการเปลี่ยนแปลงและดูว่ามีผลหรือไม่โดยใช้คำสั่ง:
sudo repquota -s /
ข้อความแสดงข้อผิดพลาดทั่วไป
quotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]
ข้อผิดพลาดข้างต้นเป็นเรื่องปกติหากคุณพยายามเปิดโควต้าโดยใช้คำสั่ง qoutaon ก่อนที่จะพยายามตรวจสอบสถานะของโควต้าโดยใช้คำสั่ง quotacheck
quotaon: using //aquota.group on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
quotaon: using //aquota.user on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
ข้อผิดพลาดนี้แจ้งผู้ดูแลระบบว่าเคอร์เนลไม่รองรับ หรือคุณอาจมีเวอร์ชันที่ไม่ถูกต้องในเครื่อง (เรามี quota_v1 และ quota_v2) สำหรับ Ubuntu ข้อผิดพลาดดังกล่าวเป็นเรื่องปกติบนเซิร์ฟเวอร์เสมือนบนคลาวด์
แก้ไขข้อผิดพลาดโดยการติดตั้งแพ็คเกจ Linux-image-extra-virtual โดยใช้คำสั่ง apt
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //quota.user: No such file or directory
ข้อผิดพลาดนี้สังเกตได้เมื่อผู้ใช้ปัจจุบันไม่มีสิทธิ์ในการอ่านไฟล์โควต้า ในฐานะผู้ดูแลระบบ คุณจะต้องทำการเปลี่ยนแปลงสิทธิ์อนุญาตที่ถูกต้องหรือใช้ sudo เมื่อคุณต้องการเข้าถึงไฟล์ในระบบโควต้าหรือไฟล์
บทสรุป
ที่ด้านบนของบทความ เราเริ่มต้นด้วยเครื่องมือบรรทัดคำสั่ง โควต้า และการตรวจสอบเวอร์ชันเคอร์เนล และอธิบายเพิ่มเติมถึงวิธีตั้งค่าโควต้าแบบบล็อกสำหรับผู้ใช้รายเดียวและวิธี สร้างรายงานเกี่ยวกับการใช้โควต้าระบบไฟล์
บทความนี้ยังครอบคลุมถึงข้อผิดพลาดทั่วไปและวิธีหลีกเลี่ยงโดยใช้แพ็คเกจเพิ่มเติมหรือการตรวจสอบเวอร์ชันเคอร์เนลบนระบบของคุณ