คู่มือการติดตั้ง Ubuntu Desktop 26.04 LTS แสดงรายการตัวเลือกการตั้งค่าดิสก์แบบมาตรฐานและขั้นสูง แต่ไม่ได้ระบุ Btrfs เป็นตัวเลือกการติดตั้ง คู่มือนี้ได้รับการอัปเดตครั้งล่าสุดเมื่อวันที่ 6 พฤษภาคม 2026 นั่นหมายความว่า Ubuntu Desktop ที่ใช้ Btrfs อาจใช้โครงสร้างพาร์ติชั่นหรือซับโวลุ่มแบบกำหนดเอง ก่อนที่จะทำการสร้างสแนปช็อตโดยอัตโนมัติ ให้ตรวจสอบว่ามีการเมานต์อะไรอยู่จริง ๆ/คำสั่ง Snapper ที่สมมติว่าซับโวลุ่มรูท Btrfs อาจล้มเหลวหรือปกป้องข้อมูลที่ไม่ถูกต้อง คู่มือนี้จะตั้งค่าสแนปช็อตไทม์ไลน์รายชั่วโมงด้วย Snapper บนซับโวลุ่ม Btrfs ที่ได้รับการตรวจสอบแล้ว จากนั้นเปิดใช้งานการล้างข้อมูลตามกำหนดเวลาเพื่อไม่ให้สแนปช็อตเก่าสะสมไปเรื่อย ๆ
Snapper มีอยู่ในคลังซอฟต์แวร์ของ Ubuntu และแพ็กเกจ Ubuntu 26.04 LTS (Resolute) ก็มีหน่วย systemd สำหรับงานสร้างไทม์ไลน์และล้างข้อมูล คำสั่งด้านล่างนี้ใช้สำหรับเครื่องที่มีเป้าหมายในการสร้างสแนปช็อตเป็นซับโวลุ่ม Btrfs หากการติดตั้ง Ubuntu ของคุณใช้ ext4, LVM หรือการเมานต์ระดับบนสุดของ Btrfs แทนที่จะเป็นซับโวลุ่มที่คุณต้องการปกป้อง ให้หยุดที่การตรวจสอบโครงสร้างและแก้ไขปัญหานั้นก่อน
สแนปช็อตของ Btrfs ช่วยปกป้องอะไร?
สแนปช็อตของ Btrfs คือซับวอลุ่ม ณ จุดเวลาหนึ่ง ซึ่งในตอนเริ่มต้นจะใช้ส่วนขยายไฟล์ร่วมกับแหล่งที่มา มีประโยชน์สำหรับการกู้คืนไฟล์หรือเปรียบเทียบสถานะของระบบหลังจากแก้ไขหรืออัปเดตผิดพลาด อย่างไรก็ตาม สแนปช็อตไม่ใช่การสำรองข้อมูลแบบอิสระ: สแนปช็อตยังคงอยู่บนระบบไฟล์เดียวกัน ดังนั้นหากดิสก์เสีย ระบบไฟล์เสียหาย ถูกขโมย หรือลบระบบไฟล์ทั้งหมดโดยไม่ตั้งใจ อาจทำให้ทั้งข้อมูลปัจจุบันและสแนปช็อตหายไปด้วย
สแนปช็อตจะไม่บันทึกข้อมูลของซับวอลุ่มที่ซ้อนกันแบบวนซ้ำ หาก/homeเป็นซับวอลุ่มแยกต่างหาก สแนปช็อตของซับวอลุ่มหลักจะไม่รวมเนื้อหาของซับวอลุ่มแยกต่างหากนั้น/homeควรวางแผนการกำหนดค่า Snapper หนึ่งรายการสำหรับแต่ละซับวอลุ่มที่คุณต้องการปกป้อง หรือใช้การสำรองข้อมูลแยกต่างหากสำหรับข้อมูลผู้ใช้ เก็บสำเนาที่สองไว้ในอุปกรณ์อื่นหรือระบบระยะไกลเพื่อการกู้คืนในกรณีเกิดภัยพิบัติ
1. ตรวจสอบว่า Ubuntu กำลังทำงานบนระบบไฟล์ Btrfs หรือไม่
เปิดเทอร์มินัลและตรวจสอบการเมานต์รูท:
findmnt -no SOURCE,FSTYPE,OPTIONS /
sudo btrfs subvolume show /
sudo btrfs subvolume list /
คำสั่งแรกควรรายงานbtrfsประเภทของระบบไฟล์ ตรวจสอบตัวเลือกการเมานต์สำหรับsubvol=รายการ และใช้รายการซับโวลุ่มเพื่อทำความเข้าใจโครงสร้าง คำสั่งที่สองควรระบุซับโวลุ่มที่เมานต์อยู่ที่/หากประเภทของระบบไฟล์ไม่ใช่ Btrfs ขั้นตอน Snapper นี้จะไม่สามารถใช้งานได้ หากคำสั่งรายงานว่า/ไม่ใช่ซับโวลุ่ม หรือแสดงว่าเป็นซับโวลุ่มระดับบนสุด อย่าพยายามสร้างการกำหนดค่า Snapper รูทโดยไม่ตรวจสอบให้ดี ซับโวลุ่มระดับบนสุดของ Btrfs มีข้อจำกัดพิเศษ ให้ใช้โครงสร้างซับโวลุ่มที่ออกแบบอย่างถูกต้อง หรือสร้างสแนปช็อตของซับโวลุ่มแยกต่างหากที่ได้รับการตรวจสอบแล้วแทน
ตรวจสอบแยกต่างหากว่า/homeเป็นจุดเชื่อมต่อหรือไดรฟ์ย่อยที่มีfindmnt /homeและ หรือsudo btrfs subvolume show /homeไม่ หากแยกต่างหากและคุณต้องการสร้างสแนปช็อตของไฟล์ส่วนตัว จะต้องมีการกำหนดค่าเฉพาะสำหรับจุดเชื่อมต่อดังกล่าว นอกจากนี้ ให้พิจารณาด้วยว่าเส้นทางสำคัญอื่นๆ เช่น จุดเชื่อมต่อข้อมูลแยกต่างหาก อยู่บนระบบไฟล์อื่นหรือไม่ สแนปช็อตของรูทจะไม่รวมเส้นทางเหล่านั้นโดยอัตโนมัติ
2. ติดตั้ง Snapper และเครื่องมือ Btrfs
เมื่อคุณยืนยันแล้วว่าเป้าหมายคือซับโวลุ่ม Btrfs ให้ติดตั้งแพ็กเกจ Ubuntu:
sudo apt update
sudo apt install snapper btrfs-progs
snapperจัดการการกำหนดค่าและการเก็บรักษาสแนปช็อต; btrfs-progsมีเครื่องมือระบบไฟล์ที่เป็นประโยชน์สำหรับการตรวจสอบ Btrfs ตรวจสอบการกำหนดค่าที่มีอยู่แล้วก่อนที่จะสร้างการกำหนดค่าใหม่:
sudo snapper list-configs
หากการกำหนดค่าที่มีชื่อrootอยู่แล้วชี้ไปยังซับโวลุ่มรูทที่ถูกต้อง ให้คงการกำหนดค่านั้นไว้และตรวจสอบการตั้งค่าแทนที่จะสร้างสำเนา หากผลลัพธ์ว่างเปล่าและ/ได้รับการยืนยันว่าเป็นซับโวลุ่มที่คุณต้องการปกป้อง ให้สร้างการกำหนดค่า:
sudo snapper -c root create-config /
คำสั่ง นี้create-configจะสร้างการกำหนดค่า Snapper และไดเร็กทอรีสแนปช็อตสำหรับซับโวลุ่มที่เลือก หากระบบแจ้งว่าการกำหนดค่ามีอยู่แล้วหรือว่าเส้นทางไม่ใช่ซับโวลุ่ม ให้หยุดและตรวจสอบการตั้งค่าปัจจุบัน อย่าลบการกำหนดค่าที่มีอยู่เพื่อบังคับให้คำสั่งทำงานต่อไป
3. เลือกกำหนดการถ่ายภาพสแนปช็อตและนโยบายการเก็บรักษาข้อมูล
โหมดไทม์ไลน์ของ Snapper สามารถสร้างสแนปช็อตรายชั่วโมงได้ และอัลกอริทึมการล้างไทม์ไลน์สามารถเก็บสแนปช็อตรายชั่วโมง รายวัน รายสัปดาห์ รายเดือน และรายปีที่เลือกไว้ได้ สำหรับเดสก์ท็อปที่มีพื้นที่ว่างจำกัด ควรเริ่มต้นด้วยนโยบายที่เหมาะสมและตรวจสอบพื้นที่จัดเก็บข้อมูลแทนที่จะเก็บประวัติแบบไม่จำกัด ตัวอย่างนี้ขอสแนปช็อตรายชั่วโมง 6 รายการ รายวัน 7 รายการ รายสัปดาห์ 4 รายการ และรายเดือน 3 รายการ โดยไม่มีสแนปช็อตรายปี:
sudo snapper -c root set-config 'TIMELINE_CREATE=yes TIMELINE_CLEANUP=yes TIMELINE_LIMIT_HOURLY=6 TIMELINE_LIMIT_DAILY=7 TIMELINE_LIMIT_WEEKLY=4 TIMELINE_LIMIT_MONTHLY=3 TIMELINE_LIMIT_YEARLY=0'
ค่าเหล่านี้อธิบายถึงหมวดหมู่การเก็บรักษาข้อมูล ไม่ใช่ข้อจำกัดที่ตายตัวของพื้นที่ดิสก์ ไฟล์ขนาดใหญ่ที่เปลี่ยนแปลงหรือลบไปแล้วอาจยังคงเก็บข้อมูลเก่าไว้ได้ตราบเท่าที่สแนปช็อตยังอ้างอิงถึงข้อมูลเหล่านั้น พื้นที่ว่างยังขึ้นอยู่กับซับโวลุ่มและไฟล์อื่นๆ ในระบบไฟล์ Btrfs ด้วย ตรวจสอบdf -h /เป็นsudo btrfs filesystem usage /ระยะ และลดระยะเวลาการเก็บรักษาหรือเพิ่มพื้นที่จัดเก็บหากระบบไฟล์ใกล้เต็ม หลีกเลี่ยงการแก้ไขการตั้งค่าหลายๆ อย่างพร้อมกัน: ให้เรียกใช้sudo snapper -c root get-configและตรวจสอบค่าอีกครั้งหลังจากเปลี่ยนแปลงแล้ว
4. เปิดใช้งานตัวจับเวลา systemd ของ Snapper
ใน Ubuntu 26.04 LTS รายการไฟล์แพ็กเกจ Snapper ประกอบด้วยsnapper-timeline.timerและsnapper-cleanup.timerเปิดใช้งานทั้งสองอย่างเพื่อให้ systemd สร้างสแนปช็อตไทม์ไลน์เป็นระยะและเรียกใช้การล้างข้อมูล:
sudo systemctl enable --now snapper-timeline.timer snapper-cleanup.timer
ตรวจสอบว่าได้โหลดไฟล์แล้ว และดูว่ามีกำหนดการครั้งต่อไปเมื่อใด:
systemctl list-timers snapper-timeline.timer snapper-cleanup.timer
systemctl status snapper-timeline.timer snapper-cleanup.timer
ตัวจับเวลาที่แสดงว่าทำงานอยู่หมายความว่า systemd ได้โหลดกำหนดการแล้ว แต่ไม่ได้หมายความว่า Snapper สร้างสแนปช็อตสำเร็จเสมอไป หลังจากเรียกใช้ไทม์ไลน์ครั้งถัดไป ให้ตรวจสอบการกำหนดค่าและรายการสแนปช็อต:
sudo snapper list-configs
sudo snapper -c root list
หากไม่มีภาพรวมไทม์ไลน์ปรากฏขึ้นหลังจากเรียกใช้ตามกำหนดเวลา ให้ยืนยันว่าTIMELINE_CREATEได้ตั้งค่าเป็น จากyesนั้นตรวจสอบบันทึกบริการด้วยjournalctl -u snapper-timeline.service -bอย่าสร้างตัวจับเวลาแบบกำหนดเองจนกว่าคุณจะตรวจสอบหน่วยและบันทึกที่บรรจุแล้ว กำหนดการที่ซ้ำกันอาจสร้างภาพรวมมากกว่าที่ตั้งใจไว้
5. เพิ่มการตั้งค่าแยกต่างหากสำหรับซับโวลุ่มโฮม Btrfs
ทำขั้นตอนนี้ก็ต่อเมื่อการตรวจสอบโครงสร้างยืนยันแล้วว่านั่น/homeคือซับโวลุ่ม Btrfs และเป้าหมายของคุณรวมถึงไฟล์ของผู้ใช้ ก่อนอื่นsudo snapper list-configsให้ตรวจสอบให้แน่ใจว่าชื่อนั้นhomeยังไม่ได้ถูกใช้งาน จากนั้นสร้างการกำหนดค่าสำหรับซับโวลุ่มนั้นและใช้ นโยบายการเก็บรักษาข้อมูลแยกต่างหาก:
sudo snapper -c home create-config /home
sudo snapper -c home set-config 'TIMELINE_CREATE=yes TIMELINE_CLEANUP=yes TIMELINE_LIMIT_HOURLY=6 TIMELINE_LIMIT_DAILY=7 TIMELINE_LIMIT_WEEKLY=4 TIMELINE_LIMIT_MONTHLY=3 TIMELINE_LIMIT_YEARLY=0'
ตัวจับเวลา systemd เดียวกันจะประมวลผลการกำหนดค่า Snapper ที่เปิดใช้งานการสร้างและการล้างไทม์ไลน์ ดังนั้นโดยปกติแล้วจึงไม่จำเป็นต้องใช้ตัวจับเวลาแยกต่างหาก ยืนยันว่าsudo snapper -c home listใช้งานได้และsudo snapper -c home get-configแสดงค่าที่ต้องการ ไดเร็กทอรีที่มีชื่อนั้น/homeไม่ได้เป็นซับโวลุ่มแยกต่างหากโดยอัตโนมัติ ตรวจสอบให้แน่ใจก่อนเรียกcreate-configใช้
คุณรู้ได้อย่างไรว่าระบบอัตโนมัติทำงานได้ดี?
- การกำหนดค่า:
sudo snapper list-configsแสดงชื่อและไดรฟ์ย่อยที่ต้องการ - นโยบาย:
sudo snapper -c root get-configเปิดใช้งานการสร้างและการล้างข้อมูลไทม์ไลน์รายงาน - ตารางเวลา:
systemctl list-timersแสดงตัวจับเวลา Snapper สองตัวและเวลาการทำงานครั้งต่อไปของแต่ละตัว - ภาพรวม:
sudo snapper -c root listแสดงรายการที่มีวันที่ระบุไว้หลังจากที่ตัวจับเวลาทำงานเสร็จสิ้น - สถานะการทำงานของระบบ:
journalctl -u snapper-timeline.service -bไม่มีข้อผิดพลาดที่เกิดขึ้นซ้ำๆ ซึ่งขัดขวางการสร้างสแนปช็อต
หากคอมพิวเตอร์ของคุณปิดเครื่องตามเวลาที่กำหนด ตัวจับเวลาอาจทำงานในภายหลัง ขึ้นอยู่กับการตั้งค่าของเครื่องนั้นๆ แต่การตรวจสอบสแนปช็อตที่ได้นั้นไม่ใช่สิ่งทดแทนการทดสอบด้วยตนเอง การทดสอบเล็กๆ น้อยๆ ด้วยตนเองสามารถตรวจสอบได้ว่า Snapper สามารถสร้างสแนปช็อตได้หรือไม่: เรียกใช้คำสั่ง จากsudo snapper -c root create --description 'setup test'นั้นแสดงรายการสแนปช็อตอีกครั้ง การทดสอบนี้จะทดสอบการกำหนดค่า ไม่ใช่ตัวจับเวลา ลบสแนปช็อตทดสอบในภายหลังก็ต่อเมื่อคุณแน่ใจว่าได้เลือกรายการที่ถูกต้องแล้ว
อะไรบ้างที่อาจผิดพลาดได้ และอะไรบ้างที่คุณควรหลีกเลี่ยง?
ประการแรก การสร้างสแนปช็อตจะใช้พื้นที่ของระบบไฟล์ร่วมกันไปเรื่อยๆ การควบคุมการเก็บรักษาจะช่วยลดประวัติเก่าๆ แต่ปริมาณข้อมูลที่เก็บรักษาไว้จะแตกต่างกันไปตามการเปลี่ยนแปลงของไฟล์ ตรวจสอบพื้นที่ว่างและตรวจสอบให้แน่ใจว่าการล้างข้อมูลกำลังทำงานอยู่ ประการที่สอง สแนปช็อตของรูทอาจละเว้นซับโวลุ่มที่ซ้อนกัน เช่น/home; คำสั่งที่สำเร็จไม่ได้หมายความว่าทุกเส้นทางที่เมานต์ได้รับการปกป้อง ประการที่สาม สแนปช็อตของ Snapper เพียงอย่างเดียวไม่รับประกันว่าจะสามารถบูตเพื่อย้อนกลับได้ Snapper ระบุว่าการย้อนกลับต้องใช้ระบบ Btrfs ที่กำหนดค่าอย่างถูกต้อง รูปแบบการเมานต์ การกำหนดค่าการบูต การเข้ารหัส และระบบไฟล์ที่แยกต่างหากของ Ubuntu จะเป็นตัวกำหนดว่าการกู้คืนใดเป็นไปได้ ก่อนที่จะพึ่งพาการย้อนกลับ ให้ทดสอบแผนการกู้คืนด้วยสื่อสำรองและกู้คืนที่แยกต่างหาก
อย่าใช้การสร้างสแนปช็อตอัตโนมัติแทนการสำรองข้อมูล ควรคัดลอกไฟล์สำคัญไปยังอุปกรณ์จัดเก็บข้อมูลอื่นหรือตำแหน่งจัดเก็บข้อมูลระยะไกล และตรวจสอบเป็นระยะว่าคุณสามารถกู้คืนไฟล์เหล่านั้นได้ เพื่อการตั้งค่าเดสก์ท็อป Ubuntu ที่น่าเชื่อถือที่สุด ควรใช้ Snapper สำหรับจุดคืนค่าในเครื่องที่สะดวกสบาย เครื่องมือสำรองข้อมูลแยกต่างหากสำหรับสำเนาอิสระ และขั้นตอนการกู้คืนที่ผ่านการทดสอบแล้วสำหรับความล้มเหลวในระดับระบบ
เอกสารอ้างอิงอย่างเป็นทางการ