Server Down : Mysql error 28 no space left on the device

by Little Bear @30 มี.ค. 64 11:50 ( IP : 171...165 ) | Tags : Server Status

เกิดอาการนี้มาเป็นวันที่ 2 แล้ว เมื่อวานสั่ง reboot แล้วหาย แต่วันนี้ reboot แล้วยังคงมีอาการอยู่

ที่เคยเจออาการนี้ คือ harddisk เต็ม ซึ่งปกติจะตรวจพื้นที่เหลือใน harddisk ก่อน ด้วย df -h ผลออกมาว่ายังมีพื้นที่เหลืออีกเพียบ จนในที่สุดก็พบว่าที่เต็มนั้นไม่ใช่พื้นที่ แต่เป็น inode ลองตรวจดูด้วยคำสั่ง df -i พบว่า / เต็ม 100%

สาเหตุของครั้งนี้คือ inode ที่มีไว้สำหรับเก็บตำแหน่ง folder/file เต็ม เท่าที่อ่านดู ยังไม่สามารถขยายเพิ่มได้ (ต้องทำตอน format harddisk) จึงต้องค้นหาว่า folder ไหนที่มีไฟล์เป็นจำนวนมาก แล้วก็ลบ/ย้ายไปไว้ที่อื่นที่ใช้คนละ inode กัน

# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 1275949 357 1275592 1% /dev
tmpfs 1278745 553 1278192 1% /run
/dev/sda1 1831424 1831424 0 100% /
tmpfs 1278745 1 1278744 1% /dev/shm
tmpfs 1278745 3 1278742 1% /run/lock
tmpfs 1278745 15 1278730 1% /sys/fs/cgroup
/dev/sdb1 122093568 8699755 113393813 8% /backup
/dev/sda4 119996416 4748787 115247629 4% /home
/dev/sda2 122400 337 122063 1% /boot
tmpfs 1278745 10 1278735 1% /run/user/1004

คำสั่ง ls เพื่อดูว่าแต่ละ file มี inode หมายเลขอะไร

# ls -lai

คำสั่งสำหรับนับจำนวนไฟล์ในแต่ละ folder

# for i in /*; do echo $i; find $i |wc -l; done
# echo "Detailed Inodes usage for: $(pwd)" ; for d in `find -maxdepth 1 -type d |cut -d/ -f2 |grep -xv . |sort`; do c=$(find $d |wc -l) ; printf "$c - $d
" ; done ; printf "Total: $(find $(pwd) | wc -l)
"

พบว่า folder usr/local/directadmin/data/tickets มี folder/file จำนวนมาก ซึ่งสะสมมาจาก ticket ที่ระบบอัตโนมัตของ directadmin สร้างขึ้นมา จึงทำการลบไฟล์ทิ้งทั้งหมด

# rm -rm /usr/local/directadmin/data/tickets[code]

แล้วย้าย folder tickets ไปไว้ใน /backup (ซึ่งอยู่คนละ harddisk ก็จะไม่มีผลต่อ inode ของ /)

[code]
# mkdir /backup/usr
# mkdir /backup/usr/local
# mkdir /backup/usr/local/directadmin
# mkdir /backup/usr/local/directadmin/data
# mkdir /backup/usr/local/directadmin/data/tickets
[code]

เปลี่ยน owner/group ให้เป็นของ DirectAdmin

[code]
# chown diradmin:diradmin /backup/usr/local/directadmin
# chown diradmin:diradmin /backup/usr/local/directadmin/data
# chown diradmin:diradmin /backup/usr/local/directadmin/data/template
# chown diradmin:diradmin /backup/usr/local/directadmin/data/tickets

สร้างลิงก์ tickets ไปที่ใหม่

# cd /usr/local/directadmin/data
# mv tickets tickets.old
# ln -s /backup/usr/local/directadmin/data/tickets tickets
# chown -h diradmin:diradmin tickets


ปล. เขาบอกว่าให้ลบไฟล์ session ทิ้งด้วย

# find . -type f -name sess_\* -delete

ที่มา







Relate topics

« 1145
หากท่านไม่ได้เป็นสมาชิก ท่านจำเป็นต้องป้อนตัวอักษรของ Anti-spam word ในช่องข้างบนให้ถูกต้อง
The content of this field is kept private and will not be shown publicly. This mail use for contact via email when someone want to contact you.
Bold Italic Underline Left Center Right Ordered List Bulleted List Horizontal Rule Page break Hyperlink Text Color :) Quote
คำแนะนำ เว็บไซท์นี้สามารถเขียนข้อความในรูปแบบ มาร์คดาวน์ - Markdown Syntax:
  • วิธีการขึ้นบรรทัดใหม่โดยไม่เว้นช่องว่างระหว่างบรรทัด ให้เคาะเว้นวรรค (Space bar) ที่ท้ายบรรทัดจำนวนหนึ่งครั้ง
  • วิธีการขึ้นย่อหน้าใหม่ซึ่งจะมีการเว้นช่องว่างห่างจากบรรทัดด้านบนเล็กน้อย ให้เคาะ Enter จำนวน 2 ครั้ง