安迪熊

技術、閱讀、生活


  • 首頁

  • 關於

  • 標籤

  • 分類

  • 站點地圖

  • 搜尋

[Go] 一個Go的程式專案是怎麼樣的

發表於 2023-12-19 | 分類於 Go |
字數統計: 1.3k

我們編寫的 Go 程式一般都是簡單程式,一般由一個或幾個 Go 原始碼檔案組成,而且所有原始碼檔案都在同一個目錄中。但是生產環境中運行的程式可不會這麼簡單,通常它們都有著複雜的專案結構佈局。弄清楚一個實用 Go 專案的專案佈局標準是 Go 開發者走向編寫複雜 Go 程式的第一步,也是必經的一步。

但 Go 官方到目前為止也沒有給出一個關於 Go 專案佈局標準的正式定義。那在這樣的情況下,Go 社群是否有我們可以遵循的參考佈局,或者標準呢?有的。在這一篇文章裡,我就來告訴你 Go 社群廣泛採用的 Go 專案佈局是什麼樣子的。

閱讀全文 »

[Go] Go語言的設計哲學

發表於 2023-12-12 | 分類於 Go |
字數統計: 1.1k

Go語言,又稱Golang,是由Google開發的一種現代程式語言。它在2007年誕生,由Robert Griesemer、Rob Pike和Ken Thompson設計。Go語言的設計哲學非常獨特,使它在眾多程式語言中脫穎而出。這篇文章,我們來聊聊Go語言的設計哲學,看看這門語言是如何讓寫程式變得更加簡單、高效和愉快的。

閱讀全文 »

[vSAN] esxcli 指令

發表於 2023-12-03 | 分類於 vSAN |
字數統計: 1.4k

ESXi Host

esxcli vsan cluster

1
2
3
4
5
6
7
8
# esxcli vsan cluster
Available Commands:
get Get information about the vSAN cluster that this host is joined to.
join Join the host to a vSAN cluster.
leave Leave the vSAN cluster the host is currently joined to.
list Get information about the vSAN clusters that this host is joined to.
new Create a vSAN cluster with current host joined. A random sub-cluster UUID will be generated.
restore Restore the persisted vSAN cluster configuration.

我們可以看到,除了可以獲取當前vSAN cluster的詳細訊息之外,也可以將Host加入或移除vSAN Cluster之外

閱讀全文 »

[vSAN] 運維管理

發表於 2023-11-26 | 分類於 vSAN |
字數統計: 620

vSAN作為VMware一個重要的儲存產品,它深度融合了VMware的vSphere,並能透過vCenter一站式管理儲存資源池。我們可以透過vCenter建立vSAN Cluster、創建vSAN Datastore,更能夠在vCenter上直接監控vSAN Cluster的健康和I/O性能狀態。接下來,讓我來介紹如何透過7.0U3的vCenter進行運維管理。

vSAN Skyline Health

vSphere提供了esxcli指令,讓用戶可以透過esxcli指令主動查詢當前ESXi host的硬體、儲存、網路等資訊。那麼,有沒有方法可以被動提示用戶當前vSAN cluster的健康狀態呢?

閱讀全文 »

[vSAN] 物理硬碟狀態

發表於 2023-11-18 | 分類於 vSAN |
字數統計: 856

Disk 由於晶圓問題、firmware 問題、driver 問題等等會造成一定機率上的故障。假如一塊硬碟每天的故障機率是 1%,那麼一座有一萬個 disk 的資料中心,每天可能會有 100 塊硬碟損壞。當然,vSAN 對於部分類型的損壞會嘗試自動修復,這樣能大幅減少人力成本,畢竟大部分問題重開機就能解決。

LSOM 是最底層與硬碟打交道的元件,它的 DDH(Degraded Device Handling)服務可以監控硬碟狀態。當 DDH 偵測到 Disk 即將故障或損壞時,會將 Disk 標記為有問題的裝置,讓它不再參與資料的 I/O 流程。更多細節可以參考 VMware KB:https://kb.vmware.com/s/article/2148358

這裡列舉 vSAN 偵測到的硬碟狀態及其原因:

PDL

Permanent Disk Loss (PDL) 是一種嚴重的錯誤,需要人工介入。一般情況下是 Host 與 Disk 的連結出了問題,無法連接。可能是 ESXi Host 內部或 Disk 的 bug 導致的。

閱讀全文 »

[vSAN] vSAN 資料加密保護

發表於 2023-11-05 | 分類於 vSAN |
字數統計: 524

vSAN 作為軟體定義儲存,它的加密機制也與硬體無關,無需額外的加密裝置,硬碟也無需額外的加密插件。vSAN 加密機制採用的是 XTS-AES 256 加密標準,可以同時保護快取層和容量層的資料。值得注意的是,當資料進入快取層時,系統會對資料進行加密,而當資料要轉存進去容量層時,會先把準備要寫入容量層的資料解密,然後執行重複資料刪除和壓縮的動作,再加密資料,最後寫進容量層。

vSAN 的加密機制採用的是 KMS (Key Manager Server) 解決方案,使用者需要從外部例如 Google 或 Amazon 取得 KMS 加密金鑰。

KMS 採用的是 KEK (Key Encryption Key) 和 DEK (Data Encryption Key) 機制。DEK 先將硬碟資料進行加密,然後 KEK 負責加密 DEK。DEK 透過 KMIP (Key Management Interoperability Protocol) 傳送加密後的資料到 vSAN 節點主機中,這樣只有當管理人員拿到 KEK,才可以解密所有資料。Hybrid 和 All Flash 都支援此機制。

閱讀全文 »

[vSAN] vSAN的重複資料刪除、壓縮和資料校驗

發表於 2023-10-25 | 分類於 vSAN |
字數統計: 678

重複資料刪除和壓縮

在資料儲存領域,除了使用RAID 5/6之外,還可以啟用「重複資料刪除和壓縮」來節省儲存資源。這個功能會針對每個資料區塊進行重複資料刪除,如果vSAN Datastore中已經有相同的資料區塊,系統就不會重複儲存。為了判斷資料區塊是否相同,系統會使用雜湊算法來建立資料索引。

在vSAN架構中,雜湊使用了SHA-1演算法來為每段資料建立Hash value,每段大小為4KB。

壓縮則是使用LZ4演算法。在重複資料刪除的過程中,當系統發現有新資料要寫入時,會進行壓縮,將原本4KB的資料壓縮成大約2KB,然後再寫入容量層。

閱讀全文 »

[vSAN] VMware虛擬機是怎麼存在vSAN的呢?

發表於 2023-10-18 | 分類於 vSAN |
字數統計: 570

簡介

VMware vSAN 是一種分散式儲存技術,它將多個 ESXi 主機的儲存資源組合成一個共享的資料儲存區域。這篇文章會詳細解釋虛擬機在 vSAN 中是如何儲存數據,以及不同類型的物件如何運作。

vSAN 與虛擬機

vSAN 是一個 Object-based 的儲存系統,這意味著數據是以物件的形式儲存的。當在 vSAN Datastore 部署虛擬機時,系統會生成五種類型的物件來管理和儲存虛擬機的數據。

五種類型的物件

閱讀全文 »

[vSAN] vSAN的I/O流程

發表於 2023-10-12 | 分類於 vSAN |
字數統計: 994

接下來我們會根據前面所學的知識,梳理一下端到端 vSAN 的讀取和寫入的 I/O 流程。我們將以儲存 Policy RAID-1, Stripe=2, FTT=1 來討論。Strip 對讀取的影響較大,FTT 對寫入的影響較大。Stripe=2 代表一個 Component 會被分半寫入同個 Host 的兩個 Disk,FTT=1 代表一個 Object 會被分成兩個 Components 寫入兩個 Host。

這裡快速地複習一下,vSAN 採用的是雙層架構。第一層硬碟是快取層,一般來說會使用 SSD 硬碟作為快取,裡面有 70% 的容量作為寫入緩衝,30% 的容量是讀取快取。

什麼是寫入緩衝呢?以上述 RAID-1, FTT=1 的模式來說,每當寫入一個 I/O,會寫入兩個 DataGroup。vSAN 定義的一個完整的寫入 I/O 是 Data 寫進去兩個 DataGroup 裡的 SSD 就算完成 I/O 了,所以寫入緩衝只是暫時放在 SSD,準備要寫進去容量層的 Data。

閱讀全文 »

[vSAN] LSOM (Local log-structured object manager)

發表於 2023-10-05 | 分類於 vSAN |
字數統計: 443

vSAN 的四大 Component - CMMDS、DOM、CLOM、LSOM,從最底層與物理硬碟交互到最上層協同各個 Cluster 裡的 Nodes,彼此各司其職。以下圖為例,本篇將介紹 vSAN CMMDS。

vSAN LSOM(Local log-structured object manager)運作在 ESXi node 裡面,負責將 Object 和 Component 放在 ESXi node 裡面,並在資料發生 I/O 時,管理 cache disk 和 capacity disk 的資料 I/O。

閱讀全文 »
<1234…7>

68 文章
7 分類
59 標籤
© 2024 Kaichia Chen