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

คู่มือการขยาย 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
  • คำสั่งและขั้นตอนอาจแตกต่างกันขึ้นอยู่กับระบบปฏิบัติการและการตั้งค่าของคุณ