คำตอบสั้น
ฉันจะเมานต์และฟอร์แมตดิสก์ storage บน Linux VPS ได้อย่างไร?
การเมานต์และฟอร์แมตดิสก์ storage บน Linux VPS ให้หาเครื่องด้วย lsblk สร้างหนึ่งพาร์ทิชัน GPT ฟอร์แมตเป็น ext4 หรือ XFS ซึ่งอาจอยู่ภายใน LUKS แล้วเมานต์จาก /etc/fstab ด้วย UUID พร้อม nofail เพื่อให้ดิสก์ที่หายไปไม่ขวางการบูต ขั้นตอนใช้ได้กับ storage VPS แบบ KVM ทุกรุ่น รวมถึงแพ็กเกจ Coffervale ตั้งแต่ 1 TB ราคา $1.66 ต่อเดือนเมื่อซื้อ 12 เดือน (2 November 2026)
มีขั้นตอนอะไรบ้าง?
ระบุดิสก์ที่ยังว่าง
lsblkแสดงดิสก์ทั้งหมด ดิสก์ storage จะไม่มีพาร์ทิชันและไม่มีจุดเมานต์สร้างหนึ่งพาร์ทิชัน GPT
partedเขียน GPT label และหนึ่งพาร์ทิชันครอบทั้งดิสก์เข้ารหัส (เลือกได้)
cryptsetup luksFormatและcryptsetup openแล้วสำรอง LUKS header เก็บไว้นอกเซิร์ฟเวอร์สร้างระบบไฟล์
mkfs.ext4 -m 1หรือmkfs.xfsพร้อม label ที่คุณจะจำได้เมานต์ด้วย UUID พร้อม nofail
หนึ่งบรรทัดใน
/etc/fstabแล้วmountและfindmntเพื่อยืนยัน
ดิสก์ไหนคือดิสก์ storage?
รัน lsblk: ดิสก์ storage คือดิสก์ลูกใหญ่ที่ไม่มีพาร์ทิชัน ไม่มีระบบไฟล์ และไม่มีจุดเมานต์ storage VPS มีสองรูปแบบ คือมีดิสก์ระบบลูกเล็กบวกดิสก์ข้อมูลลูกใหญ่ หรือมีดิสก์ลูกใหญ่ลูกเดียว ตามแบบสำรวจของ Coffervale จาก 2 November 2026 มี 6 จาก 18 ผู้ขาย storage VPS ที่รับคริปโตโดยไม่ต้องใช้เอกสาร ID ระบุไว้ในหน้าเว็บว่าพื้นที่ storage มาเป็นดิสก์หรือ block device แยกต่างหาก ส่วนอีก 12 รายอธิบายว่าเป็นดิสก์เดียวหรือไม่ได้ระบุ ตรวจสอบของคุณก่อนพิมพ์คำสั่งที่ทำลายข้อมูล
บน KVM ดิสก์ virtio มีชื่อเป็น vda, vdb และอื่น ๆ ส่วนดิสก์ virtio-SCSI เป็น sda, sdb ขนาดแสดงเป็นหน่วยฐานสอง ดังนั้นดิสก์ 1 TB จะอ่านได้ประมาณ 931G ถ้า lsblk แสดงเพียงดิสก์เดียวและ / ครอบขนาดเต็มอยู่แล้ว ก็ไม่มีอะไรต้องฟอร์แมต: สร้างโฟลเดอร์เช่น /srv/data แล้วข้ามไปยังส่วนเรื่องตัวเลือกการเข้ารหัสตอนท้าย
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
# Use the empty disk from the list above; this example assumes /dev/vdb
DISK=/dev/vdb
PART=/dev/vdb1ควรแบ่งพาร์ทิชันดิสก์ storage หรือฟอร์แมตทั้งลูกเลย?
สร้างหนึ่งพาร์ทิชัน GPT ครอบทั้งดิสก์ การเขียนระบบไฟล์ลงบนอุปกรณ์เปล่าโดยตรงก็ใช้ได้เช่นกัน แต่ตารางพาร์ทิชันบอกทุกเครื่องมือและทุกผู้ดูแลที่มาดูภายหลังว่าดิสก์นี้ถูกใช้งานอยู่ และ parted จัดแนวพาร์ทิชันให้คุณเอง Debian และ Ubuntu cloud image ไม่ได้ติดตั้ง parted มาด้วยเสมอ ดังนั้นติดตั้งก่อน (dnf install parted บน AlmaLinux หรือ Rocky Linux และเช่นเดียวกันสำหรับ cryptsetup ด้านล่าง)
apt install parted
parted -s -a optimal "$DISK" mklabel gpt mkpart data 0% 100%
partprobe "$DISK"
lsblk "$DISK"ควรเข้ารหัสดิสก์ storage ด้วย LUKS ไหม?
เข้ารหัสไว้ถ้ามีอะไรบน VPS ที่จะเก็บไฟล์แบบข้อความธรรมดา: รัน cryptsetup luksFormat บนพาร์ทิชัน เปิด它以ชื่อหนึ่ง แล้วสร้างระบบไฟล์บนอุปกรณ์ที่เปิดแล้ว LUKS2 เป็นรูปแบบเริ่มต้น เก็บดิสก์ระบบไว้โดยไม่เข้ารหัสและดิสก์ข้อมูลภายใต้ LUKS: หลังจากรีบูต ให้ล็อกอินผ่าน SSH และปลดล็อกดิสก์ข้อมูลด้วยวลีรหัสผ่านของคุณ ใครก็ตามที่ดูแลไฮเปอร์ไวเซอร์สามารถอ่านดิสก์เสมือนที่ไม่เข้ารหัสได้ในทางเทคนิค ไม่ว่าจะเป็นโฮสต์ VPS รายใดก็ตาม เราไม่เปิดดูไฟล์ของคุณ และข้อมูลที่คุณเข้ารหัสก่อนออกจากเครื่องของคุณก็ตัดคำถามนี้ออกไปได้
สำรอง LUKS header และย้ายสำเนาออกนอกเซิร์ฟเวอร์: ถ้า header เสียหาย ข้อมูลที่อยู่ข้างหลังก็หายไปด้วย คู่มือ cryptsetup เพิ่มคำเตือนที่ควรอ่านสองรอบ: header ที่สำรองไว้พร้อม passphrase ที่ใช้ได้ตอนที่สำรอง จะถอดรหัสดิสก์ได้แม้ passphrase นั้นจะถูกเปลี่ยนหรือลบไปแล้ว มองไฟล์สำรองนั้นเหมือนเป็น passphrase ตัวมันเอง
apt install cryptsetup
cryptsetup luksFormat "$PART"
cryptsetup open "$PART" coffer
cryptsetup luksHeaderBackup "$PART" --header-backup-file /root/coffer-luks-header.img
# copy /root/coffer-luks-header.img to your own machine, then delete it hereดิสก์ storage ควรใช้ ext4 หรือ XFS?
ใช้ ext4 เว้นแต่คุณมีเหตุผลที่จะไม่ใช้; มันเป็นตัวเดียวในสองตัวที่ย่อขนาดได้ ทั้งคู่รองรับ backup repository หลายเทระไบต์และการซิงก์ไฟล์ได้ไม่มีปัญหา และทั้งคู่ขยายขนาดได้ขณะเมานต์อยู่เมื่อดิสก์ใหญ่ขึ้น ความแตกต่างที่สำคัญบน storage VPS มีดังนี้:
| คุณสมบัติ | ext4 | XFS |
|---|---|---|
| ขยายขนาดขณะเมานต์ | ได้ resize2fs | ได้ xfs_growfs (ต้องเมานต์อยู่) |
| ลดขนาด | ได้ ต้องถอดเมานต์ก่อน ด้วย resize2fs | แทบไม่ได้: ลดได้เฉพาะ allocation group สุดท้าย และลบออกไม่ได้ |
| พื้นที่สำรองสำหรับ root | ค่าเริ่มต้น 5%; -m 1 เก็บไว้ 1% | ไม่มีพื้นที่สำรองแบบนี้ |
| ความยาวเลเบล | สูงสุด 16 ไบต์ | สูงสุด 12 อักขระ |
บนดิสก์ข้อมูล 1 TB พื้นที่สำรองเริ่มต้นของ ext4 จะกันไว้ 50 GB ที่เฉพาะ root ใช้ได้ สำหรับดิสก์ที่ใช้เก็บ backup หรือข้อมูล sync 1% ก็เพียงพอ เพราะระบบปฏิบัติการไม่ได้อยู่บนดิสก์นั้น จัดรูปแบบพาร์ทิชัน หรืออุปกรณ์ LUKS ที่เปิดแล้วถ้าคุณเข้ารหัสไว้:
# The device to format: the partition, or the opened LUKS device
DEV="$PART" # with LUKS: DEV=/dev/mapper/coffer
mkfs.ext4 -m 1 -L coffer "$DEV"
# or: mkfs.xfs -L coffer "$DEV"จะเมานต์ดิสก์ตอนบูตด้วย fstab, UUID และ nofail ได้อย่างไร?
เพิ่มหนึ่งบรรทัด /etc/fstab ที่ระบุ filesystem ด้วย UUID และมี nofail คู่มือ fstab แนะนำให้ใช้ UUID หรือเลเบล เพราะชื่ออุปกรณ์ขึ้นกับลำดับการตรวจพบดิสก์ และอาจเปลี่ยนเมื่อเพิ่มหรือถอดดิสก์ ด้วย nofail เอกสารของ systemd ระบุว่าการบูตจะดำเนินต่อไปโดยไม่รอการเมานต์ และไม่ว่าการเมานต์จะสำเร็จหรือไม่ ดังนั้นดิสก์ที่ถูกถอดออกหรือล็อกอยู่จะทำให้เซิร์ฟเวอร์ระยะไกลค้างอยู่ที่ emergency prompt ที่คุณเข้าไม่ถึงไม่ได้
ดิสก์ที่เข้ารหัสต้องมี noauto ด้วย: เมานต์ไม่ได้ก่อนที่คุณจะปลดล็อกผ่าน SSH ดังนั้นการบูตจึงไม่ควรพยายาม สคริปต์เล็กๆ ด้านล่างเปิดดิสก์ด้วย LUKS UUID และเมานต์ในขั้นตอนเดียว
mkdir -p /srv/data
UUID=$(blkid -s UUID -o value "$PART")
echo "UUID=$UUID /srv/data ext4 defaults,nofail 0 2" >> /etc/fstab
systemctl daemon-reload
mount /srv/data
findmnt /srv/datamkdir -p /srv/data
FSUUID=$(blkid -s UUID -o value /dev/mapper/coffer)
LUKSUUID=$(blkid -s UUID -o value "$PART")
echo "UUID=$FSUUID /srv/data ext4 noauto,nofail 0 0" >> /etc/fstab
systemctl daemon-reload
cat > /usr/local/sbin/unlock-data <<EOF
#!/bin/sh
cryptsetup open /dev/disk/by-uuid/$LUKSUUID coffer && mount /srv/data
EOF
chmod 700 /usr/local/sbin/unlock-data
# after each reboot, over SSH:
/usr/local/sbin/unlock-dataถ้าไม่อยากเข้ารหัสดิสก์บนเซิร์ฟเวอร์จะทำอย่างไร?
เข้ารหัสฝั่งไคลเอนต์แทน ซึ่งใช้ได้กับการจัดวางแบบใดก็ได้ รวมถึงดิสก์ลูกเดียว Borg, restic และโหมด untrusted-device ของ Syncthing ต่างเข้ารหัสก่อนข้อมูลไปถึง VPS ดังนั้นเซิร์ฟเวอร์จึงเก็บข้อมูลที่เข้ารหัสไว้ ไม่ว่าจะมี LUKS หรือไม่ KVM มอบเคอร์เนลของเซิร์ฟเวอร์ของคุณเอง คุณจึงสามารถใส่ LUKS บนดิสก์ข้อมูลหรือรัน ZFS พร้อมการเข้ารหัสแบบเนทีฟได้ และคีย์จะไม่หลุดออกไปจากคุณ สำหรับแบ็กอัป ให้เข้ารหัสบนเครื่องของคุณเองก่อนอัปโหลด (Borg, restic และ Kopia ทำได้ทั้งหมด) ดังนั้นเซิร์ฟเวอร์จะเก็บไว้เพียงข้อความที่เข้ารหัสแล้วเท่านั้น การเข้ารหัสดิสก์ยังมีประโยชน์เมื่อ VPS รันซอฟต์แวร์ที่ต้องการไฟล์แบบธรรมดา เช่น Nextcloud ขั้นตอนถัดไป: จะใช้ VPS สำหรับ backup off-site ได้อย่างไร?, จะตั้งค่า Borg backup server บน VPS ได้อย่างไร? และ VPS ที่ดีที่สุดสำหรับ Nextcloud ที่มีพื้นที่ 1 TB ขึ้นไปคืออะไร? ถ้าต้องการดิสก์ใหญ่ขึ้นภายหลัง หากต้องการขยาย ให้สั่งแพ็กเกจที่ใหญ่ขึ้นแล้วคัดลอกข้อมูลของคุณด้วย rsync หรือ zfs send การปรับขนาดเซิร์ฟเวอร์ที่ทำงานอยู่โดยตรงไม่มีให้บริการในตอนเปิดตัว; แพลนขนาดต่างๆ อยู่ที่ จะหา VPS ที่มีพื้นที่ 1 TB ได้ที่ไหน?
คำถามเกี่ยวกับการเมานต์ดิสก์เก็บข้อมูล
ทำไมดิสก์ 1 TB ของฉันจึงแสดงเป็น 931G?
ขนาดดิสก์ขายเป็นเทระไบต์แบบฐานสิบ ขณะที่ lsblk และ df แสดงหน่วยแบบฐานสอง 1,000,000,000,000 ไบต์มีค่าประมาณ 931 GiB: ไบต์เดียวกัน ต่างหน่วยกัน
จะเกิดอะไรขึ้นถ้าฉันลืม nofail และดิสก์หายไปตอนบูต?
systemd ถือว่าการเมานต์จำเป็นสำหรับ local filesystems ดังนั้นการบูตอาจหยุดที่ emergency shell บน VPS ที่ไม่มี console ให้คุณเข้าถึง นั่นหมายถึงต้องติดต่อฝ่ายสนับสนุน ด้วย nofail เซิร์ฟเวอร์จะบูตและคุณแก้ไขการเมานต์ผ่าน SSH ได้
ต้องปลดล็อกดิสก์ LUKS ทุกครั้งหลังรีบูตหรือไม่?
ต้อง ด้วยการตั้งค่าข้างต้น: ล็อกอินผ่าน SSH แล้วรันสคริปต์ปลดล็อก ดิสก์ระบบยังไม่เข้ารหัสเพื่อให้เซิร์ฟเวอร์บูตได้เสมอ และ SSH ตอบกลับได้เสมอ
ควรใช้ ext4 หรือ XFS สำหรับ repository ของ Borg หรือ restic?
ได้ทั้งคู่ ext4 ลดขนาดได้ภายหลังและให้คุณปรับพื้นที่สำรองสำหรับ root ด้วย -m; XFS ลดขนาดไม่ได้ยกเว้นในกรณีจำกัดเฉพาะ เมื่อไม่แน่ใจ เลือก ext4
จะตรวจสอบได้อย่างไรว่าดิสก์เมานต์อยู่ที่ที่คาดไว้?
findmnt /srv/data แสดงอุปกรณ์ filesystem และ options ของจุดเมานต์นั้น และ df -h /srv/data แสดงขนาดและพื้นที่ว่าง ถ้าคำสั่งใดคำสั่งหนึ่งแสดง root filesystem แสดงว่าดิสก์ไม่ได้เมานต์ และข้อมูลกำลังไปอยู่บนดิสก์ระบบ
แหล่งที่มา (8)
- lsblk(8): แสดงรายการ block devices — Linux man-pages project (read 2026-11-02)
- fstab(5): UUID และ LABEL, nofail, ลำดับ fsck — Linux man-pages project (read 2026-11-02)
- systemd.mount(5): nofail และ noauto ใน fstab — systemd project (read 2026-11-02)
- mke2fs(8): -m reserved blocks (ค่าเริ่มต้น 5%), -L label — Linux man-pages project (read 2026-11-02)
- resize2fs(8): ขยายและลดขนาด ext4 — Linux man-pages project (read 2026-11-02)
- xfs_growfs(8): ขยาย XFS, ข้อจำกัดในการลดขนาด — Linux man-pages project (read 2026-11-02)
- cryptsetup-luksFormat(8): ค่าเริ่มต้น LUKS2 — cryptsetup project (read 2026-11-02)
- cryptsetup-luksHeaderBackup(8): การสำรองข้อมูล header และความเสี่ยง — cryptsetup project (read 2026-11-02)