ค้นหาเว็บไซต์

Proxmox แก้ปัญหาการสำรองข้อมูลที่ใหญ่ที่สุดของ Plex แต่คนส่วนใหญ่ไม่รู้


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

Plex เป็นซอฟต์แวร์ที่น่าทึ่ง แต่จุดอ่อนของมันมักจะอยู่ที่ความเปราะบางของฐานข้อมูลและไฟล์การกำหนดค่าพื้นฐานของมัน เราใช้เวลานับไม่ถ้วนในการสร้างอาร์เรย์เก็บข้อมูลสำรองสำหรับไฟล์มีเดียของเรา เพื่อให้มั่นใจว่าไฟล์ ISO ของ Linux ไม่สูญหายแม้แต่ไฟล์เดียว แต่กลับละเลยองค์ประกอบที่ไม่สามารถทดแทนได้เพียงอย่างเดียวของสแต็คทั้งหมด: ข้อมูลแอปพลิเคชัน Plex ที่ตัวมันเอง นี่คือที่ที่ Proxmox เข้ามามีบทบาทด้วย VM snapshot ซึ่งเป็นโซลูชันที่ซ่อนอยู่โดยตรงที่ชุมชนส่วนใหญ่ยังไม่ได้ใช้สำหรับกรณีการใช้งานเฉพาะนี้

ไฟล์สื่อไม่ใช่ห้องสมุดของคุณ

สิ่งที่คุณสูญเสียจริงๆ เมื่อ Plex เสีย

มีความเข้าใจผิดพื้นฐานที่กำหนดวิธีที่คนส่วนใหญ่จัดการการสำรองข้อมูลสื่อในบ้าน สิ่งที่ชัดเจนที่สุดคือการปกป้องข้อมูลจำนวนเทราไบต์ วิดีโอ 4K แบบรีมิกซ์ และภาพยนตร์ต่างประเทศที่หายาก แต่ถามตัวเองอย่างตรงไปตรงมาว่าสิ่งใดจริง ๆ ที่ไม่สามารถทดแทนได้ในสแต็กสื่ออัตโนมัติที่ถูกตั้งค่าอย่างดี?

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

สิ่งที่ *arr stack ไม่สามารถดาวน์โหลดได้คือข้อมูลเมตาของคุณ มันไม่สามารถดาวน์โหลดประวัติการรับชมหลายปีหรือโปสเตอร์ที่คุณเลือกเองแบบกำหนดเองเพราะโปสเตอร์เริ่มต้นถูกจัดกรอบอย่างไม่ดี นอกจากนี้ มันไม่สามารถดาวน์โหลดกฎการจัดคอลเล็กชันที่ปรับแต่งด้วยมือซ้ำซ้อนซึ่งจัดกลุ่มภาพยนตร์เจมส์ บอนด์ตามลำดับเวลาแทนที่จะเรียงตามตัวอักษร ข้อมูลนี้อยู่ในไดเรกทอรีข้อมูลแอปพลิเคชัน Plex โดยส่วนใหญ่จะอยู่ในฐานข้อมูล SQLite ของมัน

เมื่อฐานข้อมูลนั้นเสียหาย และมันจะเสียหายในที่สุด เพราะ SQLite และไฟดับเป็นศัตรูตามธรรมชาติ คุณจะสูญเสียสิ่งที่ไม่มีอินเทอร์เน็ตกิ๊กะบิตใดสามารถกู้คืนได้

สแนปช็อตของ Proxmox

เครื่องจักรสถานะแบบจุดเวลา

บางคนในที่นี้ โดยเฉพาะผู้ใช้ Docker อาจจะรีบชี้ให้เห็นว่าคุณได้แมปไดเรกทอรี /config กับ volume แบบถาวร ซึ่งวิธีนี้ใช้ได้กับการกู้คืนไฟล์ง่ายๆ สมมติว่าคุณกำลังรันงาน tarball ทุกคืน แต่การคัดลอกไฟล์ฐานข้อมูลที่กำลังทำงานอยู่เป็นเหมือนเกมรูเล็ตรัสเซีย หากคุณคัดลอกฐานข้อมูล SQLite ขณะที่มีการล็อกการเขียนเกิดขึ้น "สำรอง" ของคุณก็อาจเกิดความเสียหายได้ วิธีเดียวที่สะอาดในการสำรองข้อมูลคือหยุดเอนจินฐานข้อมูล คัดลอกไฟล์ แล้วเริ่มใหม่ การหยุด Plex ด้วยตัวเองครึ่งชั่วโมงทุกคืนไม่ใช่สิ่งที่คนส่วนใหญ่ทำและไม่สะดวก นี่คือเหตุผลที่ snapshot ของ VM ใน Proxmox เป็นประเภทการสำรองข้อมูลที่ต่างออกไป เพราะมันทำงานไม่ใช่ในระดับไฟล์ แต่ทำงานในระดับบล็อกและสถานะหน่วยความจำ

เมื่อคุณเรียกใช้ภาพสแนปช็อต (snapshot) ของเครื่องเสมือนที่กำลังทำงานใน Proxmox มันจะหยุดการเขียนทั้งหมด ชำระบัฟเฟอร์ระบบไฟล์ลงดิสก์ และบันทึกสถานะที่แน่นอนของทุกบิตบนดิสก์เสมือนในวินาทีสุดท้ายนั้น มันยังบันทึกสถานะของ RAM แล้วปล่อยเครื่องเสมือนให้ทำงานต่อ กระบวนการทั้งหมดนี้ใช้เวลาน้อยกว่าหนึ่งวินาที และการหยุดชั่วคราวของบริการมักจะน้อยจนการ Ping ติดต่อกันอาจจะไม่สูญเสียแพ็กเก็ตแม้แต่แพ็กเก็ตเดียว

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

ย้อนกลับการอัปเดต Plex ที่พังในไม่กี่วินาที

การฟื้นฟูที่รู้สึกเหมือนการเดินทางข้ามเวลา

นี่คือเวทมนตร์แบบ "มันใช้งานได้เลย" ที่คนส่วนใหญ่ไม่ชื่นชมจนกว่าจะได้ประสบมันในยามวิกฤติ ลองจินตนาการว่าทีม Plex ปล่อยการอัปเดต คุณติดตั้งมันโดยไม่คิด ซึ่งเป็นสิ่งที่หลายๆ คนเรานั้นก็เคยทำ สิ่งต่างๆ กลับกลายเป็นผิดพลาดอย่างรุนแรง และสคริปต์ย้ายฐานข้อมูลทำให้ห้องสมุดของคุณเสียหาย ล้างประวัติการรับชมของคุณออกไป และทิ้งสื่อที่ไม่ตรงกันกระจัดกระจายอยู่รอบๆ

บนการตั้งค่าแบบ bare-metal หรือ Docker เส้นทางการกู้คืนของคุณเกี่ยวข้องกับการค้นหาสำรองระบบไฟล์ของคุณ หวังว่าจะพบสำเนาฐานข้อมูลจากก่อนการอัปเดต คุณต้องหยุด Plex แทนที่ฐานข้อมูลที่เสียหายด้วยฐานข้อมูลเก่า รีสตาร์ท Plex และอธิษฐานให้ทุกอย่างทำงานได้ แต่ในกรณีส่วนใหญ่ มันหลีกเลี่ยงไม่ได้ที่คุณจะสูญเสียข้อมูลการรับชมจากวันที่ระหว่างการสำรองข้อมูลล่าสุดของคุณและตอนนี้






บน Proxmox เส้นทางการกู้คืนของคุณใช้เพียงสามคลิก คุณไปที่ VM ของ Plex ของคุณในอินเทอร์เฟซเว็บ คุณหยุด VM คุณเลือกแท็บ “Snapshots” คุณจะเห็นรายการสแนปช็อตที่มีเครื่องหมายเวลา ซึ่งคุณได้ทำการสแนปช็อตทุกวันโดยอัตโนมัติ เพราะ Proxmox อนุญาตให้คุณตั้งเวลาสแนปช็อตได้โดยไม่ต้องเขียนสคริปต์ภายนอกแม้แต่บรรทัดเดียว คุณเลือกสแนปช็อตและคลิก “Rollback” ห้าวินาทีต่อมา คุณเริ่ม VM Plex บูตขึ้นและฐานข้อมูลเหมือนเดิมทุกบิตกับสิ่งที่เคยเป็นพร้อมทุกอย่างครบถ้วน นี่ไม่ใช่การสำรองข้อมูลในแบบดั้งเดิม แต่เป็นปุ่มย้อนกลับที่สะอาดสำหรับเซิร์ฟเวอร์ทั้งหมดของคุณ

นี่จะกินพื้นที่จัดเก็บของฉันไหม?

การจัดสรรพื้นที่บางและกลไก CoW

การคัดค้านที่พบบ่อยและถูกต้องต่อวิธีการนี้คือพื้นที่ดิสก์ “ถ้าฉันจัดเก็บภาพสแนปชอตของ Plex VM ของฉันทุกวัน มันจะใช้พื้นที่เทราไบต์ของ SSD ราคาสูงของฉันไหม?” นี่คือจุดที่สถาปัตยกรรมการใช้งานของ Proxmox โดยเฉพาะเมื่อใช้ ZFS หรือ LVM-thin ช่วยได้ สแนปชอตของ Proxmox ไม่ใช่โคลนเต็ม แต่ใช้กลไกการคัดลอกเมื่อมีการเขียน (copy-on-write)

สิ่งที่หมายถึงในทางปฏิบัติคือ เมื่อคุณสร้างสแนปชอตฐาน ระบบจะสร้างไฟล์เดลต้าว่างใหม่ ในช่วงเวลา 24 ชั่วโมง จะมีเพียงบล็อกข้อมูลที่เปลี่ยนแปลงเท่านั้นที่ถูกเขียนลงในเดลต้านั้น ถ้าฐานข้อมูล Plex ของคุณมีขนาด 500MB และคุณดูรายการไม่กี่ตอน บล็อกที่ถูกเขียนลงในสแนปชอตจะเป็นเพียง 50MB ของไฟล์ฐานข้อมูลนั้นที่เปลี่ยนแปลงจริง ๆ สแนปชอตเองจะยังคงมีขนาดเล็กและลิงก์ไปยังภาพฐาน

คุณสามารถเก็บโซ่ของสแนปช็อตแบบหมุนได้ ทุกสามชั่วโมงตลอดวันก่อนหน้า รวมทั้งสแนปช็อตรายวันสองสามชุดโดยไม่ต้องใช้พื้นที่ดิสก์ดิบที่จำเป็นในการเก็บโคลนเต็ม หนึ่งสัปดาห์ของสแนปช็อต Plex แบบละเอียดอาจใช้พื้นที่น้อยกว่าหนึ่งไฟล์ภาพยนตร์ 4K

ข้อจำกัด

ไฟล์สื่อไม่ได้อยู่ที่นี่

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

ประหยัดกับข้อเสนอด้านการจัดเก็บข้อมูลและเครือข่ายสำหรับเซิร์ฟเวอร์ที่บ้าน

คุณไม่ควรจัดเก็บไฟล์สื่อของคุณภายใน VM ของ Proxmox หาก VM Plex ของคุณมีดิสก์เสมือน 12TB ที่เต็มไปด้วยสื่อ ไฟล์เดลตาสแนปชอตจะกลายเป็นสิ่งที่ควบคุมได้ยากอย่างรวดเร็ว

นอกจากนี้ หากคุณต้องย้อนกลับ VM เพื่อกู้คืนจากความเสียหายของฐานข้อมูล คุณก็จะย้อนกลับคอลเลกชันสื่อของคุณด้วย ไฟล์ที่เพิ่มในวันจันทร์จะหายไปหากคุณย้อนกลับไปวันอาทิตย์ และนั่นไม่ใช่สิ่งที่คุณต้องการให้เกิดขึ้น


ทำไมสิ่งนี้ยังไม่ใช่แนวทางปฏิบัติมาตรฐาน

เหตุผลที่วิธีการนี้ยังคงถูกพูดถึงน้อยอยู่เนื่องจากวัฒนธรรม ชุมชน Plex ในอดีตแบ่งออกเป็นสองกลุ่ม: ผู้ใช้ระบบปฏิบัติการแบบ turnkey (Windows, Unraid, Synology) ที่ให้ความสำคัญกับความเรียบง่าย และกลุ่ม Docker ที่เน้นคอนเทนเนอร์แบบ stateless แต่บ่อยครั้งละเลยชั้นการเก็บข้อมูลถาวร Proxmox แทนตัวแทนเส้นทางที่สาม ซึ่งโดยทั่วไปเกี่ยวข้องกับการดูแลเซิร์ฟเวอร์ ทำให้เกิดอุปสรรคด้านภาพลักษณ์ที่น่ากลัว

แต่ความจริงก็คือว่า การใช้งาน Proxmox พื้นฐานที่มี VM Plex หนึ่งเครื่อง ไม่ซับซ้อนในการดูแลมากไปกว่าเซิร์ฟเวอร์ Unraid อินเทอร์เฟซเว็บเป็นแบบชี้แล้วคลิก และสำหรับการเรียนรู้ที่ไม่มากนักนั้น คุณจะได้รับนโยบายประกันภัยต่อรูปแบบความล้มเหลวของ Plex ที่รุนแรงที่สุดที่มีอยู่

บทความที่เกี่ยวข้อง