[PODMAN] rootless container error “Disk quota exceeded”

วันนี้เป็นปัญหาที่น่าปวดหัวเหมือนกันหลังจากใช้ Podman ไป 1 ปีนิดๆครับ อยู่ลูกค้าแจ้งปัญหามาว่า

Error: exec failed: container_linux.go:349: starting container process caused "join session keyring: create session key: disk quota exceeded": OCI runtime error

Disk quota exceeded มาจากไหน ?

  • เดี๋ยวต้องไปหาที่มาเพิ่ม

Solution

  • ตรวจสอบก่อนว่า maxkey มีค่าเท่าไหร่ ด้วยคำสั่ง
[invsapp@tm-cep]$ cat /proc/sys/kernel/keys/maxkeys
200 << System Default
  • ลองดูจำนวนปัจจุบันสิ มีค่าเท่าไหร่ (ต้อง Login เข้าไป และรันแยก User นะ เพราะ ตัวระบบมันเก็บค่าแยก Per User (Ref: sysctl - Is kernel.keys.maxkeys per user or per key?)
[invsapp@tm-cep]$ cat /proc/keys | wc -l
5

[invsoper@tm-cep]$ cat /proc/keys | wc -l
6
  • ในกรณีที่ค่าของมันเกิน maxkeys เช่น
[invsoper@tm-cep]$ cat /proc/sys/kernel/keys/maxkeys
200

[invsoper@tm-cep]$ cat /proc/keys | wc -l
206
  • ต้องไปเพิ่ม maxkeys ต้องใช้ user root นะ ด้วยคำสั่ง
[invsapp@tm-cep]$ sudo su -
[root@tm-cep]$ echo "400" > /proc/sys/kernel/keys/maxkeys
  • นอกจากเพิ่ม maxkeys แล้ว ถ้าลองไปดูใน API keyrings(7) - Linux manual page (man7.org) มันจะมี maxbytes ด้วยนะ อาจจะเพิ่มได้ด้วยกันเลย แต่การเพิ่มมันจะใช้ Memory เพิ่ม ต้องระวังด้วย
//ตรวจสอบค่าปัจจุบัน
[invsapp@tm-cep]$ cat /proc/sys/kernel/keys/maxbytes
20000 //0.019073 MB
  • ลองปรับ maxbytes ต้องใช้ user root นะ ด้วยคำสั่ง
  • ** 10485760 bytes = 10 MB
[invsapp@tm-cep]$ sudo su -
[root@tm-cep]$ echo "10485760" > /proc/sys/keys/maxbytes
  • ปรับไปแล้วอย่าลืมเอา maxkeys * maxbytes เดี๋ยวเพิ่มไปแล้ว Server RAM ไม่พอ อย่างของผมปรับ
    • maxkeys = 400
    • maxbytes = 10485760 // 10 MB
    • ใช้ memory รวมๆไป 4000 MB ก็ประมาณ 4 GB เลย (ของเก่า 4MB)
  • NOTE: ถ้า Link นี้่จะแนะนำให้สร้าง Config แยก เพราะค่าจะหายไปตอน Reboot disk quota exceeded when trying to deploy Docker container inside LXC - Unix & Linux Stack Exchange

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.