ย้อนกลับการอัปเดต SLES ที่ล้มเหลวอย่างปลอดภัยด้วย Snapper

ในการติดตั้ง 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 จะสร้างสแนปช็อตขึ้นรอบๆ การดำเนินการแพ็กเกจ สแนปช็อตก่อนการดำเนินการจะแสดงถึงสถานะของรูทก่อนการดำเนินการนั้น ส่วนสแนปช็อตหลังการดำเนินการจะแสดงถึงสถานะหลังจากที่ดำเนินการเสร็จสิ้นแล้ว รวมถึงธุรกรรมที่ล้มเหลวบางส่วนด้วย

  1. ตรวจสอบว่าไฟล์การกำหนดค่าหลักมีอยู่หรือไม่ โดยใช้คำสั่ง `root configuration` sudo snapper list-configsมองหาไฟล์การกำหนดค่าที่มีชื่อว่าroot` root configuration`
  2. ตรวจสอบประเภทของระบบไฟล์รูทด้วยคำสั่ง `root filesystem` findmnt -no FSTYPE /สำหรับขั้นตอนการย้อนกลับที่สามารถบูตได้นี้ ควรรายงานประเภทของ ระบบไฟล์รูท btrfsจากนั้นเรียกใช้คำสั่ง ` sudo btrfs filesystem show /root filesystem` และตรวจสอบรายงานของระบบไฟล์รูท อีก Total devices 1ครั้ง
  3. แสดงรายการคู่ธุรกรรมที่มีsudo snapper -c root list -t pre-post. จับคู่ วันที่และคำอธิบายกับการอัปเดตที่ล้มเหลว บันทึกหมายเลขในPre #คอลัมน์ ไม่ใช่คู่ที่จับคู่Post #กัน
  4. ตรวจสอบดูว่ามีอะไรเปลี่ยนแปลงบ้างระหว่างทั้งสองแบบ แทนที่คำว่า " PREและPOST" ด้วยตัวเลขที่แสดงบนเครื่องของคุณ:
sudo snapper -c root status PRE..POST
sudo snapper -c root diff PRE..POST

คำสั่งเหล่านี้แสดงรายการเส้นทางที่เปลี่ยนแปลงและความแตกต่างของไฟล์ หมายเลขสแนปช็อต วันที่ คำอธิบายแพ็กเกจ และผลลัพธ์จะแตกต่างกันไปตามโฮสต์ อย่าคัดลอกหมายเลขตัวอย่างจากภาพหน้าจอ หากไม่มีคู่ที่เกี่ยวข้องปรากฏขึ้น ให้ตรวจสอบว่า Snapper เปิดใช้งานอยู่หรือไม่ และนโยบายการล้างข้อมูลได้ลบสแนปช็อตไปแล้วหรือไม่ สแนปช็อตที่หายไปไม่สามารถสร้างขึ้นใหม่ได้โดย Snapper หลังจากนั้น

ภาพแสดงมุมมองเทอร์มินัลของรายการ Snapper ก่อน/หลังการอัปเดต พร้อมด้วยคู่ธุรกรรม Zypper เพื่อช่วยระบุสแนปช็อตก่อนการอัปเดต
ภาพแสดงมุมมองเทอร์มินัลของรายการ 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 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
ภาพแสดงมุมมองเทอร์มินัลประกอบการตรวจสอบหลังการย้อนกลับสำหรับสถานะของ Snapper, ที่เก็บข้อมูลที่ใช้งานอยู่ และการลงทะเบียนผลิตภัณฑ์ SUSE

หากโฮสต์นี้ใช้transactional-update(ตัวอย่างเช่น ระบบ SLE Micro ที่รองรับธุรกรรม) ให้ปฏิบัติตามขั้นตอนของผลิตภัณฑ์นั้นแทนที่จะใช้ลำดับคำสั่ง SLES แบบคลาสสิก เอกสารของผลิตภัณฑ์นั้นจะใช้วิธี การเลือกสแนปช็อตจากระบบที่กำลังทำงานอยู่ และมีเวิร์กโฟลว์การบูตสแนปช็อตแบบอ่านอย่างเดียวแยกต่างหากเมื่อรูทปัจจุบันเสียหาย โปรดดู คำแนะนำการย้อนกลับการอัปเดตธุรกรรมsudo transactional-update rollback SNAPSHOT_NUMBERของ SUSE

ฝากความเห็น

เมื่อ SLES Btrfs เข้าสู่โหมดอ่านอย่างเดียว: ตรวจสอบหาสาเหตุก่อนทำการเมานต์ใหม่

เมื่อ SLES Btrfs เข้าสู่โหมดอ่านอย่างเดียว: ตรวจสอบหาสาเหตุก่อนทำการเมานต์ใหม่

ตรวจสอบว่า Btrfs ถูกตั้งค่าเป็นโหมดอ่านอย่างเดียวโดยเจตนา พื้นที่เหลือน้อย หรือกำลังปกป้องข้อมูลหลังเกิดข้อผิดพลาด จากนั้นเลือกวิธีการกู้คืนที่เหมาะสมกับสาเหตุ

ลงทะเบียน SLES 15 กับ SUSE Manager ในเครือข่ายออฟไลน์

ลงทะเบียน SLES 15 กับ SUSE Manager ในเครือข่ายออฟไลน์

เตรียมช่องสัญญาณจำลอง สร้างคีย์การเปิดใช้งาน และบูตสแตรปไคลเอ็นต์ SLES 15 โดยไม่ต้องเข้าถึงอินเทอร์เน็ตโดยตรง ในขณะที่ยังคงรักษาการเชื่อมต่อที่จำเป็นสำหรับการเช็คอินของผู้จัดการไว้

ทำให้การส่งต่อ X11 ของ YaST ใช้งานได้ผ่าน SSH

ทำให้การส่งต่อ X11 ของ YaST ใช้งานได้ผ่าน SSH

แก้ไขข้อผิดพลาดในการเปิดใช้งาน XIO ของ YaST ผ่าน SSH ตรวจสอบการส่งต่อ X11 และ xauth และสลับไปใช้ส่วนติดต่อ ncurses เมื่อไม่จำเป็นต้องใช้หน้าต่างระยะไกล

ย้อนกลับการอัปเดต SLES ที่ล้มเหลวอย่างปลอดภัยด้วย Snapper

ย้อนกลับการอัปเดต SLES ที่ล้มเหลวอย่างปลอดภัยด้วย Snapper

ค้นหาสแนปช็อต Btrfs ก่อนการอัปเดต ทดสอบในโหมดอ่านอย่างเดียว และทำให้การกู้คืนเป็นแบบถาวรด้วย Snapper พร้อมทั้งทำความเข้าใจว่าข้อมูลใดบ้างที่อยู่นอกเหนือการย้อนกลับแบบรูท

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

ส่งบันทึกระบบ SLES ไปยังตัวเก็บรวบรวม rsyslog ระยะไกลผ่าน TLS ที่มีการตรวจสอบสิทธิ์ พร้อมด้วยการตรวจสอบใบรับรอง การบัฟเฟอร์เมื่อระบบขัดข้อง และการทดสอบการส่งมอบ

ตรวจสอบข้อผิดพลาดเกี่ยวกับหน่วยความจำระหว่างการอัปเกรด SLES ก่อนลองใหม่อีกครั้ง

ตรวจสอบข้อผิดพลาดเกี่ยวกับหน่วยความจำระหว่างการอัปเกรด SLES ก่อนลองใหม่อีกครั้ง

ใช้บันทึก RAM, swap, kernel และ Zypper เพื่อระบุแรงดันหน่วยความจำที่แท้จริง ป้องกันสถานะของแพ็กเกจ และเลือกวิธีการลองอัปเกรด SLES ที่ปลอดภัยยิ่งขึ้น

รักษาการอัปเดตความปลอดภัยของ Debian 12 ให้ทำงานได้บนเซิร์ฟเวอร์แบบไม่มีหน้าจอแสดงผล

รักษาการอัปเดตความปลอดภัยของ Debian 12 ให้ทำงานได้บนเซิร์ฟเวอร์แบบไม่มีหน้าจอแสดงผล

เปิดใช้งานการอัปเดตความปลอดภัยอัตโนมัติของ Debian ผ่าน SSH รักษาแหล่งแพ็กเกจเริ่มต้น และตรวจสอบการทำงานตามกำหนดเวลาผ่านบันทึกของ systemd และ APT

รับการแจ้งเตือน SMART Disk ของ Ubuntu ทางอีเมลด้วย smartd

รับการแจ้งเตือน SMART Disk ของ Ubuntu ทางอีเมลด้วย smartd

เปรียบเทียบตัวเลือกการรับอีเมล ตั้งค่า smartd บน Ubuntu และตรวจสอบว่าคำเตือนเกี่ยวกับสถานะของดิสก์ส่งไปถึงกล่องจดหมายของคุณหรือไม่

ข้อผิดพลาดในการค้นหา DNS ของ Debian 12: ซ่อมแซม systemd-resolved

ข้อผิดพลาดในการค้นหา DNS ของ Debian 12: ซ่อมแซม systemd-resolved

กู้คืนการค้นหา DNS บน Debian 12 โดยตรวจสอบ systemd-resolved ซ่อมแซม resolv.conf เมื่อจำเป็น และตรวจสอบการแก้ไข DNS ต้นทางและการแก้ไขแอปพลิเคชัน

Ubuntu 24.04 ไม่แสดงเสียง HDMI ใช่ไหม? กู้คืนเอาต์พุต

Ubuntu 24.04 ไม่แสดงเสียง HDMI ใช่ไหม? กู้คืนเอาต์พุต

ตั้งค่า Ubuntu ให้ตรวจจับจอภาพหรือทีวีของคุณเป็นอุปกรณ์ส่งสัญญาณเสียง เลือกอุปกรณ์นั้นในการตั้งค่าเสียง และตรวจสอบการเชื่อมต่อหรือรายการอุปกรณ์ PipeWire หากไม่มี HDMI