Review

Migrating Data from Unraid to Synology DS1621+ : ปวดหัวไปหลายวัน

By Arnon Puitrakul - 21 มีนาคม 2022 - 2 min read min(s)

Migrating Data from Unraid to Synology DS1621+ : ปวดหัวไปหลายวัน

อันความสนุกได้เกิดเมื่อเราซื้อ Synology DS1621+ มาเป็น NAS ประจำบ้านตัวใหม่ ทำให้เราจะต้องทำการย้ายข้อมูลทั้งหมดออกจาก NAS ตัวเก่า แล้วมาใส่ตัวใหม่ ตอนแรกคิดว่า อื้ม ไม่กี่ชั่วโมงก็เสร็จ เอาเข้าจริง 3 วันฮ่า ๆๆๆๆ ไปดูกันว่า มันเกิดอะไรขึ้นบ้าง

เตรียมอุปกรณ์

Migrating Data from Unraid to Synology DS1621+ : ปวดหัวไปหลายวัน

เนื่องจากว่า เราไม่ได้กด HDD มาใหม่ด้วย คือ เราจะใช้ HDD ลูกเดิม มาใส่ใน NAS ใหม่เลย และ Synology NAS และ UnRAID มันเป็น File System คนละตัวกัน ทำให้เราไม่สามารถที่จะเอา HDD ออกจาก NAS เก่า แล้วเสียบเข้าไปใน NAS ใหม่แล้วจบเลย มันทำแบบนั้นไม่ได้ แต่เราก็ทิ้งข้อมูลทั้งหมดไม่ได้ด้วยสิ

ทำให้ เราจะต้องหาทางอื่นมาจัดการแล้ว นั่นคือ การ Copy ข้อมูลทั้งหมดใส่เข้าไปใน External Hard Disk ซะก่อน ดีนะที่ตอนทำ Thesis เราซื้อมาเพิ่มอีก ไม่งั้นคือ เละแน่นอน แน่นอนว่าวิธีนี้ ข้อเสียอย่างที่เราเห็นเลยคือ เราจำเป็นที่จะต้องมี External HDD เท่ากับ หรือมากกว่าจำนวนข้อมูลใน Array เดิม แน่นอนว่า เรามี 5 TB x 2 และ 2 TB x 2 กลายเป็น 14 TB ถามว่า พอมั้ย คำตอบคือ ไม่พอจ้าาา เพราะข้อมูลเราทั้งหมด 11 TB ทำให้ มันพอเลยละ น่ากลัวอยู่ เดี๋ยวมาบอกว่าทำไม แต่รอดมาได้เฉย

ย้ายข้อมูลทั่ว ๆ ไป

Migrating Data from Unraid to Synology DS1621+ : ปวดหัวไปหลายวัน

พวกไฟล์ทั่ว ๆ ไป อันนี้ง่าย ๆ มาก เพราะ NAS เครื่องเก่าของเรา สามารถเสียบ USB ได้มากมายเลยละ คือ เสียบไปเลย 4 ลูกทั้งหมดนั่นแหละ เพื่อที่เราจะได้ไม่ต้อง Transfer File ทั้งหมดผ่าน Network เปิด 2 เครื่อง เสี่ยงอีกว่าระหว่างโยนไฟล์ขนาด 11 TB วิ่งไปใน Network แล้วฝั่งใดฝั่งนึงแตกก็คือแตกหมด เห้ออ เลยนะ

หลังจากเสียบเข้าไปแล้ว ตัว UnRAID ปกติ เราไม่สามารถที่จะเรียกใช้พวก Disk ที่เราเสียบเข้าไปได้ เราจะต้องใช้ Plugin ที่ชื่อว่า Unassigned Drive เพื่อจะ Mount มันเข้ามาในเครื่องของเรา และเพื่อให้การ Copy ข้อมูลทำได้ง่ายขึ้น เราเลยใช้โปรแกรมที่ชื่อว่า Krusader เขาทำมาเป็น Docker Container ให้เราแล้ว เราสามารถที่จะ Run แล้วใช้งานได้เลย

ทีนี้ ความยากคือ เมื่อเรามี External HDD ทั้งหมด 4 ลูก ที่ขนาดไม่เท่ากันอีก แต่ข้อมูลของเราไม่ได้แบ่งมาเป็น 4 ส่วนให้เรา หน้าที่ของเราคือ เราจะต้องไล่แบ่งแล้วว่า ข้อมูลชุดไหนมันจะต้องอยู่ในลูกไหน อันนี้แหละ เหนื่อยเลย​ ฮ่า ๆ วิธีง่าย ๆ คือ เราพยายาม ไม่แบ่ง Folder คือ Folder ไหนมันเล็กมากพอที่จะใส่เข้าไปในลูกนึงเลย เราก็จะพยายามใส่เข้าไปก่อน ทำแบบนี้ไปเรื่อย ๆ จนหมด แล้วเราค่อยเอาพวกที่ใหญ่ ๆ นี่แหละ ซอย ๆ เอา เช่นพวก Final Cut Project ที่มี Video File อยู่เยอะมาก

พอ เรา Plan เสร็จ เราก็ทำการ Copy เลย ผ่าน Krusader กันเลย แน่นอนว่า การ Copy ข้อมูลประมาณ 11 TB ลงใน HDD ผ่าน USB เราก็จะได้ความเร็วประมาณ 100 MB/s ต่อลูก พอเป็น 4 ลูก ก็จะเป็น 400 MB/s ใช่มั้ย

ผิด !!! เพราะ ความ UnRAID มันไม่ได้พ่นข้อมูลให้แบบนั้น มันเลยเรียกว่า Un-RAID นั่นเอง มันจะมีเคสที่ ถ้า External HDD 2 ลูก มันไปเรียกข้อมูลที่อยู่ใน HDD ต้นทางเดียวกัน มันก็จะกิน เวลาในการหมุนหา พวก Latency เข้าไปอีก เลยทำให้ มันไม่ได้เป็น 400 MB/s หรอก ต่ำกว่านี้เยอะมาก ๆ ทำให้เราใช้เวลานานมาก ๆ เป็นวันเลยละ

Virtual Machine

Migrating Data from Unraid to Synology DS1621+ : ปวดหัวไปหลายวัน

อีกอันที่ปวดหัวมาก ๆ คือ Docker Container และพวก VM ทั้งหลาย เริ่มจาก VM ก่อนละกัน ใน NAS เก่า เราจะมี VM ทั้งหมด 2 ตัวด้วยกัน ซึ่งตอนนั้น เราก็เข้าใจว่า ใน Synology NAS Module ที่เป็น VM มันก็น่าจะใช้ KVM เหมือนกับ UnRAID แหละ งั้น ถ้าเรา Copy Disk Image มา แล้วสร้าง VM ใหม่ ก็น่าจะรันต่อได้เลย

ปรากฏว่า มาใช้งานจริง มันเกิดปัญหาว่า Boot ไม่ผ่าน น่าจะเป็นเพราะ Machine Type มันผิด อะไรสักอย่าง เท่าที่อ่านมานะ เลยทำให้ VM เราไม่สามารถ Migrate ได้เลย แต่ก็โอเค ไม่เป็นไร ถือว่า เป็นการ Clean Install ใหม่เลยละกัน และ เราก็อยากจะย้ายจาก Ubuntu มาเป็น CentOS อยู่แล้ว เพราะการกิน Resource ที่ต่างกันลิบลับเลย ก็เลยกลายเป็นว่า ลงใหม่จ้าาา พวกนั้นก็คือ Web Server ของ Web นี้นั่นเอง

เราก็แค่ Backup Content ในหน้าเว็บของ Ghost ได้เลย แล้วเอามา Restore ในเว็บใหม่ได้เลย คือเอาจริง ๆ ในเวลาในการลงเครื่องแปบเดียวจริง ๆ ไม่เกิน 20 นาที Ghost เราก็กลับมาเป็นเหมือนเดิมแล้ว

และอีก VM เป็น VM สำหรับทำ Reverse Proxy โดยเฉพาะเลย อันนี้ง่ายกว่าเดิมเยอะมาก เราลง CentOS แล้วติดตั้ง Docker แล้วก็ Run SWAG Container เข้าไปแล้ว Copy Config ของเก่าใส่เข้าไป ก็พร้อมรันแล้วง่ายมาก ๆ

Docker Container

Migrating Data from Unraid to Synology DS1621+ : ปวดหัวไปหลายวัน

สุดท้าย ที่ยากสุด ๆ คือ Docker Container เพราะด้วยความที่ Controller ของ UnRAID และ Synology ไม่มีอะไรเชื่อมกันเลย ทำให้เราจะต้องจดพวก Definition ออกมาหมดเลย พวก Environment Variable ว่ามันเป็นตัวไหนอะไรบ้าง แล้วก็พวก Mounting Point ต่าง ๆ เก็บไว้เลย ด้วยมือ ย้ำว่า ด้วยมือทั้งหมดเลย โชคดีที่ เรามี Docker Container อยู่แค่ประมาณ 15 Container ก็จดไปค่าาา

จากนั้น ใน Docker ของ Synology เราต้องการที่จะทำเป็น Share สำหรับจัดการ Docker โดยเฉพาะ เราก็เลยต้องทำการสร้าง Share สำหรับ Docker ขึ้นมากแยก เพื่อแยกให้เป็นส่วน ๆ ของ Docker ไปเลยเวลาเรา Backup มันจะได้ง่ายหน่อย ไม่งั้นปวดหัวแย่ แล้วเราก็ Copy ทุกอย่างที่อยู่ใน appdata ของ UnRAID เข้ามา อันนี้ง่าย เราก็แค่ปิด Container บน UnRAID แล้วให้ Synology ต่อ SMB เข้าไปแล้วดูดมาเลยทั้งยวงใน appdata

ทีนี้แหละ งานหินละ คือ เราจะต้องไล่สร้าง Container ทั้งหมดขึ้นมาจาก Image นั่นแหละ ไล่ก๊อปพวก Definitionn ต่าง ๆ ทีละอันไปเรื่อย ๆ จนครบทุก Container ก็ใช้เวลาหลายชั่วโมงหน่อย แต่ก็เรียบร้อยไปด้วยดี ไม่ต้องลงอะไรใหม่เองเลย ถือว่า รอดละกัน

สรุป

Migrating Data from Unraid to Synology DS1621+ : ปวดหัวไปหลายวัน

การ Migrate NAS รอบนี้ เรียกได้ว่า หนักเลยนะ หนักว่าก่อนหน้านี้ที่เคยย้ายจาก Windows ลง UnRAID เยอะมาก เพราะข้อมูลตอนนั้น กับตอนนี้ห่างกันลิบเลย เลยทำให้ใช้เวลาเยอะกว่าที่คิดเยอะมาก กว่าจะ Copy ข้อมูลไปมา มันเสียเวลาเยอะมาก และ พวก VM กับ Docker Container ที่ต้องไล่ติดตั้งใหม่ และ ย้าย Container มาคือปวดหัวเลยละ ถือว่าเอามาเล่าเป็นประสบการณ์ละกัน และ ก็คิดว่าจะอยู่กับ Synology อีกนานเลย เพราะ Software มันดีมากก็เดี๋ยวจะมี Content เกี่ยวกับ Synology ออกมาเรื่อย ๆ ลองติดตามกันได้