ฉันมีไฟล์ "tar" จำนวนหนึ่งที่สร้างจากเซิร์ฟเวอร์ proxmox 6 เก่า โดยใช้เครื่องมือ vzdump

บุคคลที่สร้างพวกเขาในขั้นต้นได้ออกจากบริษัทแล้ว และบริษัทได้เปลี่ยนเซิร์ฟเวอร์คอนเทนเนอร์จาก "Proxmox VE" เป็นเซิร์ฟเวอร์ Linux Ubuntu 20.04 LTS มาตรฐานที่ใช้ LXD เวอร์ชันล่าสุดสำหรับระบบคอนเทนเนอร์

ตอนนี้ฉันถูกถามว่าฉันสามารถนำไฟล์ Vzdump tar เหล่านี้ไปใช้ได้หรือไม่ และเปลี่ยนให้เป็นการปรับใช้ตาม LXC มาตรฐานปกติที่ทำงานบนเซิร์ฟเวอร์ใหม่

การค้นหาทั้งหมดที่ฉันทำดูเหมือนจะเปลี่ยนเฉพาะคอนเทนเนอร์ LXC เปล่าเป็นคอนเทนเนอร์ Proxmox VE และการถามในฟอรัม proxmox ทำให้ฉันไม่มีที่ใดเพราะสิ่งที่พวกเขาต้องการทำคือพาฉันกลับไปที่ proxmox ซึ่งลูกค้าของฉันไม่ต้องการอีกต่อไป ใช้.

ฉันสามารถ vzrestore ลงบนเซิร์ฟเวอร์ใหม่ได้ แต่ข้อมูลเมตาในคอนเทนเนอร์เข้ากันไม่ได้กับ LXD/LXC ดังนั้นจึงได้รับการพิสูจน์แล้วว่าเป็นทางตัน

ในทำนองเดียวกัน ฉันได้ลองแปลงคอนเทนเนอร์เป็นอิมเมจเทมเพลต LXC และสร้างจากสิ่งนั้น แต่ก็ไม่ได้ผลอย่างที่ฉันหวังไว้

answer

ดังนั้น หลังจาก 2 สัปดาห์ของการค้นคว้าและอ่านโพสต์บนบล็อกจำนวนมาก ฉันก็พบว่าต้องทำอย่างไร

มันไม่ได้ตรงไปตรงมาเป็นพิเศษ แต่ก็ไม่ใช่วิทยาศาสตร์จรวดเช่นกัน อย่างไรก็ตาม ฉันรู้สึก (และความเกลียดชัง) จากการถามในฟอรัม proxmox ว่าพวกเขาไม่ต้องการให้คุณออกจากแพลตฟอร์ม proxmox ชั่วคราวหรืออย่างอื่น

อย่างไรก็ตาม ขั้นตอนที่คุณต้องปฏิบัติตามนั้นสำคัญไฉน

  1. ที่บรรทัดคำสั่ง proxmox "pct list" เพื่อรับ ID ของคอนเทนเนอร์ที่คุณต้องการคัดลอก

  2. ที่บรรทัดคำสั่งเดียวกัน "vzdump -compress gzip -dumpdir /tmp" คุณไม่จำเป็นต้องมีพารามิเตอร์ dump dir แต่ค่าเริ่มต้นจะซ้อนจำนวนโฟลเดอร์ที่โง่เขลาอยู่ลึก ดังนั้นฉันขอแนะนำให้ใช้ tmp dir เพื่อความง่าย .

  3. จากนั้นคุณต้องสร้าง "ไฟล์ข้อมูลเมตา" โดยใช้คำสั่งต่อไปนี้ (โปรดทราบ: ต้องเปลี่ยนสัญลักษณ์ # เป็น BACKTICKS ก่อนที่คุณจะคัดลอกและวาง/ใช้คำสั่ง ฉันต้องใช้สัญลักษณ์ # เป็นเครื่องหมายใน โพสต์ SO ไม่สามารถแสดงสัญลักษณ์ backtick ได้เนื่องจากวิธีการมาร์กดาวน์ใช้) :

    echo architecture: #pct config $1 | grep arch: | awk '{print $2}'# > metadata.yaml

    echo creation_date: #date +%s# >> metadata.yaml

    tar -czvf metadata.tar.gz metadata.yaml

    rm metadata.yaml
  1. ย้ายไฟล์ ".tar.gz" ที่คุณสร้าง ข้ามไปยังเครื่องเป้าหมายที่ใช้ LXD เวอร์ชันใหม่ ฉันใช้ rsync สำหรับสิ่งนี้

  2. บนบรรทัดคำสั่งของเครื่อง LXD ให้ใช้คำสั่งต่อไปนี้เพื่อนำเข้าข้อมูลเมตาและไฟล์ดัมพ์ไปยังอิมเมจ lxc:

    sudo lxc image import metadata.tar.gz <vzdump name>.tar.gz

การดำเนินการนี้จะนำเข้าคอนเทนเนอร์เป็นอิมเมจ ซึ่งไม่สามารถรันได้โดยตรง type

lxc image list

และรับลายนิ้วมือของภาพที่คุณเพิ่งสร้างขึ้น

รายการภาพ LXC

  1. ยังอยู่ที่บรรทัดคำสั่ง LXD โดยใช้ลายนิ้วมือจากการใช้ภาพของคุณ:

    lxc launch <fingerprint> <name you want to give your container>

ณ จุดนี้ คุณจะมีคอนเทนเนอร์ใหม่ ซึ่งซ้ำกับ proxmox เดิมที่ทำงานอยู่ทุกประการ

สิ่งที่คุณอาจไม่มีคือการตั้งค่าเครือข่ายเดียวกันอย่างไรก็ตาม สำหรับฉัน ฉันมีทุกอย่างในเครือข่ายหมดจาก DHCP รวมถึงสัญญาเช่าแบบคงที่ ดังนั้นจึงเป็นเรื่องสำคัญที่คอนเทนเนอร์ใหม่ของฉันมีที่อยู่ MAC เดียวกัน ซึ่งทำได้ง่ายๆ โดยใช้

pct config <container id>

บน proxmox cli เพื่อแสดงการกำหนดค่าฮาร์ดแวร์ จากนั้นคัดลอกและวางที่อยู่ MAC จากนั้นตามด้วย

lxc stop <container name>
lxc config set <container name> volatile.eth0.hwaddr <copied mac address>
lxc start <container name>

หากสัญญาเช่าแบบคงที่ DHCP ของคุณขับเคลื่อนจากที่อยู่ mac สิ่งนี้จะช่วยให้มั่นใจได้ว่าจะได้รับที่อยู่ IP เดียวกัน ตราบใดที่โฮสต์ LXD ของคุณได้รับการตั้งค่าให้เชื่อมต่อ IP บนเครือข่ายเดียวกันกับโฮสต์ proxmox ดั้งเดิมของคุณ

ฉันได้เขียนบล็อกโพสต์ซึ่งสามารถพบได้ที่: https://shawtyds.wordpress.com/2021/11/16/converting-containers-from-proxmox-ve-back-to-plain-old-lxd-lxc /ที่ลงรายละเอียดเพิ่มเติมเล็กน้อย

เมื่อคอนเทนเนอร์ที่คัดลอกของคุณทำงาน เป็นเพียงเรื่องของการใช้ lxc เพื่อลบอิมเมจชั่วคราว (เว้นแต่คุณต้องการเก็บไว้) และลบไฟล์ ".tar.gz" จากเซิร์ฟเวอร์ทั้งสอง และอาจลบคอนเทนเนอร์เก่าออกจาก proxmox ถ้าคุณไม่ต้องการมันอีกต่อไป