การสร้าง 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 เราควรจะตรวจสอบทุกคำสั่งที่เรารันก่อนนะว่ามันถูกต้อง หรือไม่ถูกต้องอย่างไร เพื่อไม่ให้เรารันคำสั่งผิดพลาดไปทำให้ข้อมูลสูญหายได้