คู่มือการขยาย Disk สำหรับ PostgreSQL

คู่มือการขยาย Disk สำหรับ PostgreSQL
Feb 4, 2026
almalinuxlinuxpgsqlPostgreSQLHOSxPXE
📘 คู่มือการขยาย Disk สำหรับ PostgreSQL (/var/lib/pgsql)
🎯 วัตถุประสงค์
คู่มือนี้ใช้สำหรับขยายขนาด Disk/Partition ที่ mount อยู่ที่ /var/lib/pgsql
ซึ่งเป็นที่เก็บข้อมูลของ PostgreSQL 15 โดยเน้นความปลอดภัยของข้อมูล
⚠️ ข้อควรระวังก่อนเริ่ม
- ต้องทำ Snapshot หรือ Backup Image ก่อนทุกครั้ง
- ตรวจสอบให้แน่ใจว่า Disk ที่จะขยายคือ Disk ที่ถูกต้อง (เช่น
/dev/sdb) - คำสั่งทั้งหมดต้องใช้สิทธิ์
rootหรือsudo - ตัวอย่างนี้ใช้ filesystem แบบ
ext4
🧭 ขั้นตอนการขยาย Disk
1️⃣ ตรวจสอบ Disk และ Partition
lsblk
ใช้ตรวจสอบว่า /var/lib/pgsql อยู่บน Disk/Partition ใด (เช่น /dev/sdb1)
2️⃣ หยุดบริการ PostgreSQL
sudo systemctl stop postgresql-15
เพื่อป้องกันข้อมูลเสียหายระหว่างขยาย filesystem
3️⃣ Rescan Disk
echo 1 > /sys/class/block/sdb/device/rescan
ใช้ในกรณีที่ขยาย Disk จาก Hypervisor / Cloud
4️⃣ ขยาย Partition
sudo parted /dev/sdb resizepart 1 100%
1= Partition ที่ต้องการขยาย100%= ใช้พื้นที่ Disk ทั้งหมดที่เหลือ
5️⃣ โหลด Partition Table ใหม่
sudo partprobe /dev/sdb
6️⃣ Unmount filesystem
sudo umount /var/lib/pgsql
7️⃣ ตรวจสอบ filesystem
sudo e2fsck -f /dev/sdb1
บังคับตรวจสอบและซ่อมแซม filesystem ก่อน resize
8️⃣ ขยาย filesystem
sudo resize2fs /dev/sdb1
9️⃣ Mount กลับ
sudo mount /dev/sdb1 /var/lib/pgsql
🔟 ตรวจสอบขนาด Disk
df -h /var/lib/pgsql
1️⃣1️⃣ เริ่ม PostgreSQL
sudo systemctl start postgresql-15
🔍 การตรวจสอบ Log หลังทำเสร็จ
✅ 1. ตรวจสอบสถานะ PostgreSQL
systemctl status postgresql-15
ควรเห็นสถานะ:
Active: active (running)
✅ 2. ตรวจสอบ PostgreSQL Log
ตำแหน่ง Log โดยทั่วไป:
/var/lib/pgsql/15/data/log/
ตรวจสอบ log ล่าสุด:
ls -ltr /var/lib/pgsql/15/data/log/
tail -n 50 /var/lib/pgsql/15/data/log/postgresql-*.log
หรือดูแบบ realtime:
tail -f /var/lib/pgsql/15/data/log/postgresql-*.log
สิ่งที่ควรตรวจ:
- ไม่มี ERROR / PANIC
- ไม่มีข้อความเกี่ยวกับ corrupted data หรือ WAL
✅ 3. ตรวจสอบ Journal Log ของ PostgreSQL
journalctl -u postgresql-15 --since "10 minutes ago"
หรือดูเฉพาะ error:
journalctl -u postgresql-15 -p err
✅ 4. ตรวจสอบ Kernel / Disk Log (dmesg)
dmesg | tail -n 50
หรือกรองเฉพาะ disk error:
dmesg | egrep -i "error|ext4|sdb"
สิ่งที่ควรระวัง:
- I/O error
- ext4 error
- filesystem corruption
✅ 5. ตรวจสอบการ Mount
mount | grep pgsql
หรือ:
findmnt /var/lib/pgsql
✅ 6. ทดสอบ PostgreSQL เชิงพื้นฐาน
psql -U postgres -c "SELECT now();"
หรือเช็ค database list:
psql -U postgres -c "\l"
✅ Checklist หลังขยาย Disk
- Disk size เพิ่มขึ้น (
df -h) - PostgreSQL status = running
- ไม่มี error ใน PostgreSQL log
- ไม่มี error ใน
dmesg - Query ทำงานได้ปกติ
📝 หมายเหตุ
- หาก
/var/lib/pgsqlเป็นxfsจะต้องใช้xfs_growfsแทนresize2fs - หากพบ error ใด ๆ แนะนำให้หยุดใช้งานทันทีและ restore จาก snapshot
- คำสั่งและขั้นตอนอาจแตกต่างกันขึ้นอยู่กับระบบปฏิบัติการและการตั้งค่าของคุณ