ในการติดตั้ง SUSE Linux Enterprise Server (SLES) มาตรฐานที่มีรูทเป็น Btrfs และเปิดใช้งาน Snapper วิธีการกู้คืนที่ปลอดภัยที่สุดคือการบูตสแนปช็อตที่สร้างไว้ก่อนการอัปเดตล้มเหลว ทดสอบในขณะที่อยู่ในโหมดอ่านอย่างเดียว แล้วจึงเรียกใช้คำสั่งsudo snapper rollbackนี้ ซึ่งจะสร้างรูทที่สามารถเขียนได้ใหม่จากสถานะที่ทดสอบแล้ว โดยจะไม่ย้อนกลับทุกดิสก์ ซับโวลุ่ม หรือฐานข้อมูลแอปพลิเคชัน
คู่มือการดูแลระบบ SLES 15 SP7 ฉบับปัจจุบันยังคงใช้ขั้นตอนการบูตและทดสอบนี้อยู่ ก่อนที่จะปฏิบัติตาม โปรดตรวจสอบให้แน่ใจว่าเครื่องตรงตามโครงสร้างการย้อนกลับที่ SUSE รองรับ และระบุส แนปช็อต ก่อนหน้าสำหรับธุรกรรม Zypper หรือ YaST ที่ล้มเหลว
การย้อนกลับด้วย Snapper จะกู้คืนเซิร์ฟเวอร์ทั้งหมดได้หรือไม่?
ไม่ การย้อนกลับระบบที่สามารถบูตได้นั้นใช้ได้กับสแนปช็อตในrootการกำหนดค่า Snapper แบบเริ่มต้นเท่านั้น เอกสารของ SUSE สนับสนุนการจัดเรียงซับโวลุ่มรูทแบบเริ่มต้น โดยใช้ Btrfs บนอุปกรณ์รูทเดียวและบูตโหลดเดอร์ที่ติดตั้งใช้งานได้ การย้อนกลับจะเปลี่ยนเนื้อหาของซับโวลุ่มรูทเท่านั้น/ซับโวลุ่มอื่นๆ จะไม่รวมอยู่ด้วย ในโครงสร้าง SLES ทั่วไป เส้นทางต่างๆ เช่น/var, /srv, /opt, /usr/local, และ มัก/homeจะอยู่นอกสแนปช็อต ดังนั้นฐานข้อมูลหรือบริการอาจเก็บข้อมูลที่เขียนหลังจากสแนปช็อตไว้ได้ แม้ว่าแพ็กเกจระบบจะย้อนกลับไปแล้วก็ตาม
ก่อนทำการย้อนกลับ (rollback) โปรดตรวจสอบหรือสำรองข้อมูลแอปพลิเคชันที่สำคัญแยกต่างหาก นอกจากนี้ ควรหลีกเลี่ยงขั้นตอนนี้หากคุณได้เปลี่ยนแปลงโครงสร้างซับโวลุ่ม Btrfs ตามค่าเริ่มต้น หรือใช้รูทแบบหลายอุปกรณ์ เนื่องจากข้อกำหนดการย้อนกลับที่สามารถบูตได้ของ SLES 15 SP7 ไม่ครอบคลุมการตั้งค่าเหล่านั้น โปรดอ่านข้อกำหนดการกู้คืน Snapper ของ SUSE ก่อนดำเนินการต่อ
สแนปช็อตใดถูกสร้างขึ้นก่อนการอัปเดตที่ล้มเหลว?
ใช้การตั้งค่า Snapper สำหรับระบบไฟล์รูทและเปรียบเทียบสถานะก่อนและหลังการทำธุรกรรม ในระบบ SLES ทั่วไปที่มีการเปิดใช้งานสแนปช็อตรูท Btrfs นั้น Zypper และ YaST จะสร้างสแนปช็อตขึ้นรอบๆ การดำเนินการแพ็กเกจ สแนปช็อตก่อนการดำเนินการจะแสดงถึงสถานะของรูทก่อนการดำเนินการนั้น ส่วนสแนปช็อตหลังการดำเนินการจะแสดงถึงสถานะหลังจากที่ดำเนินการเสร็จสิ้นแล้ว รวมถึงธุรกรรมที่ล้มเหลวบางส่วนด้วย
- ตรวจสอบว่าไฟล์การกำหนดค่าหลักมีอยู่หรือไม่ โดยใช้คำสั่ง `root configuration`
sudo snapper list-configsมองหาไฟล์การกำหนดค่าที่มีชื่อว่าroot` root configuration`
- ตรวจสอบประเภทของระบบไฟล์รูทด้วยคำสั่ง `root filesystem`
findmnt -no FSTYPE /สำหรับขั้นตอนการย้อนกลับที่สามารถบูตได้นี้ ควรรายงานประเภทของ ระบบไฟล์รูท btrfsจากนั้นเรียกใช้คำสั่ง ` sudo btrfs filesystem show /root filesystem` และตรวจสอบรายงานของระบบไฟล์รูท อีก Total devices 1ครั้ง
- แสดงรายการคู่ธุรกรรมที่มี
sudo snapper -c root list -t pre-post. จับคู่ วันที่และคำอธิบายกับการอัปเดตที่ล้มเหลว บันทึกหมายเลขในPre #คอลัมน์ ไม่ใช่คู่ที่จับคู่Post #กัน
- ตรวจสอบดูว่ามีอะไรเปลี่ยนแปลงบ้างระหว่างทั้งสองแบบ แทนที่คำว่า "
PREและPOST" ด้วยตัวเลขที่แสดงบนเครื่องของคุณ:
sudo snapper -c root status PRE..POST
sudo snapper -c root diff PRE..POST
คำสั่งเหล่านี้แสดงรายการเส้นทางที่เปลี่ยนแปลงและความแตกต่างของไฟล์ หมายเลขสแนปช็อต วันที่ คำอธิบายแพ็กเกจ และผลลัพธ์จะแตกต่างกันไปตามโฮสต์ อย่าคัดลอกหมายเลขตัวอย่างจากภาพหน้าจอ หากไม่มีคู่ที่เกี่ยวข้องปรากฏขึ้น ให้ตรวจสอบว่า Snapper เปิดใช้งานอยู่หรือไม่ และนโยบายการล้างข้อมูลได้ลบสแนปช็อตไปแล้วหรือไม่ สแนปช็อตที่หายไปไม่สามารถสร้างขึ้นใหม่ได้โดย Snapper หลังจากนั้น
ภาพแสดงมุมมองเทอร์มินัลของรายการ Snapper ก่อน/หลังการอัปเดต พร้อมด้วยคู่ธุรกรรม Zypper เพื่อช่วยระบุสแนปช็อตก่อนการอัปเดต
คุณทดสอบรากผมเก่าอย่างไรก่อนที่จะทำการดัดถาวร?
รีบูตเครื่องและใช้รายการสแนปช็อตของบูตโหลดเดอร์ บน SLES ให้เลือกStart Bootloader from a read-only snapshotจากนั้นเลือกสแนปช็อตที่มีวันที่ก่อนหน้าธุรกรรมที่ล้มเหลวทันที เมนูบูตจะระบุวันที่และคำอธิบายของรายการ ซึ่งอาจรวมถึงzypp(zypper)หรือการดำเนินการ YaST เลือกสแนปช็อตก่อนการอัปเดตที่คุณบันทึกไว้ อย่าเลือกสแนปช็อตหลังการอัปเดตเพียงเพราะคำอธิบายนั้นเข้าใจง่ายกว่า
เข้าสู่ระบบและทดสอบบริการหรือแอปพลิเคชันที่ล้มเหลว ไฟล์รากของสแนปช็อตจะเป็นแบบอ่านอย่างเดียวในระหว่างการทดลองนี้ ดังนั้นการบูตครั้งนี้เพียงอย่างเดียวจะไม่เปลี่ยนแปลงรูทเริ่มต้น หากเป็นสแนปช็อตที่ไม่ถูกต้องหรือระบบยังคงล้มเหลว ให้รีบูตและลองใช้สแนปช็อตอื่น หรือใช้ระบบกู้คืน อย่าบังคับย้อนกลับเพียงเพื่อทำให้ตัวเลือกในเมนูเป็นแบบถาวร
เมนูบูตแบบภาพประกอบ พร้อมตัวเลือกสแนปช็อตแบบอ่านอย่างเดียวตามเอกสาร และรายการที่มีวันที่ระบุไว้ เลือกรายการที่ตรงกับสแนปช็อตก่อนการอัปเดต
คุณควรเรียกใช้ snapper rollback เมื่อใด?
เรียกใช้ฟังก์ชันย้อนกลับ (rollback) หลังจากที่สแนปช็อตเก่าบูตเสร็จและผ่านการตรวจสอบของคุณแล้ว จากสแนปช็อตแบบอ่านอย่างเดียวนั้น ให้เรียกใช้คำสั่งต่อไปนี้:
sudo snapper rollback
จากนั้นรีบูตเครื่องและเลือกรายการบูตเริ่มต้นตามปกติ:
sudo reboot
Snapper จะเก็บภาพรวมของสถานะระบบก่อนการย้อนกลับ และสร้างรูทแบบอ่านเขียนใหม่โดยอิงจากภาพรวมที่ทดสอบแล้ว คุณไม่ต้องส่งหมายเลขภาพรวมเก่าไปยังคำสั่งนี้ในขั้นตอนการบูตจากภาพรวมที่ได้อธิบายไว้ ผลลัพธ์ที่ได้คือรูทเริ่มต้นใหม่ ไม่ใช่การแปลงภาพรวมแบบอ่านอย่างเดียวให้สามารถเขียนได้ ภาพรวมสามารถลบออกได้ในภายหลังโดยใช้กฎการล้างข้อมูล ดังนั้นให้คัดลอกไฟล์ที่จำเป็นออกก่อนที่จะใช้ภาพรวมการย้อนกลับเก่าเป็นที่เก็บถาวรระยะยาว
ภาพแสดงมุมมองเทอร์มินัลที่แสดงคำสั่งสองคำสั่งที่ใช้หลังจากสแนปช็อตแบบอ่านอย่างเดียวผ่านการทดสอบแล้ว ได้แก่ คำสั่ง snapper rollback จากนั้นจึงรีบูตเครื่อง
หลังจากรีบูตเครื่องแล้ว คุณควรตรวจสอบอะไรบ้าง?
บูตเข้าสู่โหมดเริ่มต้น และตรวจสอบการกู้คืนที่เกิดขึ้นจริง ไม่ใช่แค่ตรวจสอบว่าคำสั่งทำงานเสร็จสมบูรณ์หรือไม่ ยืนยันสถานะเคอร์เนลและแพ็กเกจที่คาดหวัง ตรวจสอบสถานะและบันทึกของบริการที่ล้มเหลว และเรียกใช้การตรวจสอบระดับแอปพลิเคชันขนาดเล็ก จากนั้นตรวจสอบสถานะใหม่ของ Snapper:
sudo snapper -c root list
สำหรับการอัปเดตแพ็กเกจทั่วไป การตรวจสอบเพียงเท่านี้ก็เพียงพอแล้วที่จะยืนยันว่าเครื่องบูตจากไดเร็กทอรีหลักใหม่ หากการดำเนินการที่ล้มเหลวเป็นการย้ายเซอร์วิสแพ็ค ให้ทำตามขั้นตอนการตรวจสอบหลังการย้อนกลับของ SUSE ด้วย ได้แก่ การรีเฟรชและตรวจสอบที่เก็บข้อมูล จากนั้นตรวจสอบการลงทะเบียน:
sudo zypper ref -fs
sudo zypper lr
sudo SUSEConnect --status
ที่เก็บแพ็กเกจควรตรงกับ Service Pack ที่คุณย้อนกลับไป และผลิตภัณฑ์ที่ติดตั้งควรได้รับการลงทะเบียน หากการลงทะเบียนไม่ได้รับ การกู้คืน ขั้น ตอนการย้อนกลับ Service Pack SLES 15 SP7 ของ SUSE จะใช้เป็นขั้นตอนการแก้ไข คำsudo SUSEConnect --rollbackสั่งการลงทะเบียนนั้นใช้สำหรับการกู้คืนการย้ายข้อมูลโดยเฉพาะ อย่าเรียกใช้คำสั่งนี้สำหรับการอัปเดตแพ็กเกจทั่วไป
ภาพแสดงมุมมองเทอร์มินัลประกอบการตรวจสอบหลังการย้อนกลับสำหรับสถานะของ Snapper, ที่เก็บข้อมูลที่ใช้งานอยู่ และการลงทะเบียนผลิตภัณฑ์ SUSE
หากโฮสต์นี้ใช้transactional-update(ตัวอย่างเช่น ระบบ SLE Micro ที่รองรับธุรกรรม) ให้ปฏิบัติตามขั้นตอนของผลิตภัณฑ์นั้นแทนที่จะใช้ลำดับคำสั่ง SLES แบบคลาสสิก เอกสารของผลิตภัณฑ์นั้นจะใช้วิธี การเลือกสแนปช็อตจากระบบที่กำลังทำงานอยู่ และมีเวิร์กโฟลว์การบูตสแนปช็อตแบบอ่านอย่างเดียวแยกต่างหากเมื่อรูทปัจจุบันเสียหาย โปรดดู คำแนะนำการย้อนกลับการอัปเดตธุรกรรมsudo transactional-update rollback SNAPSHOT_NUMBERของ SUSE