ค้นหาเว็บไซต์

วิธีการตั้งค่าโควต้าระบบไฟล์ (ดิสก์) บน 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 เมื่อคุณต้องการเข้าถึงไฟล์ในระบบโควต้าหรือไฟล์

บทสรุป

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

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