Storage Spaces Direct (S2D) คืออะไร
Storage Spaces Direct (S2D) เป็นเทคโนโลยีจัดเก็บข้อมูลแบบกระจายใหม่ที่มาพร้อมกับ Windows Server 2016 S2D ช่วยให้สามารถนำดิสก์ท้องถิ่นของเซิร์ฟเวอร์หลายเครื่องมารวมกันเป็นที่เก็บข้อมูลที่ทนทานต่อข้อผิดพลาด (fault-tolerant) และขยายได้ (scalable) ซึ่งป้องกันการล้มเหลวของทั้งดิสก์เดี่ยวและเซิร์ฟเวอร์ทั้งเครื่อง ต้นทุนของซอฟต์แวร์จัดเก็บข้อมูลนี้ต่ำกว่า SAN หรือ NAS อย่างมาก เนื่องจากการขยายสเกลที่ง่ายดาย (รองรับสูงสุด 16 เซิร์ฟเวอร์และ 400 ดิสก์) และความสามารถในการใช้ดิสก์หลายประเภท (รวมถึง SSD และ NVMe) ช่วยให้ประสิทธิภาพสูงขึ้นอย่างมาก
S2D เป็นการพัฒนาต่อยอดจากเทคโนโลยี Storage Spaces ซึ่งช่วยให้สามารถรวมดิสก์ท้องถิ่นของโหนด Hyper-V Cluster เข้าด้วยกันเป็น Storage Pools ได้ สามารถสร้าง Virtual Volumes (ดิสก์เสมือน) บนดิสก์เหล่านี้และใช้เป็น Cluster Shared Volume (CSV) เพื่อจัดเก็บไฟล์ VM ของ Hyper-V และ File Shares ของ SOFS หากต้องการขยายขนาดที่เก็บข้อมูล เพียงแค่เพิ่มเซิร์ฟเวอร์หรือดิสก์ใหม่เข้าไปใน S2D โดยและ large S2D เป็นคำตอบของ Microsoft ต่อ VMware vSAN
ข้อกำหนดของ Storage Spaces Direct
ประเภทอุปกรณ์จัดเก็บที่รองรับ
- HDD ธรรมดา (SAS)
- SSD แบบ SATA / SAS
- NVMe (Non-Volatile Memory Express) คือ SSD ที่เชื่อมผ่านบัส PCI Express ซึ่งเร็วกว่า SATA/SAS แบบดั้งเดิม
ภายหลังสามารถรวมดิสก์ประเภทต่างๆ เข้าด้วยกันในอาร์เรย์ต่างๆ (ตามความเร็วหรือขนาด) เช่น จัดเก็บแคชและ Transaction Logs ของแอปพลิเคชันบน NVMe SSD ที่เร็ว และใช้ดิสก์ที่ช้ากว่าและถูกกว่าสำหรับไฟล์ขนาดใหญ่ที่ไม่ต้องการประสิทธิภาพสูงในการเข้าถึง
ข้อกำหนดของโหนดคลัสเตอร์ S2D
- Windows Server 2016 Datacenter Edition
- ติดตั้ง Role และ Feature ต่อไปนี้: Hyper-V, File Services และ Failover Clustering หมายเหตุ: อย่าลืมปิด SMB 1.0:
Remove-WindowsFeature –Name FS-SMB1 -Verbose –Restart - อย่างน้อย 2 เซิร์ฟเวอร์ในคลัสเตอร์ (แนะนำอย่างน้อย 4 โฮสต์เพื่อความทนทานสูง)
- นอกจากดิสก์ระบบแล้ว ต้องมีดิสก์ทางกายภาพอย่างน้อย 1 ดิสก์ต่อโหนด ดิสก์ทั้งหมดที่จะเพิ่มเข้า S2D ต้องเป็นดิสก์ที่ยังไม่ได้ Format (ไม่มี Partition และ Partition Table)
หมายเหตุ: หากมีจำนวนโหนดเป็นเลขคู่ในคลัสเตอร์ จะต้องกำหนดค่า Witness Node หากเป็นเลขคี่ ไม่ต้องมี Witness
วิธีเปิดใช้งาน Storage Spaces Direct
ก่อนเปิดใช้งาน S2D ตรวจสอบก่อนว่าดิสก์สามารถรวมเข้า Pool ได้:
Get-PhysicalDisk –CanPool $True | Sort Model
เปิดใช้งาน S2D ด้วย Cmdlet:
Enable-ClusterStorageSpacesDirect
Cmdlet นี้ทำงานนานประมาณ 10 นาที จะวิเคราะห์ดิสก์ทั้งหมดและประสิทธิภาพ แล้วสร้าง Cluster Pool อัตโนมัติ พร้อมสร้าง 2 Tier อัตโนมัติ: Performance และ Capacity ซึ่งมีประเภท Failover ต่างกันคือ Mirror และ Parity ตามลำดับ
3 ประเภทการให้ความทนทานของข้อมูล
- Mirrored (3) – ข้อมูลถูก Replicate แบบ Synchronous ระหว่าง 3 โหนด (หรือ 2 ในการตั้งค่าขั้นต่ำ) อ่านข้อมูลเร็วเพราะกระจายการทำงานไปทุกเซิร์ฟเวอร์
- Parity (2) – ข้อมูลพร้อมข้อมูล Parity ถูกกระจายไปยังดิสก์ต่างๆ ประหยัดพื้นที่จัดเก็บเพราะไม่ต้องเก็บหลายสำเนา
- Tiered – การผสมผสานของทั้งสองวิธีข้างต้น
การแก้ไขปัญหา Bus Type
หากเกิด Error "no disks with supported bus types found to be used for S2D" เมื่อรัน Enable-ClusterS2D อาจเป็นเพราะ Bus Type ของดิสก์เป็น RAID (ไม่รองรับใน S2D) ตรวจสอบ Bus Type:
Get-Disk | select Number, FriendlyName, OperationalStatus, Size, PartitionStyle, BusType | sort Number | ft -AutoSize
หากเป็น RAID ให้อัปเดต Driver หรือ Firmware ของ Controller (ถ้าเป็นเซิร์ฟเวอร์ HP ให้ติดตั้ง HPE Support Pack ล่าสุด) ตรวจสอบ BusType อีกครั้ง (ควรเปลี่ยนเป็น SAS)
อีกวิธีหนึ่งคือการแก้ไข Registry เพื่อเปลี่ยน Bus Type เป็น SATA สำหรับ Controller บางรุ่น:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\arcsas\Parameters
"BusType"=dword:0000000b (แทนที่จะเป็น 00000008)
หมายเหตุ 2: หากตรวจพบ SSD หรือ NVMe ในอาร์เรย์ จะถูกใช้เป็น Cache Storage อัตโนมัติ หากไม่มี จะมี Warning ระหว่างสร้าง S2D สามารถปิด Cache ได้ด้วยพารามิเตอร์ -CacheState Disabled
การตรวจสอบและจัดการ Pool
เปิด Failover Cluster Manager ตรวจสอบว่า Cluster Pool 1 ปรากฏในส่วน Storage แล้ว เลือก Pool เพื่อดูว่าประกอบด้วยดิสก์อะไรบ้าง
สามารถเปลี่ยนชื่อ Pool ได้:
Set-StoragePool –FriendlyName “Cluster Pool 1” –NewFriendlyName “S2D”
การสร้าง Volume และ Storage Tier
หากต้องการสร้าง Volume จากดิสก์เฉพาะ ให้เลือกดิสก์ LUN 3 และสร้าง Pool:
$HDDs = Get-PhysicalDisk | ? PhysicalLocation -like "*LUN 3"
New-StoragePool -StorageSubSystemFriendlyName *Cluster* -FriendlyName S2DPool -ProvisioningTypeDefault Fixed -PhysicalDisk $HDDs
แสดงรายการดิสก์ใน Pool:
Get-StoragePool -FriendlyName S2D | Get-PhysicalDisk | ft PhysicalLocation
เพิ่มดิสก์ใหม่เข้า Pool:
$HDDs = Get-PhysicalDisk | ? PhysicalLocation -like "*LUN 4"
Add-PhysicalDisk -PhysicalDisks $HDDs -StoragePoolFriendlyName S2D
หมายเหตุ: ดิสก์ที่ทำเครื่องหมายเป็น S2D จะไม่แสดงใน Disk Management Console อีกต่อไป ซึ่งเป็นเรื่องปกติ
การสร้าง Storage Tier (ถ้ามีดิสก์หลายประเภท)
สร้าง Tier แบบ Mirror สำหรับ SSD:
New-StorageTier -StoragePoolFriendlyName S2D -FriendlyName "Mirror_Tier" -MediaType SSD -ResiliencySettingName Mirror
สร้าง Tier แบบ Parity สำหรับ HDD:
New-StorageTier -StoragePoolFriendlyName S2D -FriendlyName "Parity_Tier" -MediaType HDD -ResiliencySettingName Parity
การสร้าง CSV (Cluster Shared Volume)
New-Volume –StoragePoolFriendlyName S2D –FriendlyName CSV001 –PhysicalDiskRedudancy 2 -FileSystem CSVFS_ReFS -Size 200GB
แสดงรายการ Volume และประเภท Redundancy:
Get-VirtualDisk | ft FriendlyName, ResiliencySettingName, PhysicalDiskRedundancy
CSV ใหม่จะปรากฏใน Disk Management สามารถใช้ Volume นี้จัดเก็บ VM ของ Hyper-V หรือ SOFS File Shares ได้
สรุป
ด้วย Storage Spaces Direct ของเซิร์ฟเวอร์หลายเครื่องที่มีดิสก์ท้องถิ่น สามารถสร้าง Network Storage แบบซอฟต์แวร์ได้ง่าย S2D ให้ความทนทานต่อการล้มเหลวของดิสก์หรือเซิร์ฟเวอร์คู่ใดคู่หนึ่ง (ในคลัสเตอร์ 4 โหนดขึ้นไป) คลัสเตอร์ S2D จะเริ่มกระบวนการจัดสรรข้อมูลใหม่ระหว่างอุปกรณ์ที่เหลือโดยอัตโนมัติเมื่อตรวจพบข้อผิดพลาดของดิสก์หรือเซิร์ฟเวอร์ ในสภาพแวดล้อมทดสอบสามารถยืนยันได้ว่าเมื่อถอดดิสก์ออก 2 ดิสก์ ที่เก็บข้อมูลยังคงพร้อมใช้งาน และ VM บนมันยังทำงานอยู่ วิธีการเปลี่ยนดิสก์ที่ล้มเหลวใน S2D จะอธิบายในบทความถัดไป