Storage VPS ต่างจาก VPS ปกติอย่างไร เลือกแบบไหนดี
เปรียบเทียบความแตกต่างระหว่าง Storage VPS ที่เน้นพื้นที่เก็บข้อมูลขนาดใหญ่กับ VPS มาตรฐานที่ใช้ NVMe ความเร็วสูง เรียนรู้การเลือกใช้ให้เหมาะกับงานสำรองข้อมูลหรือฐานข้อมูล
Storage VPS กับ regular VPS: คำตอบโดยย่อ
Storage VPS คือ virtual private server ที่ขายพื้นที่เก็บข้อมูลเป็นหน่วยเทราไบต์ ในขณะที่ regular VPS ขายทรัพยากรโดยเน้นที่จำนวน core แผน storage ให้พื้นที่ดิสก์ความเร็วต่ำขนาดหลายเทราไบต์โดยแลกกับส่วนแบ่ง CPU ที่จำกัด ส่วนแผนมาตรฐานให้ดิสก์แบบ NVMe (non-volatile memory express) ที่มีความเร็วสูงกว่า แต่โดยทั่วไปจะมีขนาดเล็กกว่าถึง 20 เท่า พร้อมด้วยหน่วยประมวลผลและหน่วยความจำที่มากกว่าในราคาที่เท่ากัน ส่วนประกอบอื่นทั้งหมดของทั้งสองผลิตภัณฑ์นั้นเหมือนกัน ไม่ว่าจะเป็น hypervisor เดียวกัน, root shell เดียวกัน, Ubuntu image เดียวกัน และ network stack เดียวกัน
ความแตกต่างเพียงจุดเดียวนี้เป็นตัวตัดสินความเหมาะสมในการใช้งาน Storage VPS เหมาะสำหรับใช้เป็นเป้าหมายในการสำรองข้อมูล, คลังสื่อ, การจัดเก็บข้อมูลแบบ cold archive และงานประเภทที่เขียนข้อมูลครั้งเดียวแต่อ่านน้อยครั้ง แต่ไม่เหมาะสำหรับฐานข้อมูลหรือหน้าเว็บที่ผู้ใช้ต้องรอการตอบสนอง เนื่องจากภาระงานเหล่านั้นต้องการการอ่านข้อมูลแบบสุ่มขนาดเล็กที่ต้องเสร็จสิ้นภายในเวลาประมาณหนึ่งมิลลิวินาที ซึ่งพื้นที่เก็บข้อมูลราคาถูกนั้นมีราคาต่ำก็เพราะไม่สามารถรองรับการทำงานดังกล่าวได้
ชื่อแผนที่คุณพบในหน้าแสดงราคา
ป้ายกำกับ 4 ประเภทครอบคลุมผู้ให้บริการเกือบทุกราย และมีเพียง 2 ประเภทเท่านั้นที่มีความหมายเฉพาะเจาะจง
- Standard VPS: มี vCPU ตั้งแต่ 2 ถึง 8 คอร์, RAM ตั้งแต่ 2 GB ถึง 32 GB และพื้นที่เก็บข้อมูล NVMe หรือ SATA SSD ขนาด 20 GB ถึง 400 GB ซึ่งติดตั้งอยู่บนโหนดโฮสต์โดยตรง
- Storage VPS: มีพื้นที่เก็บข้อมูลตั้งแต่ 1 TB ถึง 20 TB หรือมากกว่า โดยปกติจะใช้จานหมุน SATA หรือ SATA SSD ความจุสูง พร้อม vCPU แบบแชร์ 1 ถึง 4 คอร์ และ RAM ในปริมาณที่ไม่มากนัก มักมีค่าใช้จ่ายรายเดือนเท่ากับแผนมาตรฐานขนาดเล็ก
- VDS: ย่อมาจาก virtual dedicated server คำนี้ไม่มีนิยามที่เป็นมาตรฐานสากล ส่วนด้านล่างนี้จะอธิบายถึงสิ่งที่คุณควรพิจารณาแทน
- Block storage volume: ไม่ใช่แผนบริการ แต่เป็นดิสก์ที่เชื่อมต่อผ่านเครือข่าย (network attached disk) ซึ่งคุณสามารถเพิ่มเข้าไปใน VPS ที่มีอยู่เดิมและจ่ายค่าบริการตามจำนวน GB ต่อเดือน นี่เป็นเพียงประเภทเดียวจากทั้ง 4 ประเภทที่คุณสามารถขยายขนาดได้โดยไม่ต้องย้ายเซิร์ฟเวอร์
ช่วงข้อมูลเหล่านี้เป็นรูปแบบทั่วไปที่พบได้ในตลาด ไม่ใช่ข้อเสนอของบริษัทใดบริษัทหนึ่งโดยเฉพาะ ป้ายกำกับบนแผนเป็นเพียงการจัดหมวดหมู่ ซึ่งบอกคุณได้คร่าวๆ ว่าเซิร์ฟเวอร์ของคุณตั้งอยู่บนโครงสร้างพื้นฐานประเภทใด แต่มันไม่ได้ระบุถึงประเภทของดิสก์, นโยบายการจัดสรร CPU หรือปริมาณแบนด์วิดท์ที่อนุญาต ซึ่งปัจจัยเหล่านี้คือสิ่งที่ตัดสินว่าภาระงานของคุณจะทำงานได้ดีหรือไม่
ความแตกต่างที่แท้จริงระหว่างสองแผน
ประเภทและจำนวนของดิสก์ นี่คือความแตกต่างหลักของผลิตภัณฑ์ แผนมาตรฐานจะใช้ NVMe flash ที่เชื่อมต่อผ่านบัส PCI Express ส่วนแผนจัดเก็บข้อมูล (storage plan) จะใช้ดิสก์แบบจานหมุน (spinning disks) จำนวนมากหรือ SATA SSD ความจุสูง หากคุณไม่แน่ใจว่าคำเหล่านี้สำคัญอย่างไร ให้เริ่มจาก SSD VPS คืออะไรและต่างจากแผนดิสก์รุ่นเก่าอย่างไร แล้วตามด้วย ความแตกต่างเชิงปฏิบัติระหว่าง NVMe และ SATA SSD
อัตราส่วน CPU แผนจัดเก็บข้อมูลจะมีจำนวน vCPU ต่อเทราไบต์น้อยกว่า และ vCPU เหล่านี้มักถูกใช้งานร่วมกับผู้เช่ารายอื่นเสมอ ซึ่งไม่ใช่ข้อบกพร่อง เพราะเป้าหมายของการสำรองข้อมูลคือการรอรับส่งข้อมูลผ่านเครือข่ายเป็นหลัก จึงไม่จำเป็นต้องใช้พลังประมวลผลจากคอร์มากนัก
RAM แผนจัดเก็บข้อมูลจะมี RAM น้อยเมื่อเทียบกับราคา ซึ่งจะส่งผลกระทบในจุดสำคัญคือ metadata ของระบบไฟล์ การจัดการไฟล์ขนาดเล็กจำนวนหลายล้านไฟล์ต้องใช้หน่วยความจำสำหรับ directory และ inode cache หากไม่มีส่วนนี้ การแสดงรายการไฟล์ทุกครั้งจะต้องดึงข้อมูลจากดิสก์โดยตรง
โควตาเครือข่าย โปรดอ่านบรรทัดนี้อย่างละเอียดสำหรับแผนจัดเก็บข้อมูล ความจุที่คุณไม่สามารถกู้คืนข้อมูลได้นั้นไม่ใช่การสำรองข้อมูล ให้ตรวจสอบโควตาการถ่ายโอนข้อมูลรายเดือนในหน่วย TB และความเร็วพอร์ตในหน่วย Gbit/s เพราะการกู้คืนข้อมูลขนาด 4 TB เต็มรูปแบบผ่านพอร์ต 1 Gbit/s จะใช้เวลาประมาณเก้าชั่วโมงที่ความเร็วสูงสุด และจะใช้เวลานานกว่านั้นมากหากพอร์ตถูกใช้งานร่วมกับผู้อื่น
The data behind this chart
[
{
"plan": "Storage VPS, HDD",
"usd_per_tb_month": 3
},
{
"plan": "Storage VPS, SATA SSD",
"usd_per_tb_month": 9
},
{
"plan": "Standard VPS, NVMe",
"usd_per_tb_month": 40
},
{
"plan": "Block storage add-on",
"usd_per_tb_month": 90
}
]ตัวเลขเหล่านี้เป็นค่าประมาณที่รวบรวมจากหน้าแสดงราคาของหลายผู้ให้บริการในเดือนสิงหาคม 2026 ไม่ใช่การเสนอราคาจากบริษัทใดบริษัทหนึ่งโดยเฉพาะ และราคาอาจมีการเปลี่ยนแปลงได้ แต่รูปแบบโครงสร้างราคาคือสิ่งที่คงอยู่ เทราไบต์บนแผนจัดเก็บข้อมูลแบบจานหมุนมีราคาประมาณ 3 ดอลลาร์สหรัฐต่อเดือน เทราไบต์เดียวกันบนแผนมาตรฐานที่ใช้ NVMe มีราคาประมาณ 40 และ network attached block volume เป็นตัวเลือกที่แพงที่สุดในบรรดา 4 ตัวเลือก โดยมีราคาอยู่ที่ 90 สำหรับมุมมองที่กว้างขึ้นว่าค่าใช้จ่ายรายเดือนประกอบด้วยอะไรบ้าง โปรดดู ค่าใช้จ่ายที่แท้จริงของ VPS ต่อเดือน
เหตุใดราคาต่อ TB และราคาต่อ core จึงแปรผกผันกัน
Storage node คือตัวเครื่องที่บรรจุฮาร์ดดิสก์ขนาดใหญ่จำนวน 12 ถึง 16 ลูก โดยมีหน่วยประมวลผลประสิทธิภาพปานกลางอยู่ด้านหน้า ในทางกลับกัน Compute node จะมีจำนวน core มาก มี RAM สูง และมีไดรฟ์ NVMe จำนวน 2 หรือ 4 ลูก ผู้ให้บริการจะขายทรัพยากรที่เหลือจากตัวเครื่องนั้นๆ ดังนั้น แผนบริการที่มีราคาต่อ terabyte ถูกจึงมีราคาต่อ core ที่แพง และแผนบริการที่มีราคาต่อ core ถูกจึงมีราคาต่อ terabyte ที่แพง ไม่มีแผนบริการใดที่ราคาถูกทั้งสองอย่าง เนื่องจากไม่มีตัวเครื่องรุ่นใดที่ถูกออกแบบมาในลักษณะนั้น
นี่คือเหตุผลว่าทำไมคำตอบที่ตรงไปตรงมาสำหรับคำถามที่ว่า "ฉันควรซื้อแบบไหน" มักจะเป็น "ซื้อทั้งสองอย่าง" การใช้ VPS แบบ NVMe ขนาดเล็กเพื่อรันแอปพลิเคชัน ควบคู่ไปกับ VPS สำหรับจัดเก็บข้อมูลเพื่อสำรองข้อมูล มีค่าใช้จ่ายน้อยกว่าการใช้เครื่องขนาดใหญ่เครื่องเดียวที่ต้องทำงานทั้งสองอย่างให้มีประสิทธิภาพ หากจำเป็นต้องใช้เครื่องเดียวทำงานทั้งสองอย่างจริงๆ แสดงว่าคุณได้ก้าวข้ามขอบเขตของ VPS ไปแล้ว โปรดดู เมื่อใดที่ dedicated server คุ้มค่ากว่า VPS
การอ่านแบบสุ่มคือสิ่งที่ดิสก์ราคาถูกทำไม่ได้
The data behind this chart
[
{
"disk": "7200 rpm SATA HDD",
"random_read_iops": "180",
"typical_latency_ms": 8.5
},
{
"disk": "SATA SSD",
"random_read_iops": "75,000",
"typical_latency_ms": 0.2
},
{
"disk": "NVMe SSD",
"random_read_iops": "600,000",
"typical_latency_ms": 0.08
}
]ตัวเลขเหล่านี้เป็นข้อมูลจาก datasheet ไม่ใช่ผลการทดสอบประสิทธิภาพของผู้ให้บริการรายใดรายหนึ่ง ดิสก์ความเร็ว 7200 rpm สามารถอ่านข้อมูลแบบสุ่มขนาด 4k ได้ประมาณ 180 ครั้งต่อวินาที เนื่องจากหัวอ่านต้องเคลื่อนที่ไปยัง track ที่ต้องการและรอให้จานหมุนนำ sector มาอยู่ใต้หัวอ่าน ซึ่งใช้เวลาประมาณ 8.5 ms ในแต่ละครั้ง ในขณะที่ Flash ไม่มีชิ้นส่วนที่ต้องเคลื่อนที่ ดังนั้น SATA SSD จึงทำได้ประมาณ 75,000 และอุปกรณ์ NVMe ทำได้ประมาณ 600,000 IOPS ที่ความหน่วง 0.08 ms ซึ่งเป็นช่องว่างที่ห่างกันมากกว่าสามพันเท่า และไม่มี RAM หรือ CPU จำนวนเท่าใดที่จะมาทดแทนส่วนต่างนี้ได้
การทำงานแบบต่อเนื่อง (Sequential) เป็นอีกเรื่องหนึ่งโดยสิ้นเชิง ซึ่งเป็นเหตุผลว่าทำไมแผนการจัดเก็บข้อมูล (storage plans) จึงยังมีประโยชน์ ดิสก์แบบจานหมุนเพียงตัวเดียวสามารถส่งข้อมูลได้ที่ 150 MB/s ถึง 250 MB/s และหากทำเป็น array ก็จะส่งข้อมูลได้มากขึ้น ซึ่งเพียงพอที่จะทำให้พอร์ต 1 Gbit/s ทำงานเต็มประสิทธิภาพ ดังนั้นการอัปโหลดข้อมูลสำรองจึงทำงานได้เต็มความเร็วเครือข่ายโดยที่ดิสก์ไม่ใช่คอขวด ตัวเลขของคุณยังขึ้นอยู่กับวิธีการสร้าง array อีกด้วย เนื่องจากการทำ striping จะกระจายคำขอเดียวไปยังดิสก์หลายตัว: วิธีที่ RAID 10 เปลี่ยนประสิทธิภาพของแผนการจัดเก็บข้อมูล ได้อธิบายเรื่องนี้ไว้แล้ว
VDS หมายถึงอะไร
โดยปกติแล้วเป็นเพียงชื่อทางการตลาด มีการใช้งานทั่วไปอยู่ 3 ความหมาย และผู้ให้บริการมักไม่ระบุชัดเจนว่าหมายถึงสิ่งใด ผู้ให้บริการบางรายใช้ VDS เพื่อสื่อถึง CPU core ที่ถูกจองไว้หรือเป็นแบบ dedicated เพื่อไม่ให้ผู้เช่ารายอื่นมาแย่งทรัพยากรการประมวลผลของคุณ บางรายใช้เพื่อสื่อถึงการทำ virtualization เต็มรูปแบบ เช่น KVM ซึ่งต่างจาก container virtualization เช่น LXC หรือ OpenVZ ที่ต้องใช้ kernel ร่วมกับ host และบางรายก็ใช้เพียงเพื่อให้ชื่อดูเหนือกว่า VPS เท่านั้น
คุณสามารถตรวจสอบบางส่วนได้จากภายในเซิร์ฟเวอร์ คำสั่ง systemd-detect-virt จะแสดงผล kvm หากเป็น full virtual machine และแสดง lxc หากเป็น container ซึ่งการเป็น container หมายความว่าคุณไม่สามารถโหลด kernel module หรือรัน kernel ของตนเองได้ สำหรับข้อกล่าวอ้างเรื่อง dedicated CPU คุณต้องวัดผลด้วยตนเองโดยใช้การตรวจสอบ steal time ในหัวข้อถัดไป ให้ถือว่าตัวอักษรที่ระบุในแผนบริการเป็นเพียงคำใบ้ และให้ยึดถือรายการสเปกเป็นสัญญาหลัก
บรรทัดสเปกที่ควรตรวจสอบแทนการดูแค่ชื่อ
- คำที่ระบุไว้ข้างความจุ:
NVMe,SSD,SATAหรือHDDหากไม่พบคำที่เกี่ยวกับดิสก์ในหน้าเว็บ ให้สันนิษฐานว่าเป็นฮาร์ดแวร์รุ่นที่ถูกที่สุดที่อยู่ในช่วงราคาดังกล่าว - ดิสก์เป็นแบบ local ของโหนดหรือเป็น network attached: Network attached storage จะเพิ่ม latency ในทุกคำขอและยังคงอยู่หากโหนดล้มเหลว ส่วน local disk จะทำงานเร็วกว่าแต่ข้อมูลจะสูญหายหากโหนดนั้นใช้งานไม่ได้
- คำที่ใช้เรียก CPU: "dedicated" หรือ "pinned" เทียบกับ "shared", "fair share" หรือกรณีที่ไม่มีการระบุอะไรเลย
- ขีดจำกัด IOPS หรือ MB/s ที่ระบุไว้ในแผน: หากมีการจำกัดไว้ที่ 500 IOPS ประเภทของดิสก์แทบจะไม่มีผลต่อประสิทธิภาพ
- ปริมาณการรับส่งข้อมูลรายเดือนและความเร็วพอร์ต ซึ่งเป็นตัวกำหนดระยะเวลาในการกู้คืนข้อมูลทั้งหมด
- บริการ snapshot, backup และ IP address เพิ่มเติมว่ารวมอยู่ในราคาแล้วหรือมีการเรียกเก็บเงินแยกต่างหาก
วิธีตรวจสอบดิสก์ที่คุณได้รับจริง
เริ่มต้นจากสิ่งที่เคอร์เนลรายงาน แล้วจึงเลิกเชื่อถือข้อมูลนั้น
lsblk -d -o NAME,ROTA,SIZE,MODEL
df -h /
nproc
free -hROTA จะเป็น 1 สำหรับอุปกรณ์แบบจานหมุนและ 0 สำหรับแฟลช อย่าเชื่อถือค่านี้เมื่ออยู่ภายใน VPS: โดยปกติ virtio disk จะรายงาน ROTA=0 ไม่ว่าเบื้องหลังจะเป็นอุปกรณ์ชนิดใดก็ตาม เนื่องจากไฮเปอร์ไวเซอร์จะนำเสนอเป็นอุปกรณ์บล็อกทั่วไปและเกสต์จะไม่เห็นไดรฟ์ทางกายภาพเลย MODEL จะว่างเปล่าด้วยเหตุผลเดียวกัน แฟล็กนี้อธิบายสิ่งที่ไฮเปอร์ไวเซอร์ประกาศ ไม่ใช่สิ่งที่กำลังหมุนอยู่ในตู้แร็ค ดังนั้นให้ใช้วิธีการวัดผลแทน
sudo apt update && sudo apt install -y fio
fio --name=randread --filename=/var/tmp/fio.test --size=1G --bs=4k --rw=randread \
--ioengine=libaio --direct=1 --iodepth=32 --runtime=30 --time_based --group_reporting
rm -f /var/tmp/fio.test--direct=1 จะข้าม page cache เพื่อให้คุณวัดผลที่ตัวดิสก์โดยตรงแทนที่จะเป็น RAM บรรทัดที่ต้องอ่านคือ read: IOPS= โดยมีการกระจายตัวของข้อมูลอยู่ภายใต้ clat percentiles (usec) ด้านล่าง แผนบริการ NVMe มาตรฐานจะรายงานค่า IOPS หลักหมื่นโดยมีค่า 99th percentile ต่ำกว่าหนึ่งมิลลิวินาที ส่วนแผนบริการแบบจานหมุนจะรายงานค่า IOPS หลักร้อยโดยมีค่า 99th percentile อยู่ในระดับหลักสิบมิลลิวินาที หาก fio รายงานว่าไม่สามารถโหลด libaio engine ได้ ให้ใช้ --ioengine=psync --iodepth=1 แทนและคาดหวังตัวเลขที่ต่ำกว่า เนื่องจาก engine ดังกล่าวจะส่งคำขอทีละรายการ
vmstat 1 5
sudo apt install -y sysstat
iostat -x 1 5ใน vmstat คอลัมน์ st คือ steal time: ซึ่งเป็นสัดส่วนเวลาที่ vCPU ของคุณพร้อมทำงานแต่โฮสต์กลับจัดสรรรอบการทำงานนั้นให้กับเกสต์อื่น หากตัวเลขนี้คงที่สูงกว่า 5 แสดงว่าโหนดมีการใช้งานเกินขีดจำกัด (oversubscribed) ซึ่งเป็นบททดสอบที่แท้จริงของคำกล่าวอ้างเรื่อง "dedicated CPU" ใน iostat -x ให้เฝ้าสังเกต %util, r_await และ w_await หาก %util เข้าใกล้ 100 โดยมี w_await อยู่ในระดับหลักสิบมิลลิวินาที แสดงว่าดิสก์คือคอขวดและไม่มีการปรับแต่งแอปพลิเคชันใดที่จะช่วยได้ สำหรับการตรวจสอบเฉพาะเจาะจงสำหรับแฟลช การตรวจสอบว่าดิสก์ NVMe เป็น NVMe จริงหรือไม่ จะให้รายละเอียดเชิงลึกมากขึ้น
เลือกตามลักษณะงาน (Workload)
- เป้าหมายการสำรองข้อมูลสำหรับ restic, Borg หรือ rsync: Storage VPS คือสิ่งที่ออกแบบมาเพื่อการนี้โดยเฉพาะ การเขียนข้อมูลมีขนาดใหญ่และเป็นลำดับ (sequential) การทำ deduplication เกิดขึ้นที่เครื่องต้นทาง และไม่มีกระบวนการใดที่ต้องรอผลลัพธ์ ข้อควรระวังคือ
restic pruneและrestic check --read-dataจะอ่านข้อมูลทั้ง repository ในรูปแบบชิ้นส่วนขนาดเล็ก ดังนั้นควรเผื่อเวลาไว้และตั้งเวลาการทำงานให้เหมาะสม ดูเพิ่มเติมที่ การสำรองข้อมูลด้วย restic ไปยัง VPS - คลังสื่อ Immich หรือ Jellyfin: ใช้ Storage VPS สำหรับเก็บไฟล์ แต่ต้องระวังเรื่อง CPU โดย Immich จะสร้างภาพตัวอย่าง (thumbnail) และรันงาน machine learning ระหว่างการนำเข้าข้อมูล ส่วน Jellyfin จะทำการแปลงรหัส (transcode) ขณะเล่นไฟล์ หากใช้ shared vCPU เพียง 2 คอร์ การนำเข้าภาพถ่ายขนาด 200 GB ในครั้งแรกจะทำงานได้ช้ามาก ควรเก็บฐานข้อมูลและแคชของภาพตัวอย่างไว้บนดิสก์ที่เร็วที่สุดในเครื่อง การทำ self-host Immich เพื่อใช้แทน Google Photos มีรายละเอียดเรื่องการจัดสรรทรัพยากร
- PostgreSQL หรือ MySQL: ใช้แผน Standard NVMe ทุกการ commit จะจบลงด้วย
fsyncซึ่งต้องเขียนลงสื่อบันทึกข้อมูลที่ทนทานก่อนที่ transaction จะเสร็จสิ้น ดังนั้น latency ของการ commit จึงเท่ากับ latency ของดิสก์ และการค้นหา index คือการอ่านข้อมูลแบบสุ่มขนาด 8 kB ซึ่งเป็นรูปแบบที่ดิสก์แบบจานหมุนทำงานได้แย่ที่สุด - เว็บแอปพลิเคชัน, API หรือ control plane: ใช้แผน Standard งานเหล่านี้ต้องการคอร์ประมวลผลและ latency ที่คาดการณ์ได้ และมักใช้พื้นที่ไม่เกิน 100 GB
- CI cache หรือที่เก็บ artifact: ขึ้นอยู่กับขนาดไฟล์ ไฟล์ tarball ขนาดใหญ่สามารถสตรีมจากแผน Storage ได้ด้วยความเร็วเครือข่ายเต็มสปีด แต่หากเป็นแคชของไฟล์ขนาดเล็กจำนวนหลายแสนไฟล์ที่ถูกดึงข้อมูลพร้อมกันโดย runner หลายตัว จะถือเป็นการทำ random IO และอาจทำให้ประสิทธิภาพไม่เป็นไปตามที่คาดหวัง
ลักษณะของปัญหาเมื่อตั้งค่าไม่ถูกต้อง
ความล้มเหลวไม่ได้เกิดขึ้นในทันที ฐานข้อมูลที่อยู่บนแผนการจัดเก็บข้อมูลแบบจานหมุน (spinning storage) จะทำงานได้ปกติเมื่อมีผู้ใช้เพียงคนเดียว แต่จะล่มเมื่อมีผู้ใช้สิบคน เพราะคิวรีที่เคยเรียกใช้จาก RAM จะเริ่มไปเรียกใช้จากดิสก์แทน ซึ่งแต่ละคิวรีจะใช้เวลาเพิ่มขึ้นเป็นมิลลิวินาทีแทนที่จะเป็นไมโครวินาที ค่า load average จะพุ่งสูงขึ้นในขณะที่ top แสดงให้เห็นว่า CPU ส่วนใหญ่ว่างงานโดยมีค่า %wa สูง ซึ่งหมายความว่าโพรเซสต่างๆ กำลังติดขัดจากการรอคอยดิสก์แทนที่จะประมวลผลข้อมูล iostat -x 1 จะแสดงให้เห็นว่า %util มีค่าใกล้เคียง 100
PostgreSQL ระบุปัญหานี้ไว้อย่างชัดเจนใน log ของตนเอง เนื่องจาก log_checkpoints ถูกเปิดใช้งานเป็นค่าเริ่มต้นตั้งแต่เวอร์ชัน 15 เป็นต้นไป:
LOG: checkpoint complete: wrote 8241 buffers (2.5%); ... write=112.402 s, sync=9.318 s, total=121.914 sค่า sync= คือตัวเลขที่สำคัญที่สุด นี่คือเวลาที่ checkpoint ใช้ไปกับการรอให้ fsync ตอบกลับ ดังนั้นหากค่าที่แสดงมีหน่วยเป็นวินาที แสดงว่าดิสก์ไม่สามารถรองรับการเขียนข้อมูลได้เร็วเท่ากับที่ฐานข้อมูลสร้างขึ้น การเชื่อมต่อของไคลเอนต์จะหยุดชะงักในช่วงเวลานั้นแม้ว่าตัวคิวรีเองจะใช้ทรัพยากรน้อยก็ตาม วิธีแก้ไขไม่ใช่การปรับเปลี่ยนการตั้งค่า แต่เป็นการย้ายไดเรกทอรีข้อมูลไปยัง NVMe และใช้แผนการจัดเก็บข้อมูลเดิมสำหรับงานที่เหมาะสมกว่า เช่น การเก็บไฟล์สำรองของฐานข้อมูลนั้นๆ
FAQ
Storage VPS ทำงานช้ากว่า VPS ปกติหรือไม่?
หากเป็นการอ่านและเขียนแบบสุ่ม คำตอบคือช้ากว่ามาก แผนบริการแบบ Storage ที่ใช้จานหมุนจะรองรับคำขอขนาดเล็กแบบสุ่มได้เพียงไม่กี่ร้อยรายการต่อวินาที โดยใช้เวลาประมาณ 8 ms ต่อรายการ ในขณะที่แผน NVMe รองรับได้หลายหมื่นรายการด้วยเวลาต่ำกว่า 1 ms มาก สำหรับการโอนถ่ายข้อมูลแบบต่อเนื่อง ทั้งสองแบบมีความเร็วใกล้เคียงกันมากกว่า เนื่องจากอาร์เรย์ของ Storage ยังคงสตรีมข้อมูลได้ที่ 150 MB/s หรือมากกว่า ซึ่งเพียงพอต่อการใช้งานพอร์ต 1 Gbit/s ให้เต็มประสิทธิภาพ คุณควรวัดผลด้วยตนเองโดยใช้ fio --rw=randread --bs=4k --direct=1 ก่อนตัดสินใจ
ฉันสามารถรัน PostgreSQL บน Storage VPS ได้หรือไม่?
คุณสามารถเริ่มใช้งานได้และมันจะทำงานได้จนกว่าชุดข้อมูลที่ใช้งานจริงจะมีขนาดเกินกว่า RAM ที่มี หลังจากนั้นทุกการ commit จะต้องรอ fsync บนดิสก์ที่ช้า และ Postgres จะบันทึกลงใน log เป็นค่า sync= ในหน่วยวินาทีภายใน checkpoint complete ในขณะที่ iostat -x 1 จะแสดงค่า %util ใกล้ 100 พร้อมกับค่า w_await ที่สูง รูปแบบการใช้งานทั่วไปคือการใช้ VPS แบบ NVMe ขนาดเล็กสำหรับฐานข้อมูล และใช้ Storage VPS เป็นปลายทางสำหรับเก็บไฟล์สำรองข้อมูล (dump)
VDS หมายความว่าฉันได้รับฮาร์ดแวร์เฉพาะตัวใช่หรือไม่?
ไม่เสมอไป คำว่า VDS ไม่มีมาตรฐานที่ชัดเจน ผู้ให้บริการบางรายใช้คำนี้เพื่อสื่อถึงการจอง CPU core ไว้ให้เฉพาะ, บางรายใช้เพื่อสื่อถึงการทำ virtualization แบบ KVM เต็มรูปแบบแทนที่จะเป็น container ที่แชร์ kernel ร่วมกัน และบางรายใช้เพียงเพื่อเป็นชื่อทางการตลาดเท่านั้น ให้รัน systemd-detect-virt เพื่อดูว่าคุณอยู่บน kvm หรือ lxc และรัน vmstat 1 5 แล้วสังเกตคอลัมน์ st เพื่อดูว่าผู้ใช้งานรายอื่นกำลังแย่งใช้รอบการทำงานของ CPU ของคุณหรือไม่
ฉันจะทราบได้อย่างไรว่าดิสก์ VPS ของฉันเป็น NVMe จริงหรือไม่?
อย่าเชื่อ lsblk -d -o NAME,ROTA,MODEL เพราะโดยปกติแล้ว virtio disk จะรายงานค่าเป็น ROTA=0 และแสดงชื่อรุ่นว่างเปล่าไม่ว่าฮาร์ดแวร์เบื้องหลังจะเป็นอะไรก็ตาม ให้รันการทดสอบการอ่านแบบสุ่มด้วย fio เป็นเวลา 30 วินาทีด้วย --direct=1 แล้วอ่านค่า IOPS และค่าความหน่วง (latency) ที่เปอร์เซ็นไทล์ที่ 99 หากได้ค่า IOPS หลักร้อยและมีความหน่วงระดับเลขสองหลักในหน่วยมิลลิวินาที แสดงว่าเป็นอาร์เรย์แบบจานหมุน หากได้ค่าหลักหมื่นและมีความหน่วงต่ำกว่าหนึ่งมิลลิวินาที แสดงว่าเป็น Flash