---
# System prepended metadata

title: Nutanix
tags: [HCI]

---

# Nutanix (AOS & AHV)
:::success
文件產出單位:BQ53E0 製作人:林穎厚
:::
## 一、架構說明

Nutanix 核心運作元件
A. AOS Storage 高效能分散式儲存
B. AHV Virtualization 虛擬化平台(vmware、HyperV都支援)
C. Prism 統一主控台

![NHCF_M1_05](https://hackmd.io/_uploads/ryN_M7YTJl.jpg)

AOS Storage 採用分散式儲存架構(簡稱DSF)

**1.AOS Storage 架構**
  
   ![image](https://hackmd.io/_uploads/rysTJ9vp1e.png =x)
 資料結構如下:
 DSF與Hypervisor 間對應示意圖
 ![image](https://hackmd.io/_uploads/H1K2fPMHll.png)

1. Storage Pool
   Key Role:Group of physical devices
   說明: 一個儲存池是一組物理儲存設備，包括節點內的PCID SSD、SSD、HDD。它可以橫跨多的Nutanix節點並且隨著叢集擴展，大部分的情境下建議只配置單一Storage Pool。
   
2. Container
   Key Role:Group of VMS/files
   說明: 容器是Storage Pool 透過邏輯分割生成，內容包含一個群組的VM或者資料應用，在單獨的使用情境下容器都是一對一的情境配置使用(NFS/SMB)；值得注意一部分選項設定取決於容器層級，如:RF(資料保護)。
   
3. vDisk
   Key Role:vDisk
   說明: AOS 內包含.vmdks和VM 硬碟或者任何檔案大於等於512KB都是vDISK，vDISK 邏輯上由構成Block Map 的物件 vBlocks所組成。
   AOS 的虛擬硬碟並沒有限制vDisk大小，從AOS 4.6版本開始 vDisk 由64 Bit組成，意味著vDisk最大的容量可達9EB。
   
   vDisk結構示意圖:
   ![image](https://hackmd.io/_uploads/HyVXmvGrxg.png)
   
   A.vBlock
   Key Role:占用vDISK 1MB大小區塊
   說明:vBlock 是組成vDisk 一塊1MB大小的虛擬位址空間，這些 vBlock 會對應到以檔案形式儲存在磁碟上的擴充區 (extent) 群組。
   
   B.Extent 
   Key Role:連續的邏輯數據資料
   說明:一個Extent 是一塊 1MB 大小的邏輯連續數據，由 n 個連續區塊組成（具體大小取決於客戶機作業系統的區塊大小）。為了保證顆粒度和有效性，Extent上的讀寫修改是基於Slice為基礎進行動作，Slice上的資料會被讀入快取時依照讀取/快取的資料大小有所調整。
   
   C.Extnet Group
   Key Role:連續的實體儲存數據資料
   說明: Extent Group 是存放於實體硬碟上連續1MB或4MB大小的資料數據。它會以文件的形式由CVM管理並保存在硬碟上；另外Extents會動態的分散於Extent Groups上並提供數據條代化且橫跨多個節點/硬碟提供IO效能。 AOS 4.0 Extent Groups可分1MB or 4MB大小，這取決於資料去重功能。
   
   不同結構分類和各文件系統間的對應關係:
   ![image](https://hackmd.io/_uploads/SJ8b3DfBxx.png)

   
   
Nutanix DSF 分散式儲存提供下列功能:
**A. 資料分層(Data Tiering)**
透過多層儲存介質(NVMW SSD、SAS SSD、HDD)，透過I/O操作頻率將資料分類為冷、熱數據提升儲存資料處理效率，處理過程完全自動化。快取層空間規劃通常建議為資料層資料量的10%。

![image](https://hackmd.io/_uploads/Bk9DB1Uvll.png=20%x)


I/O Components
1.Oplog 
  Key Role: Persistent write buffer 
  說明:Oplog 類似文件系統日誌(journal)，用來處理隨機i/O行為並在完成後寫入ExtentStore(永久性資料儲存)，為了確保資料高可用性(RF)完成寫入操作前，Oplog 會同時被同步複製到另一個CVM的Oplog中，叢集中的CVM都會參與Oplog複製操作；為了確保IO效能Oplog存放於SSD區域(通稱Hot Data)，對於有順序寫入IO則會被Bypass Oplog直接寫入ExtentStore。每個VDisk Oplog 限制是6GB(Aos 4.6)，達上限時會觸發系統flush操作，將資料從Oplog移至永久儲存區域，此時會影響系統效能必須等待Flush完成。建議透過Nutanix Prism管理介面監控Oplog使用量，若有滿載狀況需調整工作負載或增加節點。
  若資料位於Oplog且Oplog空間尚未被完全用盡，則所讀取需求則由Oplog完成直到Oplog被用盡後就會由Unified cache(Memmory)進行處理；若儲存空間啟用了去重刪除(Dedupe)功能，所有I/O將會透過雜湊方式進行指紋識別，完成指紋紀錄將由unified cahe進行去重動作。
官方對於Dedupe有相關建議連結如下:
https://portal.nutanix.com/page/documents/solutions/details?targetId=TN-2028-Nutanix-Cloud-Clusters-on-AWS:deduplication.html
https://next.nutanix.com/how-it-works-22/to-dedupe-or-not-to-dedupe-that-is-the-question-38920


2.Extent Store
  Key Role:Persistent data storage
  說明:Extent Store是DSF中容量最大的儲存組件橫跨SSD和HDD，並且能擴展到其他節點設備上。通常有兩種資料被寫入Extnet Store(通稱Cold Data)，一種是Oplog處理後的數據，另一種是繞過Oplog有順序(sequential)寫入的操作。Nutanix ILM(Information Lifecycle management)會基於IO型態決定數據保留的分層位置，並且在冷熱層之間移動數據。當寫入VDisk的IO超過1.5MB就視為有順序的寫入。
  

3.Autonomous Extent Store(AES)
Key Role:Persistent data storage
  說明:AES是AOS5.10 引入對於Extent Store 寫入/儲存資料的新方法。它整合了在地優先與全域Metadata實現Metadata在地化，提供持續的效能表現。從AOS5.20開始一些持續的隨機寫入工作將By PASS Oplog 直接寫入AES，除了那些突發性的隨機寫入(bursty radom)才會由Oplog處理。AES 從AOS6.1版本開始預設啟用於全快閃叢集，如果Hybird架構滿足需求也可以啟用AES。
  
  AOS 5.10版本開始，Autonomous Extent Store(AES)再滿足條件下可處理持續的隨機工作負載。
條件如下:
> 全快閃(All Flash)的節點配置下(All NVMe SSD, All SATA/SAS SSD, NVMe+SATA/SAS SSD)，不會出現ILM的分層(Tier)在Extent Store上，只會存在一個快閃層。
> 在Intel Optane的案例中(Intel Optane+ NVMe/SATA SSD)最高效能介面將代表Tier0，其次將代表Tier1。 Intel Optane 已經在2024/5/29 EOIS。
 
>在Hybird 架構中，flash 代表Tier0 HDD 代表Tier1

>Oplog 永遠在Tier0不管是上面哪種架構(All Flash、Optane、Hybrid)

>資料的移轉透過ILM 進行分層移轉。

  
3.Unified Cache
  Key Role:Dynamic read cache
  說明: Unified Cache 位於CVM記憶體主要處理資料、metadata、去重等讀取緩存。當有資料讀取需求且該資料不存在快取中，資料會從Extent中讀取放置至Unified Cache中的Singal Touch Pool，透過LRU(least recently used)判斷資料讀取次越來越少的狀況下將被排除快取；如果該資料持續被讀取的狀況下，資料將被移到Multi Touch Pool直到快取達到峰值觸發LRU，快取峰值的計算公式如下((CVM Memory - 12 GB) * 0.45)。以32GB CVM快取大小(峰值)((32 - 12)*0.45) == 9GB
  ![image](https://hackmd.io/_uploads/ByrBASvDle.png)


**B. 磁碟平衡(Disk Balancing)**
透過自動化將數據資料平均分佈到所有節點和磁碟上；當有新增節點或磁碟時，系統將自動數據遷移到新節點或硬碟上。 
**C. 資料局部性(Data locality)**
Nutanix 官方建議透過10GB進行節點間資料傳遞，所有I/O請求會轉送至虛擬機所在節點的CVM上進行處理，再藉由10GB網路進行資料複製到其他節點
![image](https://hackmd.io/_uploads/By5DlJ_TJx.png)
<p class="text-center">
上圖、一般資料處理流程
</p>

![image](https://hackmd.io/_uploads/rJ13Z1dTJl.png)

<p class="text-center">
下圖、VMotion資料處理流程
</p>

**D. 進階資料服務(Advancee data services)**
除了提供虛擬化運作支援以外，Nutanix 也提供相關文件服務:
1. Nutanix Files Storage 支援SMB、NFS檔案儲存。
2. Nutanix Volumes Block Stroage 可直接對Nutanix儲存磁碟區作區塊級存取。
3. Nutanix Object Storage 是一種軟體定義的物件儲存方案，可處理大資料量的非結構化資料。
-------


**2.AHV Virtualization 架構**
AHV 是 Nutanix 自行開發的原生虛擬化平台 (Hypervisor)，深度整合在其超融合基礎架構 (HCI) 解決方案中。它是基於開源的 KVM (Kernel-based Virtual Machine) 技術，並經過 Nutanix 的強化與優化，旨在提供高效能、易於管理且安全的虛擬化環境。AHV 通常與 Nutanix 的核心軟體 AOS (Acropolis Operating System) 緊密綁定。

其中AHV上運行一個特殊虛擬機CVM，每個叢集節點上都會運行一台CVM其功能與角色如下:
**A.分散式儲存控制器(Distributed Storage Fabric - DSF)**
透過CVM將節點上的本地儲存(SSD、HDD)進行納管，並且與其他叢集上節點協同運作並集成分散式的儲存池，將空間提供給前端VM使用。

**B.I/O 處理與資料本地性 (Data Locality)**
節點上運行VM所發出的I/O請求，都會由本地CVM進行處理，以實現「資料本地性」，從而最小化網路延遲，提升 I/O 效能。如果需要讀取的資料不在本地，本地 CVM 會與擁有該資料副本的其他 CVM 溝通，將資料拉回。

**C.叢集管理與協調**
CVM 之間除了會持續通訊，共同管理整個 Nutanix 叢集的狀態、設定、中繼資料 (Metadata) 和運作。它們也負責處理節點故障、磁碟故障、資料複寫、資料修復 (Self-healing)、重複資料刪除、壓縮、糾刪碼 (Erasure Coding) 等儲存相關的背景任務。

**D.提供儲存給虛擬平台**
CVM會透過標準儲存協定將DSF儲存池掛載給前端Hypervisor使用(如 NFS for ESXi/AHV, SMB3 for Hyper-V, 或 iSCSI)

**E.運行 Nutanix 核心服務**
綜合前面所述AOS 運行於CVM而CVM負責了許多核心軟體服務，Stargate (I/O 處理)、Zeus (叢集設定管理)、Medusa (中繼資料管理)、Prism (管理介面)。

**F.升級與維護**
Nutanix相關升級(Rolling Upgrade)很大程度上也依賴CVM架構。原廠建議CVM標準規格 8Core 32GB。


![image](https://hackmd.io/_uploads/BJrIbgBUge.png=50%x)

<p class="text-center">
CVM Components 
</p>

**CVM Components**
1. Zeus 
Key Role: Access interface for Zookeepr
任務: 分散式系統元素之一，負責所有節點儲存和更新叢集配置任務，為Zookeeper存取介面。
2. Medusa
Key Role: Access interface for Cassandra
任務: 分散式系統元素之一，負責紀錄追蹤叢集中資料副本儲存位置，做為Cassandra 存取介面

<img style="display:block;margin:20px auto;padding:1px;border:1px #eee;width:50%;" src="https://hackmd.io/_uploads/rJ3pSEY61g.png" />




3. Stargate
Key Role: Data I/O manager
任務: 將儲分散式存提供給前端進行服務，負責處理所有資料I/O 與管理，Stargate 依賴Medusa對於metadata處理，另外依賴Zeus對於叢集配置資料處理。此服務在叢集中的每個節點運行提供在地化I/O。

4. Cassandra
Key Role: Distributed metadata store
任務: 透過分散式環狀方式對所有叢集中metadata進行管理與運用，使用Paxos 演算法確保資料一致性。

5. Zookeeper
Key Role: Cluster configuration manager
任務: 保存所有叢集配置資訊，從叢集中一個節點選出。

6. Curator 
Key Role: MapReduce cluster management and cleanup
任務: 負責分配整個叢集磁碟平衡、資料主動清理；每六小時進行一次全面掃描和每小時一次部分掃描，每個節點都有Curator，但會從所有節點中選出leader進行任務管理委派。

7. Prism
Key Role: UI and API
任務: 負責提供管理員設定和監控Nutanix叢集狀態，每個節點都有Prism並透過選舉的方式選出leader。

8. Genesis
Key Role: Cluster componenet & Service Manager
任務: Genesis 運行於每個節點並負責處理任何服務應用(啟動/停止)以及初始化設定，Genesis 獨立運行於叢集中，不需要叢集進行設定。Genesis唯一依賴Zookeeper必須啟動及運行。Genesis運行面會顯示The Cluster_init 和 Cluster_status。

9. Chronos 
Key Role: 作業與任務排程器
任務:負責接收Curator 在各節點產生的作業和任務。Chronos會在每個節點運作，並選出Chronos Leader與Curator Leader一同運作。

10. Cerebro
Key Role:複寫/災難復原 管理員
任務:負責DSF(分散式儲存)的複製與災難還原。其中包括定快照調度，遠端站台複寫、遷移與災難移轉。Cerebro 運行於叢集每個節點並參與每個遠端叢集與站台複寫。

11. Pithos
Key Role:vDisk 配置管理員
任務:負責vDisk資料配置。Pithos 運行於每個節點並且建立在Cassandra上。

## 三、Prism 管理
  Prism 主要由兩個物件構成:
  **Prism Centerl(PC)**
  負責管理多个 Acropolis 叢集，提供單一的、集中的管理界面。Prism Central 可以是一个虚拟机，部署在 Acropolis 叢集内或叢集外部。 AOS6.0 開始隨著Nutanix 產品授權模式更新，PC變成是必須佈建服務。
 
1.集中式跨叢集管理平台
2.支援多個 Nutanix 叢集的統一監控和管理
3.高階分析與報告功能
4.自動化運維功能，如警示、容量規劃、升級管理
5.多租戶管理支援
6.整合多雲環境（如 AWS、Azure）管理能力
7.API 支援與擴展性強

  **Prism Element(PE)**
  本地叢集管理員，負責叢集管理和運行。每個叢集都會有內建的Prism Element。
   功能:
1.Nutanix 超融合基礎架構（HCI）節點的本地管理工具
2.監控與管理單一 Nutanix 叢集（Cluster）
3.提供叢集健康狀態、資源使用率、存儲、計算、網路等監控
4.支援虛擬機（VM）管理與配置
5.快照、備份與還原功能
6.簡易的用戶界面，便於本地操作和維護
  示意圖如下:
  ![image](https://hackmd.io/_uploads/H1UdSUzHgg.png)
  
  差異比較:
  

| 項目 | Prism Element | Prism Central |
| -------- | -------- | -------- |
| 管理範圍     | 管理單一 Nutanix 叢集    | 集中管理多個 Nutanix 叢集及多雲環境     |
| 部署位置     | 內建於每個 Nutanix 叢集，無需額外部署  |需獨立部署 Prism Central 服務，作為集中管理平台     |
| 功能深度     | 提供基本的監控與管理功能，如資源監控、虛擬機管理與快照    | 提供進階分析、容量規劃、自動化警示、多租戶管理及多雲整合等豐富功能     |
| 運維自動化     | 	功能較基礎，缺乏自動化運維工具     | 支援自動化運維，包括警示通知、升級管理與容量規劃     |
| 多租戶支援     | 不支援多租戶    | 支援多租戶環境，適合服務提供商或大型企業    |
| 多雲整合     | 不支援公有雲或多雲整合   |	支援整合 AWS、Azure 等公有雲，方便混合雲管理     |


