Tutorial

การสร้าง SSD Storage Pool บน Synology DSM

By Arnon Puitrakul - 17 พฤษภาคม 2024

การสร้าง SSD Storage Pool บน Synology DSM

สำหรับคนที่ใช้ Synology NAS บางรุ่นจะมีช่อง M.2 สำหรับเสียบ NVMe SSD โดยพื้นฐาน Synology บอกว่ามันสำหรับการทำ Cache แต่ถ้าเราต้องการเอามันมาทำเป็น Storage ละ มันจะทำได้มั้ย วันนี้เราจะมาเล่าวิธีการทำกัน

คำเตือน : แนะนำว่า เราควรมีความรู้พื้นฐานเกี่ยวกับการใช้ Linux Command Line ด้วยจะดีมาก

DSM อนุญาติให้ทำ Storage Pool จาก SSD แล้ว

ก่อนหน้านี้ การใส่ SSD เข้าไปในระบบ ทาง Synology อนุญาติให้ทำเป็นแค่ Cache Device เท่านั้น แต่ในบาง System บางการใช้งาน การใช้ Cache นั้นอาจจะไม่ได้ผลกับการใช้งานเท่าไหร่ ทำให้เหมือนเราเสียช่องเสียบไปฟรี ๆ

แต่หลัง ๆ มา จำไม่ได้ว่า DSM Version อะไร น่าจะ 7.0 ที่อนุญาติให้ผู้ใช้สามารถสร้าง Storage Pool จาก SSD ได้ ทำให้เราสามารถนำมันมาใช้เป็น Volume ในการเก็บข้อมูล หรือเอามารันพวก VM ต่าง ๆ ได้นั่นเอง

ปัญหาอยู่ที่ว่า การที่เราจะนำ SSD มาสร้างเป็น Storage Pool ได้นั้น SSD ที่เราใช้จะต้องเป็น SSD ที่ได้รับรองจาก Synology เท่านั้น หรือตัวที่อยู่ในรายการของ Hardware ที่เข้ากันได้เท่านั้น ถึงจะทำได้ ซึ่งถ้าเป็น Synology SSD เอง ขนาดสูงสุดมีแค่ 400 GB เท่านั้นกับราคาแพงแสนแพง แต่ถ้าเราไปดูสเปกมันดี ๆ เราจะเห็นว่ามันไม่ได้แพงขนาดนั้นหรอก แค่ว่า มันอาจจะไม่จำเป็นกับการใช้งานตามบ้านก็แค่นั้น

แต่ ๆๆๆๆ แน่นอนว่า Synology Community จะหยุดแค่นั้นเหรอ ตอนนี้เราสามารถที่จะบังคับทำให้ เราสามารถใช้ SSD อะไรก็ได้ มาทำเป็น Storage Volume แล้ว เรามาดูขั้นตอนกัน

Step 1: Enabling SSH Service

ในการจะทำ เราไม่สามารถทำผ่านหน้า Web GUI ของ DSM ได้ เราจำเป็นต้องทำงานผ่าน Command Line เท่านั้น ดังนั้น เราจำเป็นต้องเข้าไปเปิด SSH Service เพื่อให้เราสามารถ Remote เข้ามาตั้งค่าได้

โดยการให้เราเข้าไปที่ Control Panel > Terminal & SMNP ติ๊กเลือก Enable SSH Service และกด Apply

ข้อควรระวัง หลังจากการตั้งค่านี้แล้ว เราควรกลับมาปิด SSH Service ด้วย เพื่อลด Attack Surface ที่อาจจะเกิดขึ้นได้ เมื่อจะใช้ค่อยเปิด ไม่ใช้ก็ปิดไป

Step 2: Partitioning & Create Storage Pool

หลังจากนั้นให้เรา SSH เข้าสู่ Synology NAS ของเราด้วย Username และ Password เดียวกันกับที่เราใช้เข้าหน้า Admin ของ DSM

ls /dev/nvme*

จากนั้นให้เรามาเช็คก่อนว่า NVMe SSD หรือ SSD ที่เราเสียบเข้ามา มันเข้า มันติดจริง ๆ มั้ย หากรันออกมาแล้ว มี NVMe Drive แสดงออกมาครบ แปลว่า NVMe SSD ที่เราเสียบเข้าไปมันทำงานได้ตามปกติ หรือถ้าพบว่า มันขึ้นมาแค่บางลูก หรือไม่ขึ้นเลย แนะนำให้ลอง Restart หรือตรวจสอบการเชื่อมต่อ NVMe SSD กับตัวเครื่องว่าเสียบแน่น หรือ ลืมล๊อคอะไรหรือไม่

sudo -i

หลังจากนี้ เราต้องทำงานกับคำสั่งที่อาศัย Permission ดังนั้น เราขอ Superuser ทิ้งไว้เลยจะทำให้เราเขียนคำสั่งได้สะดวกมากขึ้น

synopartition --part /dev/nvme0n1 12
synopartition --part /dev/nvme1n1 12

จากนั้น เราจะทำการสร้าง Synology Partition สำหรับ NVMe SSD ทั้งสองลูก หากเรามีลูกเดียว ให้เราเช็คจาก ls รอบแรกว่า NVMe SSD เราอยู่ที่ไหนแล้วปรับคำสั่งไปตามที่เรามีเด้อ

cat /proc/mdstat

ขั้นตอนต่อไปของเราคือการสร้าง RAID ที่เป็น Logical Volume แต่ก่อนที่เราจะสร้าง เราจำเป็นต้องเข้ามาเช็คก่อน เผื่อในบาง System เราตั้งค่าไว้มีหลาย Storage Pool คำสั่งด้านบนมันจะแสดงว่า เรามี Logical Volume ชื่ออะไร เท่าไหร่กี่อัน รายละเอียดเป็นอย่างไร ให้เราดูที่ชื่อของมันไว้ เช่น /dev/md2 เพราะชื่อที่เราจะต้องใช้สร้างอันใหม่นี้จะต้องไม่ซ้ำกับของเดิม แนะนำว่า อันเดิมเลขรันถึงเท่าไหร่ ก็รันต่อไปอีกเลข จบ

mdadm --create /dev/md3 --level=1 --raid-devices=2 --force /dev/nvme0n1p3 /dev/nvme1n1p3

ถึงเวลาสร้าง Storage Pool จริง ๆ ละ โดยการใช้คำสั่งด้านบน ตรง Level เราสามารถเลือก RAID Mode ได้ เช่นในตัวอย่างด้านบน เรามี SSD 2 ลูก เราเลือกเป็น RAID 1 เลยเลือก level=1 ไป แต่ถ้าเราต้องการ RAID 0 เราก็เลือกเป็น level=0 ได้

mdadm --create /dev/md3 --level=0 --raid-devices=1 --force /dev/nvme0n1p3 

แต่หากเรามี SSD ลูกเดียว เรามีตัวเลือกเดียว คือรันของใครของมัน เราก็แค่เปลี่ยนเป็น level=0 และ raid-devices=1 เท่านั้น หรือเคสนอกจากนั้น มีมากกว่า 2 ลูกตัวเลือกเราจะเพิ่มขึ้นมาละ เช่น RAID 5 หรือมากกว่า แล้วแต่เราจะตั้งค่าเลย

cat /proc/mdstat

เมื่อเรา mdstat ขึ้นมาอีกครั้ง เราจะต้องพบกับ Storage Pool ที่เราสร้างขึ้นมา ถ้าไม่เจอ แปลว่าคำสั่งที่เรารันก่อนหน้านี้น่าจะผิดพลาดบางอย่างแน่นอน ต้องกลับไปเช็คในขั้นตอนก่อนหน้า

Step 3 Creating Volume

หลังจากเราได้ Storage Pool มาแล้ว เราจะมาสร้าง Volume สำหรับการเก็บข้อมูลกัน

echo 0 > /sys/block/md3/queue/rotational

ก่อนอื่น ด้วยความที่ Storage Pool นี้ไม่ได้ใช้ Storage Media ที่เป็น Rotational หรือพวกที่เป็นจานอย่าง HDD เราจำเป็นต้องบอกเครื่องก่อนนะว่า อันนี้ไม่ใช่ HDD นะ โดยคำสั่งด้านบน

mkfs.btrfs -f /dev/md3

จากนั้นให้เราสร้าง BTRFS Volume โดยการใช้คำสั่งด้านบน เท่านี้ เราก็จะได้ Storage Pool ที่มี Volume เรียบร้อย แต่ตอนนี้ Synology DSM จะยังไม่เห็นอะไร เพราะมันไม่เช็คแบบ Real-time เราจำเป็นต้องสั่ง Restart เครื่องอีกที

Step 4: Assemble Storage Pool

เมื่อเรา Restart กลับมา เปิด Storage Manager เราจะพบว่า มันมีขึ้น Available Pool ที่เราได้สร้างไว้ เราสามารถ Import มันเข้ามาใน DSM ได้โดยการกดที่ จุด 3 จุดเลือก Online Assemble

จากนั้นมันจะแสดงหน้าข้อมูล Pool ของเรา เช่น RAID Type ในที่นี้เราเข็ดกับการย้ายข้อมูลละ เลยเลือกเป็น RAID 1 มา มันก็แสดงได้ถูกต้อง หากไม่มีอะไรผิดพลาด เราก็แค่กด Apply เท่านั้น

เท่านี้ก็เป็นอันเรียบร้อย ที่เหลือมันจะทำการ Assemble Storage Pool กับ Volume ขึ้นมา และมีการรันพวก Check อะไรนิดหน่อยอาจจะใช้เวลาไม่น่าเกิน 2-3 ชั่วโมง ก็น่าจะใช้ได้ปกติเร็วจี๊แล้ว

Maintenance: Repairing Pool

ในกรณีปกติที่หากเราใช้ RAID 1 และ 5 หรือ ประเภทที่มี Redundancy เมื่อ SSD ลูกใดลูกหนึ่งเกิดเสีย หรือมีปัญหาขึ้นมา เราสามารถถอดลูกเก่า และเสียบลูกใหม่ แล้วกด Repair ใน Storage Manager ของ DSM ได้ทันที แต่สำหรับ SSD ที่มันไม่ได้รองรับแบบ Official เราจำเป็นจะต้องมีทริกอะไรนิดหน่อย

synopartition --part /dev/nvme1n1 12
mdadm --manage /dev/md3 -a /dev/nvme0n1p3

สิ่งที่เราจะต้องทำมี 2 เรื่องด้วยกันคือสร้าง Partition เพื่อให้ DSM มันอ่านเจอ และ เพิ่มอุปกรณ์เข้าไปในใน Storage Pool จากนั้นให้เรา Restart จากนั้นให้เราเปิด Storage Manager มันจะมีตัวเลือกให้เรากด Repair

สรุป

การสร้าง Storage Pool จาก SSD ทำให้เราสามารถใช้งานพวก Application อย่าง Docker และ VM ได้รวดเร็วมากขึ้น ถือว่าเป็นอะไรที่ดีมาก ๆ แต่อยากให้ระวังตอนทำเพราะมันเป็น Command Line เราควรจะตรวจสอบทุกคำสั่งที่เรารันก่อนนะว่ามันถูกต้อง หรือไม่ถูกต้องอย่างไร เพื่อไม่ให้เรารันคำสั่งผิดพลาดไปทำให้ข้อมูลสูญหายได้

Read Next...

นายเองก็ดูเทพได้นะ ด้วย tmux น่ะ

นายเองก็ดูเทพได้นะ ด้วย tmux น่ะ

เมื่อหลายวันก่อน เราไปทำงานแล้วใช้ Terminal แบบปีศาจมาก ๆ จนเพื่อนถามว่า เราทำยังไงถึงสามารถสลับ Terminal Session ไปมาได้แบบบ้าคลั่งขนาดนั้น เบื้องหลังของผมน่ะเหรอกัปตัน ผมใช้ tmux ยังไงละ วันนี้เราจะมาแชร์ให้อ่านกันว่า มันเอามาใช้งานจริงได้อย่างไร เป็น Beginner Guide สำหรับคนที่อยากลองละกัน...

ปกป้อง Ubuntu ผ่าน Firewall แบบง่าย ๆ ด้วย UFW

ปกป้อง Ubuntu ผ่าน Firewall แบบง่าย ๆ ด้วย UFW

Firewall ถือว่าเป็นเครื่องมือในการป้องกันภัยขั้นพื้นฐานที่ปัจจุบันใคร ๆ ก็ติดตั้งใช้งานกันอยู่แล้ว แต่หากเรากำลังใช้ Ubuntu อยู่ จริง ๆ แล้วเขามี Firewall มาให้เราใช้งานได้เลยนะ มันชื่อว่า UFW วันนี้เราจะมาทำความรู้จัก และทดลองตั้ง Rule สำหรับการดักจับการเชื่อมต่อที่ไม่เกี่ยวข้องกันดีกว่า...

จัดการเรื่องแต่ละมื้อ แต่ละเดย์ด้วย Obsidian

จัดการเรื่องแต่ละมื้อ แต่ละเดย์ด้วย Obsidian

Obsidian เป็นโปรแกรมสำหรับการจด Note ที่เรียกว่า สารพัดประโยชน์มาก ๆ เราสามารถเอามาทำอะไรได้เยอะมาก ๆ หนึ่งในสิ่งที่เราเอามาทำคือ นำมาใช้เป็นระบบสำหรับการจัดการ Todo List ในแต่ละวันของเรา ทำอะไรบ้าง วันนี้เราจะมาเล่าให้อ่านกันว่า เราจัดการะบบอย่างไร...

Loop แท้ไม่มีอยู่จริง มีแต่ความจริงซึ่งคนโง่ยอมรับไม่ได้

Loop แท้ไม่มีอยู่จริง มีแต่ความจริงซึ่งคนโง่ยอมรับไม่ได้

อะ อะจ๊ะเอ๋ตัวเอง เป็นยังไงบ้างละ เมื่อหลายเดือนก่อน เราไปเล่าเรื่องกันขำ ๆ ว่า ๆ จริง ๆ แล้วพวก Loop ที่เราใช้เขียนโปรแกรมกันอยู่ มันไม่มีอยู่จริง สิ่งที่เราใช้งานกันมันพยายาม Abstract บางอย่างออกไป วันนี้เราจะมาถอดการทำงานของ Loop จริง ๆ กันว่า มันทำงานอย่างไรกันแน่ ผ่านภาษา Assembly...