- หน่วยความจำถาวร (PMEM) สร้างระดับใหม่ระหว่าง DRAM และ SSDการรวมความหน่วงต่ำเข้ากับ การเก็บรักษา ไม่ระเหย
- สามารถทำงานเป็นหน่วยความจำเสริมหรือเป็นที่จัดเก็บข้อมูลความเร็วสูงในโหมด App Direct, DAX, vPMem และ vPMemDisk ได้
- ใน Windows ลินุกซ์ และ vSphere รวมเป็นแคช ดิสก์ลอจิคัล หรือ NVDIMM เสมือนเพื่อเร่งความเร็ว ฐานข้อมูล และโหลดวิกฤต
- คุณค่าของมันอยู่ที่การใช้งานเชิงกลยุทธ์ โดยที่ความเร็ว ความคงอยู่ และความจุช่วยชดเชยต้นทุนที่สูงกว่าเมื่อเทียบกับ NVMe

หน่วยความจำถาวร หรือ PMEMกลายเป็นหนึ่งในแนวคิดที่ทุกคนพูดถึงเมื่อพูดถึงประสิทธิภาพสูงสุด ฐานข้อมูลในหน่วยความจำ หรือการจำลองเสมือนขั้นสูง มันไม่ใช่แค่ "RAM อีกแบบหนึ่ง" หรือ "ดิสก์อีกประเภทหนึ่ง" แต่เป็นระดับใหม่ในลำดับชั้นของหน่วยความจำและการจัดเก็บข้อมูลที่ผสมผสานสิ่งที่ดีที่สุดของทั้งสองโลกเข้าด้วยกัน
การทำความเข้าใจว่าหน่วยความจำถาวรคืออะไร ทำงานอย่างไร และแตกต่างจาก DRAM แบบดั้งเดิม, NVMe SSD หรือที่เก็บข้อมูลบนคลาวด์อย่างไร เป็นสิ่งสำคัญในการตัดสินใจทางเทคนิคอย่างรอบรู้ ในบทความนี้ เราจะอธิบายแนวคิด สำรวจการใช้งาน (หน่วยความจำ, App Direct, vPMem, vPMemDisk ฯลฯ) วิธีการทำงานร่วมกับ Windows, Linux, vSphere และสภาพแวดล้อมคอนเทนเนอร์ รวมถึงกรณีการใช้งานจริงและข้อจำกัดต่างๆ
หน่วยความจำถาวรคืออะไร (PMEM หรือ PMem)
หน่วยความจำถาวร (Persistent Memory หรือ RAM) เป็น สื่อจัดเก็บข้อมูลแบบไม่ลบเลือน ชนิดหนึ่ง ซึ่งมีลักษณะเป็นโมดูล DIMM กล่าวคือ ติดตั้งในช่องเสียบหน่วยความจำมาตรฐานของเซิร์ฟเวอร์ควบคู่ไปกับ DRAM แตกต่างจาก RAM แบบดั้งเดิมตรงที่ หน่วยความจำถาวรจะยังคงเก็บข้อมูลไว้ได้แม้หลังจากระบบปิดเครื่อง รีบูต ไฟดับ หรือระบบล่ม
ลักษณะการทำงานของมันอยู่ระหว่างหน่วยความจำและการจัดเก็บข้อมูลกล่าวคือ มันช้ากว่า DRAM ทั่วไป แต่เร็วกว่าและมีความหน่วงต่ำกว่า SSD อย่างมาก แม้กระทั่ง NVMe ก็ตาม เนื่องจากมันถูกติดตั้งอยู่บนบัสหน่วยความจำข้อมูลจึงอยู่ใกล้กับ CPU มากกว่าหน่วยจัดเก็บข้อมูลแบบดั้งเดิมใดๆ ดังนั้นการเข้าถึงจึงวัดได้เป็นนาโนวินาที ไม่ใช่ไมโครวินาทีหรือมิลลิวินาที
โมดูลหน่วยความจำถาวร (Persistent Memory Modules หรือ PSM) มีความจุสูงกว่า DRAM มาก (ขนาดทั่วไปคือ 128 GB, 256 GB และ 512 GB ต่อโมดูล) และมีต้นทุนต่อ GB ต่ำกว่า RAM อย่างเห็นได้ชัด แม้ว่าจะยังสูงกว่า NVMe SSD ก็ตาม ดังนั้นจึงถูกใช้เป็นทางเลือกกลาง: ขยายหน่วยความจำได้อย่างมหาศาลโดยไม่ต้องจ่ายต้นทุนเต็มจำนวนของ DRAM แท้ๆ ในขณะเดียวกันก็เพิ่มความเร็วเมื่อเทียบกับหน่วยเก็บข้อมูลแบบดั้งเดิม
อีกประเด็นสำคัญคือความคงทนของข้อมูล: ข้อมูลจะยังคงถูกบันทึกไว้แม้ว่าระบบจะถูกปิดลงอย่างเป็นระบบหรือเนื่องจากไฟฟ้าดับ สิ่งนี้ทำให้ PMEM สามารถใช้เป็นหน่วยจัดเก็บข้อมูลที่รวดเร็วเป็นพิเศษสำหรับโครงสร้างที่สำคัญ (เมตาเดตา ตารางการจัดสรร ฐานข้อมูลในหน่วยความจำบันทึกธุรกรรม ฯลฯ)
พื้นฐาน PMEM และโหมดการเข้าถึง
หน่วยความจำถาวร (Persistent Memory) ไม่ได้ถูกใช้งานในลักษณะเดียวกับ RAM ทั่วไปขึ้นอยู่กับระบบปฏิบัติการและแพลตฟอร์ม มันอาจถูกแสดงออกมาในรูปแบบของหน่วยความจำแบบบล็อก หน่วยความจำแบบระบุตำแหน่งไบต์ หรือแบบผสมผสานระหว่างทั้งสองอย่าง มีแนวคิดพื้นฐานหลายประการที่เข้ามาเกี่ยวข้องในเรื่องนี้
วิธีการเข้าถึง PMEM ใน Windows และ Linux โดยทั่วไปแบ่งออกเป็นสองกลุ่มหลัก:
- การเข้าถึงแบบบล็อคโดยที่ PMEM จะทำงานเหมือนอุปกรณ์จัดเก็บข้อมูล "แบบคลาสสิก" ที่ทำหน้าที่ผ่านระบบไฟล์และสแต็กการจัดเก็บข้อมูล
- การเข้าถึงโดยตรง (ประเภท DAX)โดยจะเปิดเผยเป็นหน่วยความจำที่สามารถระบุตำแหน่งไบต์ได้ หลีกเลี่ยงพื้นที่จัดเก็บข้อมูลจำนวนมาก และลดเวลาแฝงลงอีก
ในโหมดการเข้าถึงแบบบล็อก PMEM สามารถฟอร์แมตด้วยระบบไฟล์ เช่นNTFSหรือ ReFS บน Windows หรือ EXT4/XFS บน Linux และใช้งานได้เสมือนเป็นดิสก์ที่เร็วมาก โหมดนี้เป็นโหมดที่แนะนำเมื่อความเข้ากันได้และความเรียบง่ายเป็นสิ่งสำคัญ โดยเฉพาะอย่างยิ่งสำหรับบริการที่ไม่ได้รับการปรับแต่งมาเป็นพิเศษสำหรับหน่วยความจำถาวร
ในโหมด DAXแอปพลิเคชันจะเข้าถึงข้อมูลโดยการแมปหน่วยความจำถาวรไปยังพื้นที่แอดเดรสโดยตรง การเข้าถึงนี้เป็นการเข้าถึง "หน่วยความจำ" ไม่ใช่การเข้าถึง "บล็อก" ซึ่งส่งผลให้มีความหน่วงน้อยที่สุด อย่างไรก็ตาม หากไม่ได้เขียนโปรแกรมและกำหนดค่าอย่างถูกต้อง อาจมีความเสี่ยงที่จะเกิดการสูญหายของข้อมูลในกรณีที่การเขียนไม่สมบูรณ์ ดังนั้นจึงแนะนำให้ใช้ DAX ร่วมกับกลไกต่างๆ เช่นตารางการแปลบล็อก (BTTs )
ภูมิภาค เนมสเปซ และ PMemDisk
โดยปกติแล้ว โมดูลทางกายภาพของ PMEMจะไม่ได้รับการจัดการแยกกันจากระบบปฏิบัติการ แต่จะถูกจัดกลุ่มเข้าด้วยกันเพื่อเพิ่มประสิทธิภาพ ความจุ หรือความสะดวกในการบริหารจัดการ ซึ่งเกี่ยวข้องกับแนวคิดหลายประการ
หน่วยความจำถาวร (Persistent Memory Region)คือกลุ่มของโมดูลหน่วยความจำตั้งแต่หนึ่งโมดูลขึ้นไป ซึ่งมักได้รับการกำหนดค่าในBIOSหรือ UEFI ของเซิร์ฟเวอร์ โดยส่วนใหญ่มักจะจัดเรียงแบบสลับกัน (Interleaved) ซึ่งหมายความว่าที่อยู่หน่วยความจำที่ต่อเนื่องกันจะถูกใช้ร่วมกันระหว่างหลายโมดูลเพื่อเพิ่มแบนด์วิดท์ที่มีอยู่
บนแพลตฟอร์มอย่าง Windows Server และ Azure Local นั้น จะมีการกำหนดดิสก์เชิงตรรกะที่เรียกว่า PmemDisk ไว้ ในพื้นที่เหล่านั้นPmemDisk เป็นเพียงช่วงของแอดเดรสหน่วยความจำที่ไม่ลบเลือนซึ่งต่อเนื่องกัน และถูกนำเสนอต่อระบบเสมือนว่าเป็นไดรฟ์ดิสก์หรือ LUN
แต่ละโมดูลหน่วยความจำถาวรจะมีพื้นที่จัดเก็บแท็ก (Label Storage Area, LSA) ซึ่งจัดเก็บข้อมูลเมตาดาต้าการกำหนดค่า (เนมสเปซ, การเป็นสมาชิกภูมิภาค ฯลฯ) เครื่องมือต่างๆ เช่น cmdlets จาก PowerShell (Get-PmemDisk, Get-PmemPhysicalDevice, Get-PmemUnusedRegionฯลฯ) ช่วยให้คุณเห็นว่าโมดูลทางกายภาพใดบ้างที่มีส่วนร่วมใน PmemDisk แต่ละตัว ตรวจสอบสถานะ และสร้างหรือลบดิสก์ลอจิคัลหน่วยความจำถาวร
ในสภาพแวดล้อม ESXi/vSphereแนวคิดจะคล้ายกัน แต่คำศัพท์จะเปลี่ยนไป โดยจะหมายถึงเนมสเปซ PMemที่ไฮเปอร์ไวเซอร์ตรวจจับและรวมเข้าเป็นวอลุ่มเชิงตรรกะโดยใช้ตาราง GPT วอลุ่มเหล่านี้จะถูกเมานต์เป็นดาต้าสโตร์ PMem ซึ่งจะถูกเปิดเผยให้กับเครื่องเสมือนในรูปแบบ vPMem หรือ vPMemDisk
ตารางการแปลแบบบล็อก (BTT) และความปลอดภัยของข้อมูล
ความแตกต่างที่สำคัญอย่างหนึ่งระหว่าง PMEM และ SSDคือ โมดูลหน่วยความจำถาวรไม่มีระบบป้องกัน "การเขียนที่ไม่สมบูรณ์" หรือการเขียนที่ขาดหาย เหมือนกับ ที่พบได้ในแฟลชไดรฟ์ระดับองค์กรหลายรุ่น
หากเกิดไฟฟ้าดับหรือระบบล่มระหว่างการเขียนข้อมูล ข้อมูลใหม่บางส่วนอาจถูกเขียนลงไปในขณะที่ข้อมูลเก่าบางส่วนยังคงอยู่ ทำให้เซกเตอร์อยู่ในสถานะที่ไม่สอดคล้องกัน เพื่อลดความเสี่ยงนี้ จึง มีการใช้ ตารางการแปลบล็อก (Block Translation Table หรือ BTT)ซึ่งเป็นเลเยอร์ที่ให้ความหมายของการอัปเดตเซกเตอร์แบบอะตอมิก
BTT ทำหน้าที่เป็นตัวแปลระหว่างที่อยู่เชิงตรรกะและที่อยู่เชิงกายภาพทำให้มั่นใจได้ว่าการเขียนจะปรากฏต่อแอปพลิเคชันในรูปแบบการเขียนแบบ "บล็อกแบบดั้งเดิม" กล่าวคือ การเขียนจะเสร็จสมบูรณ์อย่างสมบูรณ์หรือจะไม่ถูกมองเห็น การเปิดใช้งาน BTT เป็นสิ่งที่แนะนำอย่างยิ่งทั้งในโหมดการเข้าถึงแบบบล็อกและโหมด DAX โดยเฉพาะอย่างยิ่งเนื่องจากแม้ว่าข้อมูลของแอปพลิเคชันจะถูกเข้าถึงโดยใช้ความหมายของหน่วยความจำ แต่เมตาเดต้าของระบบไฟล์ยังคงใช้โมเดลแบบบล็อกอยู่
ใน Windows BTT เป็นคุณสมบัติของ PmemDiskดังนั้นจึงต้องเปิดใช้งานตั้งแต่ตอนสร้าง (เช่น ด้วย New-VHD ... -AddressAbstractionType BTT) หรือแปลงฮาร์ดไดรฟ์ที่มีอยู่ให้เป็น BTT ด้วย Convert-VHDหลังจากการแปลง ขอแนะนำให้สร้างตัวระบุเนมสเปซใหม่ด้วย Set-VHD -ResetDiskIdentifier เพื่อหลีกเลี่ยงความขัดแย้งหากดิสก์ทั้งสองอยู่ร่วมกันในเครื่องเสมือนเครื่องเดียวกัน
ฮาร์ดแวร์หน่วยความจำถาวร: NVDIMM และ Optane
หน่วยความจำถาวรไม่ใช่เทคโนโลยีทางกายภาพเพียงอย่างเดียวแต่เป็นกลุ่มของโซลูชันที่ทำงานคล้ายคลึงกันในมุมมองของระบบปฏิบัติการ โซลูชันที่รู้จักกันดีที่สุด ได้แก่:
- NVDIMM-Nโมดูลที่รวม DRAM เข้ากับ NAND flash สำรองด้วยแบตเตอรี่หรือ supercapacitor เมื่อเปิดเครื่อง ข้อมูลจะถูกโหลดลงใน DRAM เมื่อปิดเครื่องหรือไฟดับ ข้อมูลจะถูกเขียนลงในแฟลช
- อินเทล หน่วยความจำถาวร Optane DC (DCPMM):โมดูลที่ใช้เทคโนโลยี 3D XPoint ออกแบบมาให้มีความหน่วงใกล้เคียงกับหน่วยความจำและมีความจุที่เหนือกว่า DRAM มาก
ใน Windows Server 2016 และ 2019, Azure Local และแพลตฟอร์มอื่นๆการรองรับโมดูลเหล่านี้จะแตกต่างกันไปตามเวอร์ชัน แต่โดยทั่วไปแล้วหลักการจะเหมือนกัน คือ สามารถใช้เป็นหน่วยความจำถาวรแบบบริสุทธิ์ (App Direct) หรือเป็นหน่วยความจำ "ขยาย" (โหมดหน่วยความจำ) ได้
Optane DC PMem อนุญาตให้ใช้งานโหมดหลักได้สามโหมดซึ่งโดยปกติจะกำหนดค่าใน BIOS ของเซิร์ฟเวอร์:
- โหมดหน่วยความจำPMEM ทำหน้าที่เป็นหน่วยความจำหลักความจุสูง ในขณะที่ DRAM ใช้เป็นแคชความเร็วสูงสำหรับข้อมูลที่ใช้บ่อยที่สุด ในโหมดนี้ หน่วยความจำจะทำงานแบบระเหย หากไฟฟ้าดับ ข้อมูลจะสูญหาย
- โหมดแอปโดยตรงPMEM ถูกเปิดเผยเป็นหน่วยความจำถาวรแบบไม่ลบเลือน ซึ่งระบบปฏิบัติการสามารถเข้าถึงได้ในรูปแบบพื้นที่จัดเก็บข้อมูลหรือหน่วยความจำแบบระบุตำแหน่งไบต์ โหมดนี้เหมาะอย่างยิ่งสำหรับฐานข้อมูลภายในหน่วยความจำ พื้นที่จัดเก็บข้อมูลความเร็วสูง และเวิร์กโหลดที่ไวต่อความคงอยู่
- โหมดผสมส่วนหนึ่งของโมดูลได้รับการสงวนไว้สำหรับโหมดหน่วยความจำ และอีกส่วนหนึ่งสำหรับ App Direct ช่วยให้รักษาสมดุลระหว่างความจุหน่วยความจำระเหยที่ขยายได้และพื้นที่จัดเก็บถาวรได้
สิ่งสำคัญคืออย่าสับสนระหว่าง "โหมดหน่วยความจำ" กับ DAXโหมดหน่วยความจำจะมอง PMEM เป็น RAM ที่ทำงานช้ากว่าและสูญเสียคุณสมบัติการคงอยู่ของข้อมูล ในขณะที่ DAX เป็นโหมดการเข้าถึงวอลุ่มแบบถาวรที่เก็บรักษาข้อมูลไว้ได้แม้หลังจากการรีบูตเครื่อง
PMEM ในสภาพแวดล้อมเสมือนจริง (vSphere และ ESXi)
ใน vSphere นั้น หน่วยความจำถาวรได้รับการสนับสนุนมาตั้งแต่เวอร์ชัน 6.7และเวอร์ชันที่ใหม่กว่า ในสภาพแวดล้อมเหล่านี้ โมดูล PMEM ของโฮสต์จะทำหน้าที่เป็นที่เก็บข้อมูลภายในความเร็วสูงที่เครื่องเสมือนสามารถเข้าถึงได้สองวิธี
vPMem (หน่วยความจำถาวรเสมือน)เปิดเผย PMEM ให้กับระบบปฏิบัติการของเครื่องเสมือนใน รูปแบบของ NVDIMM เสมือนจากมุมมองของเครื่องเสมือน จะปรากฏราวกับว่าเครื่องโฮสต์มีโมดูล NVDIMM จริง ทำให้ระบบปฏิบัติการและแอปพลิเคชันของเครื่องเสมือนสามารถเข้าถึงหน่วยความจำถาวรในโหมดที่สามารถระบุที่อยู่ได้ทีละไบต์
vPMemDisk (ดิสก์หน่วยความจำถาวรเสมือน)ทำงานแตกต่างออกไป: หน่วยความจำถาวรจะถูกแสดงเป็นดิสก์ SCSI เสมือน ซึ่งเนื้อหาจริง ๆ แล้วจัดเก็บอยู่ในดาต้าสโตร์ PMem ของโฮสต์ ตัวเลือกนี้มีประโยชน์มากสำหรับระบบปฏิบัติการรุ่นเก่าหรือแอปพลิเคชันที่ใช้งานเฉพาะดิสก์เท่านั้น
หน่วยความจำ PMEM จะถูกสงวนไว้สำหรับเครื่องเสมือนเมื่อมีการสร้างดิสก์ vPMem หรือเพิ่มอุปกรณ์ vNVDIMM และจะยังคงถูกสงวนไว้สำหรับเครื่องเสมือนนั้นไม่ว่าเครื่องจะเปิดหรือปิดอยู่ จนกว่าจะถูกลบหรือย้าย ในคลัสเตอร์ ปริมาณ PMEM ที่ใช้โดยเครื่องเสมือนทั้งหมดต้องไม่เกินปริมาณรวมที่มีอยู่ทั่วทั้งกลุ่มโฮสต์
ในส่วนของความพร้อมใช้งานสูงและการย้ายระบบมีรายละเอียดปลีกย่อยหลายประการ: VM ที่มี vPMem สามารถย้ายไปยังโฮสต์ที่มี PMEM พร้อมใช้งานเท่านั้น ในขณะที่ VM ที่มี vPMemDisk สามารถย้ายไปยังโฮสต์ที่ไม่มี PMEM ได้หากมีการทำสำเนาดิสก์หรือย้ายไปยังที่เก็บข้อมูลประเภทอื่นโดยใช้ Storage vMotion
ประเด็นสำคัญคือ PMEM เป็นพื้นที่จัดเก็บข้อมูลภายใน เครื่องโฮสต์ และ โซลูชันการสำรองข้อมูล หรือการจำลองข้อมูล ที่ใช้พื้นที่จัดเก็บข้อมูลแบบดั้งเดิมอาจใช้งานไม่ได้โดยตรง นอกจากนี้ ในกรณีที่เครื่องโฮสต์ล้มเหลวอย่างรุนแรง อาจเกิดการสูญหายของข้อมูลได้หากไม่ได้ใช้กลยุทธ์การป้องกันที่เหมาะสม
PMEM บน Windows Server, Azure Local และ Storage Spaces Direct
Windows Server 2019 และ Azure Localผสานรวมหน่วยความจำถาวรเข้ากับStorage Spaces Direct (S2D)ซึ่งเป็นเทคโนโลยีจัดเก็บข้อมูลแบบกำหนดด้วยซอฟต์แวร์ (SDS) หลักในสภาพแวดล้อมเหล่านี้ โดยที่ PMEM สามารถทำหน้าที่เป็นเลเยอร์แคชที่เร็วเป็นพิเศษสำหรับหน่วยจัดเก็บข้อมูลอื่นๆ ได้
Storage Spaces Direct รู้จักไดรฟ์หลักสี่ประเภทได้แก่ PMem, NVMe, SSD และ HDD โดยระบบจะกำหนดค่าโดยอัตโนมัติว่าควรใช้ไดรฟ์ประเภทใดเป็นแคชและไดรฟ์ใดใช้สำหรับการจัดเก็บข้อมูล โดยเรียงลำดับตามความสำคัญดังนี้: PMem > NVMe > SSD > HDD
ตัวอย่างการจับคู่ที่พบได้ทั่วไป ได้แก่ :
- PMem + NVMe + HDD: PMem เป็นแคชด้านบน, NVMe และ HDD เป็นความจุ
- NVMe + SSD: NVMe เป็นแคชแบบเขียนอย่างเดียวสำหรับ SSD
- SSD + HDD: SSD เป็นแคชอ่าน/เขียนสำหรับ HDD
เมื่อแคชถูกวางไว้เหนือแฟลชไดรฟ์ (เช่น NVMe บน SSD)จะถูกกำหนดค่าให้อยู่ใน โหมด เขียนอย่างเดียวการอ่านจะให้บริการโดยตรงจากไดรฟ์จัดเก็บข้อมูลเนื่องจากความหน่วงแฝงต่ำมากอยู่แล้ว ทำให้แคชสามารถมุ่งเน้นไปที่การรวมการเขียนและลดการสึกหรอได้
เมื่อแคชอยู่เหนือฮาร์ดดิสก์ (HDD ) มันจะทำงานใน โหมด อ่านและเขียนโดยจะเก็บข้อมูลที่อ่านบ่อยเพื่อหลีกเลี่ยงการเข้าถึงดิสก์แบบสุ่ม และจะดูดซับข้อมูลการเขียนจำนวนมาก โดยจัดลำดับการทำงานใหม่เพื่อให้ข้อมูลไปถึงดิสก์ในรูปแบบที่เป็นลำดับมากที่สุดเท่าที่จะเป็นไปได้
ในสถานการณ์ที่มีการใช้งานไดรฟ์ NVMe, SSD และ HDD ผสมกันไดรฟ์ NVMe มักจะทำหน้าที่เป็นแคชสำหรับทั้ง SSD (เขียนได้อย่างเดียว) และ HDD (อ่านและเขียนได้) ระบบจะเชื่อมโยงไดรฟ์แคชกับไดรฟ์ความจุแบบไดนามิกในอัตราส่วน 1:N และปรับสมดุลการจัดสรรใหม่เมื่อมีการเพิ่มหรือถอดไดรฟ์ออก
หากไดรฟ์แคช PMem หรือ NVMe เกิดความล้มเหลวข้อมูลที่ยังไม่ได้ดาวน์โหลดไปยังไดรฟ์ความจุจะสูญหายเฉพาะบนเซิร์ฟเวอร์นั้นแต่สำเนาสำรองบนโหนดคลัสเตอร์อื่นๆ (เช่น ในการกำหนดค่าแบบมิเรอร์สามชั้น) จะช่วยให้ Storage Spaces Direct สามารถสร้างข้อมูลขึ้นมาใหม่ได้โดยอัตโนมัติ
หน่วยความจำถาวรใน Linux (ตัวอย่าง: Red Hat Enterprise Linux)
ในสภาพแวดล้อม Linux ขององค์กรเช่น RHELPMEM มักจะถูกนำเสนอเป็นอุปกรณ์ /dev/pmemX หรือเป็นอุปกรณ์ NVDIMM ที่ได้รับการจัดการผ่าน เครื่องมือเคอร์เนล (ตัวอย่างเช่น ndctl).
Red Hat และดิสทริบิวชันอื่นๆอนุญาตให้ใช้ NVDIMM ในลักษณะดังต่อไปนี้:
- การจัดเก็บแบบบล็อก แบบดั้งเดิม ฟอร์แมตด้วย EXT4, XFS เป็นต้น
- หน่วยความจำที่สามารถระบุที่อยู่แบบไบต์ได้ ในโหมด DAX จะทำการติดตั้งระบบไฟล์ที่มีการรองรับโดยตรงบนอุปกรณ์ pmem
- อุปกรณ์รูทระบบการติดตั้งระบบปฏิบัติการบน NVDIMM เพื่อลดเวลาในการบูตอย่างมาก รองเท้า.
เช่นเดียวกับ Windowsหน่วยความจำระดับจัดเก็บข้อมูล ( SCM ) หมายถึงอุปกรณ์ประเภทนี้ที่รวมการจัดเก็บข้อมูลและหน่วยความจำเข้าด้วยกัน กรณีการใช้งานทั่วไป ได้แก่ ฐานข้อมูลที่มีความต้องการสูงมาก แคชประสิทธิภาพสูง คิวข้อความ และระบบที่ต้องการลดเวลาในการกู้คืน หลังจากรีบูตให้เหลือน้อยที่สุด
PMEM เทียบกับ DRAM, SSD, HDD และ NVMe
เพื่อให้เข้าใจถึงคุณค่าของ PMEM อย่างแท้จริงเราควรนำไปเปรียบเทียบกับเทคโนโลยีที่เราใช้กันอยู่ทุกวัน
DRAMเป็นหน่วยความจำอเนกประสงค์ที่เร็วที่สุดในเซิร์ฟเวอร์ แต่ก็มีราคาแพงที่สุดต่อกิกะไบต์และไม่เสถียร ขนาด DIMM ทั่วไป (16, 32, 64, 128 หรือ 256 GB) จะมีราคาสูงขึ้นตามความจุที่เพิ่มขึ้น ทำให้จำกัดปริมาณที่สามารถติดตั้งได้ก่อนที่ราคาจะสูงเกินไป
SSD และ NVMeให้ความเสถียรและประสิทธิภาพสูงกว่า HDD อย่างมาก แต่ก็ยังเป็นอุปกรณ์จัดเก็บข้อมูลที่อยู่ "ไกล" จาก CPU กล่าวคือ เชื่อมต่อผ่าน SATA, SAS หรือ PCIe ไม่ได้อยู่บนบัสหน่วยความจำ เวลาในการเข้าถึงข้อมูล แม้จะดี แต่ก็ไม่เทียบเท่ากับ PMEM ซึ่งมีลักษณะการทำงานคล้ายกับ RAM มากกว่า
ฮาร์ดดิสก์ (HDD)ยังคงได้เปรียบในแง่ของต้นทุนต่อเทห์เฟอร์และความจุ แต่ความหน่วงและประสิทธิภาพการอ่านเขียนแบบสุ่มนั้นล้าหลังกว่าหน่วยความจำแบบแฟลช (DRAM) และหน่วยความจำแบบ PMEM อย่างมาก ดังนั้น ในสถาปัตยกรรมสมัยใหม่ จึงมักสงวนฮาร์ดดิสก์ไว้สำหรับชั้นข้อมูลที่ใช้งานไม่บ่อย และวางไว้ต่ำกว่าชั้นแฟลชและ/หรือ PMEM
PMEM อยู่ระหว่าง DRAM และ NVMe : ช้ากว่าหน่วยความจำทั่วไปเล็กน้อย แต่มีขนาดโมดูลที่ใหญ่กว่ามาก ราคาต่อ GB ที่แข่งขันได้มากกว่า และข้อดีคือการเก็บรักษาข้อมูลได้ดีกว่า เมื่อเทียบกับ SSD และ NVMe แล้ว PMEM มีความหน่วงต่ำกว่าและเข้าถึงข้อมูลได้ในระดับไบต์ ทำให้เหมาะสำหรับงานที่ต้องประมวลผลในหน่วยความจำ แต่มีราคาสูงกว่า
กรณีการใช้งานหน่วยความจำถาวร
แอปพลิเคชันที่ได้รับประโยชน์สูงสุดจาก PMEMคือแอปพลิเคชันที่ต้องการทั้งความเร็วและความทนทานของข้อมูล หรือแอปพลิเคชันที่ต้องการหน่วยความจำจำนวนมากโดยไม่ทำให้ต้นทุนพุ่งสูงขึ้น
ตัวอย่างการใช้งานทั่วไป ได้แก่ :
- ฐานข้อมูลในหน่วยความจำ เช่น SAP HANA, Oracle In-Memory, REDIS หรือ MSSQL พร้อมการเพิ่มประสิทธิภาพสำหรับ PMEM
- ภาระงานข้อมูลขนาดใหญ่ (Hadoop, Spark, การวิเคราะห์ขนาดใหญ่) ซึ่งการมีชุดข้อมูลขนาดใหญ่พร้อมอยู่ในหน่วยความจำเมื่อเริ่มต้นใช้งานถือเป็นสิ่งสำคัญ
- แพลตฟอร์มเสมือนจริง ผู้ที่ต้องการลดความล่าช้าในการจัดเก็บข้อมูลสำหรับ VM ที่สำคัญบางตัว
- การเรียนรู้ของเครื่องจักรและ IAซึ่งการเข้าถึงชุดการฝึกอบรมที่รวดเร็วเป็นพิเศษสามารถลดเวลาการฝึกอบรมได้อย่างมาก
- การจัดลำดับจีโนม และการวิเคราะห์ทางวิทยาศาสตร์ โดยจะจัดการชุดข้อมูลขนาดใหญ่ที่มีความอ่อนไหวต่อเวลาในการประมวลผลเป็นอย่างมาก
- การประมวลผลข้อมูล IoT แบบเรียลไทม์ เพื่อตอบสนองต่อเหตุการณ์ใหญ่ๆ ที่เกิดจากเซ็นเซอร์ได้อย่างรวดเร็ว
- การตัดต่อและเรนเดอร์วิดีโอระดับมืออาชีพด้วยการเร่งความเร็วในการเข้าถึงไฟล์ขนาดใหญ่และโครงการที่ซับซ้อน
- เกมและเอ็นจิ้นกราฟิก ในสภาพแวดล้อมการเล่นเกมบนเซิร์ฟเวอร์หรือบนคลาวด์ เพื่อลดเวลาในการโหลดสำหรับระดับและทรัพยากร
ในระดับโครงสร้างพื้นฐานยังมีการใช้เป็นเลเยอร์แคชถาวรบน NVMe/SSD/HDD ในระบบต่างๆ เช่น Storage Spaces Direct เพื่อให้มั่นใจว่าข้อมูลที่เขียนหรืออ่านใหม่จะอยู่ใกล้กับ CPU มากที่สุดเท่าที่จะเป็นไปได้โดยไม่ลดทอนความทนทานต่อความผิดพลาด
การจัดเก็บข้อมูลถาวรในแอปพลิเคชันและคอนเทนเนอร์
เมื่อเราพูดถึงพื้นที่จัดเก็บข้อมูลถาวรในโลกของเว็บแอปพลิเคชันและคอนเทนเนอร์ จุดสนใจไม่ได้อยู่ที่ PMEM เพียงอย่างเดียว แต่รวมถึงกลไกใดๆ ก็ตามที่ช่วยให้มั่นใจได้ว่าข้อมูลจะยังคงอยู่แม้จะมีการรีบูต การปรับใช้ และการอัปเดต
ในแอปพลิเคชันแบบโมโนลิธแบบดั้งเดิมเซิร์ฟเวอร์และระบบจัดเก็บข้อมูลมักจะรวมเข้าด้วยกัน ดังนั้นการเข้าถึงดิสก์ภายในเครื่องหรือ SAN จึงค่อนข้างตรงไปตรงมา แต่เมื่อเราเปลี่ยนไปใช้สถาปัตยกรรมแบบกระจายหรือไมโครเซอร์วิสในหลายภูมิภาค สิ่งต่างๆ ก็จะซับซ้อนมากขึ้น: ระบบจัดเก็บข้อมูลต้องพร้อมใช้งานทั่วโลก รักษาความสม่ำเสมอ และทนต่อความล้มเหลวบางส่วนได้
ด้วยการถือกำเนิดของคอนเทนเนอร์ (Docker, Kubernetes ฯลฯ) ปัญหาจึงทวีความรุนแรงขึ้น คอนเทนเนอร์โดยธรรมชาติแล้วเป็นสิ่งที่ไม่คงทนและไม่มีสถานะ หากคอนเทนเนอร์ถูกทำลาย ทุกสิ่งที่จัดเก็บไว้เฉพาะในระบบไฟล์ภายในก็จะหายไปด้วย
นั่นคือเหตุผลที่ต้องใช้ Volume และ Persistent Volume Volumeมาตรฐานใน Docker สามารถคงอยู่ได้แม้คอนเทนเนอร์จะรีบูต แต่ถ้าคอนเทนเนอร์ถูกลบและ Volume ที่เกี่ยวข้องถูกลบ ข้อมูลก็จะหายไป ในทางตรงกันข้าม Persistent Volume (หรือ Bind Mount )จะอยู่ภายนอกระบบไฟล์ของคอนเทนเนอร์ บนโฮสต์หรือแบ็กเอนด์จัดเก็บข้อมูลระยะไกล และจะยังคงอยู่แม้ว่าแอปพลิเคชันจะถูกสร้างขึ้นใหม่ก็ตาม
แพลตฟอร์มอย่าง KubernetesนำเสนอแนวคิดของPersistentVolume (PV)และPersistentVolumeClaim (PVC)เพื่อแยกส่วนการจัดเก็บข้อมูลทางกายภาพ (ซึ่งอาจเป็น HDD, SSD, NAS, SAN, NFS, โซลูชันคลาวด์ หรือแม้แต่ PMEM บนโฮสต์) และอนุญาตให้แอปพลิเคชันร้องขอ "พื้นที่จัดเก็บข้อมูลถาวรขนาด x กิกะไบต์" โดยไม่ต้องรู้ว่ามีอะไรอยู่เบื้องหลัง
ผู้ให้บริการอย่าง Kinsta หรือผู้ให้บริการที่คล้ายกันใช้ Kubernetes volumes แบบถาวร
เพื่อให้แอปพลิเคชันที่โฮสต์อยู่สามารถเก็บรักษาข้อมูลได้อย่างน่าเชื่อถือ จากมุมมองของนักพัฒนา ขนาดและประเภทของวอลุ่มจะถูกกำหนดไว้ และแพลตฟอร์มจะจัดการการแมปไปยังพื้นที่จัดเก็บข้อมูลทางกายภาพที่ถูกต้อง
ในบริบทนี้ PMEM สามารถทำหน้าที่เป็นแบ็กเอนด์ที่เร็วเป็นพิเศษสำหรับวอลุ่มถาวรเฉพาะ (เช่น สำหรับฐานข้อมูลที่เน้นการรับส่งข้อมูล) ในขณะที่ข้อมูลส่วนที่เหลือจะถูกจัดเก็บไว้ใน SSD หรือ HDD ซึ่งจะสร้างสมดุลระหว่างประสิทธิภาพและต้นทุน
ประเภทและสถาปัตยกรรมของที่เก็บข้อมูลถาวร
นอกเหนือจากฮาร์ดแวร์เฉพาะแล้วพื้นที่จัดเก็บข้อมูลถาวรยังสามารถจัดระเบียบเป็นสถาปัตยกรรมที่แตกต่างกันได้ โดยแต่ละแบบเหมาะสมกับรูปแบบการใช้งานที่เฉพาะเจาะจง
สถาปัตยกรรมเชิงวัตถุจัดเก็บข้อมูลในรูปแบบของวัตถุที่มีเมตาเดตาและตัวระบุ แทนที่จะเป็นบล็อกหรือไฟล์ เหมาะสำหรับข้อมูลที่ไม่มีโครงสร้าง (เช่น รูปภาพ วิดีโอ เอกสาร) และมีการใช้งานอย่างแพร่หลายในระบบคลาวด์สาธารณะ (เช่น S3, Azure Blob Storage เป็นต้น) หัวใจสำคัญคือความสามารถในการขยายขนาดและความทนทาน มากกว่าความหน่วงต่ำเป็นพิเศษ
สถาปัตยกรรมแบบบล็อกนำเสนอการจัดเก็บข้อมูลในรูปแบบบล็อกที่มีขนาดคงที่และสามารถระบุที่อยู่ได้ เป็นรูปแบบคลาสสิกของดิสก์และ LUN และเป็นที่นิยมสำหรับHPC, ฐานข้อมูล, การตัดต่อวิดีโอระดับมืออาชีพ และเกมเนื่องจากให้ความหน่วงต่ำ ประสิทธิภาพสูง และการทำงาน I/O แบบขนานที่ควบคุมได้ดี
โครงสร้างไฟล์นั้นอิงตามระบบไฟล์ที่ใช้ร่วมกันหรือระบบไฟล์ภายในเครื่อง (EXT4, NTFS, NFS, SMB เป็นต้น) ซึ่งสะดวกสำหรับแอปพลิเคชันที่ต้องการจัดการไฟล์ด้วยเส้นทาง สิทธิ์การเข้าถึง และลำดับชั้น เช่น ระบบจัดการเนื้อหาเว็บไซต์ แพลตฟอร์มการทำงานร่วมกัน ระบบจัดการเนื้อหามัลติมีเดีย เป็นต้น
PMEM เหมาะที่สุดสำหรับโมเดลหน่วยความจำแบบบล็อกและไบต์แต่สามารถบูรณาการเข้ากับระบบไฟล์ หรือแม้กระทั่งเป็นแบ็กเอนด์ที่เร็วเป็นพิเศษสำหรับโซลูชันเชิงวัตถุ โดยทำหน้าที่เป็นแคชเมตาเดตาหรือแคชข้อมูลที่ใช้งานบ่อย
ข้อดีและข้อจำกัดของหน่วยความจำถาวร
ข้อดีหลักๆ ของ PMEMที่มักถูกกล่าวถึงในแวดวงธุรกิจ ได้แก่:
- ประสิทธิภาพที่เหนือกว่ามาก เมื่อเทียบกับการเก็บข้อมูลแบบดั้งเดิม โดยเฉพาะการอ่าน/เขียนแบบสุ่มจำนวนน้อย
- เวลาแฝงที่ลดลงโดยอยู่บนบัสหน่วยความจำและสามารถเข้าถึงได้เป็นไบต์
- ไม่มีความผันผวน:ข้อมูลจะยังคงอยู่แม้ในกรณีที่ไฟฟ้าดับ ล้มเหลว หรือเริ่มระบบใหม่ (ในโหมดถาวร)
- ความสามารถในการปรับขนาดหน่วยความจำที่มากขึ้น โดยมีต้นทุนต่อ GB ต่ำกว่า DRAM
- TCO ที่ดีขึ้น สำหรับสถานการณ์ที่การอัปเกรด DRAM จะมีราคาแพงเกินไป แต่ SSD NVMe ไม่สามารถให้เวลาแฝงตามต้องการ
- ตัวเลือกการรักษาความปลอดภัยขั้นสูง โดยสามารถเข้ารหัสข้อมูลในโมดูลและให้การป้องกันหน่วยความจำ "ร้อน" มากขึ้น
อย่างไรก็ตาม มันก็มีข้อเสียและความท้าทายอยู่เช่นกัน :
- ต้นทุนสูงกว่า SSD และ NVMeดังนั้นจึงไม่สมเหตุสมผลที่จะแทนที่ระบบจัดเก็บข้อมูลทั้งหมดด้วย PMEM
- ความเข้ากันได้ จำกัด กับฮาร์ดแวร์ ระบบปฏิบัติการ หรือไฮเปอร์ไวเซอร์บางอย่าง โดยเฉพาะในสภาพแวดล้อมรุ่นเก่า
- ความสามารถและข้อเสนอผลิตภัณฑ์ที่ลดลงโดยเฉพาะอย่างยิ่งหลังจากการยุติสายการผลิตอย่าง Intel Optane
- ความซับซ้อนในการรับเลี้ยงบุตรบุญธรรมหากต้องการใช้ประโยชน์สูงสุด คุณต้องปรับแต่งแอปพลิเคชัน ปรับระบบไฟล์ และมีกลยุทธ์การคงอยู่ที่ชัดเจน
ความเป็นจริงคือ หน่วยความจำถาวรจะมีประโยชน์มากกว่าเมื่อนำไปใช้อย่างมีกลยุทธ์เช่น ใช้เป็นแคชที่เร็วเป็นพิเศษ เป็นระดับความจุระดับกลางระหว่าง DRAM และ NVMe หรือใช้เป็นส่วนสนับสนุนเฉพาะสำหรับฐานข้อมูลและเวิร์กโหลดในหน่วยความจำ ซึ่งความเร็วและการคงอยู่ของข้อมูลจะชดเชยต้นทุนได้
แม้ว่าผลิตภัณฑ์ที่เป็นสัญลักษณ์อย่าง Intel Optane จะถูกยกเลิกการผลิตไปแล้วแต่ความต้องการที่ PMEM ตอบสนองยังคงอยู่ นั่นคือ หน่วยความจำที่มากขึ้น เร็วขึ้น ราคาถูกกว่า DRAM และมีความคงทน คาดว่าหน่วยความจำระดับจัดเก็บข้อมูลรุ่นใหม่ เทคโนโลยีการซ้อนหน่วยความจำ และโซลูชันแบบไฮบริด จะยังคงสำรวจพื้นที่ระหว่าง RAM แบบดั้งเดิมและอุปกรณ์จัดเก็บข้อมูลขนาดใหญ่ต่อไป
หน่วยความจำแบบถาวร (Persistent In-Memory Storage: PMEM) และแนวคิดที่กว้างขึ้นของการคงอยู่ของข้อมูล ได้กลายเป็นส่วนสำคัญของโครงสร้างพื้นฐานสมัยใหม่: เทคโนโลยีเหล่านี้ช่วยให้สามารถสร้างระบบที่เร็วขึ้น ปรับขนาดได้ และมีความยืดหยุ่นมากขึ้น โดยมีเงื่อนไขว่าต้องเข้าใจโหมด ข้อจำกัด และกรณีการใช้งานที่เหมาะสม และต้องนำมาผสมผสานอย่างสมดุลกับ HDD, SSD, NVMe และที่เก็บข้อมูลแบบกระจาย
นักเขียนผู้หลงใหลเกี่ยวกับโลกแห่งไบต์และเทคโนโลยีโดยทั่วไป ฉันชอบแบ่งปันความรู้ผ่านการเขียน และนั่นคือสิ่งที่ฉันจะทำในบล็อกนี้ เพื่อแสดงให้คุณเห็นสิ่งที่น่าสนใจที่สุดเกี่ยวกับอุปกรณ์ ซอฟต์แวร์ ฮาร์ดแวร์ แนวโน้มทางเทคโนโลยี และอื่นๆ เป้าหมายของฉันคือการช่วยคุณนำทางโลกดิจิทัลด้วยวิธีที่เรียบง่ายและสนุกสนาน