iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
自我挑戰組

淺入淺出分散式儲存系列 第 2

Day2 資料儲存 - block storage基礎

Block storage是最基本的儲存系統,所以讓我們從這裡開始

我們都知道數據是以1和0儲存在某個"介質"上面,例如機械式硬碟(HDD)利用磁性,而固態硬碟(SSD)利用電子

Block storage是最能與這些硬碟直接打交道的方式,那麼先回答一個問題,軟體是如何與硬碟打交道呢?首先,作業系統利用LUN ID識別硬碟,LUN是一個或一組或半個硬碟的邏輯代號,為何有半個呢?例如我們的windows有一個硬碟,把他分成C槽和D槽,那麼他們就是各半個

LUN的概念也方便了讓虛擬機掛載硬碟,就不用透過下層的hypervisor識別硬碟了

有了LUN,我們也方便了多台主機共享一個儲存設備,為了共享儲存設備,儲存設備必須是外接式,一般透過SCSI通訊協議與多主機溝通

最後,為什麼叫做block呢?這就要從我們是怎麼從硬碟讀取和寫入數據說起,一個block是一段固定長度的bytes,或是我們可以稱為"虛擬化的扇區”.

Block storage的資料讀寫方法與HDD的結構有關,如下圖所示

https://ithelp.ithome.com.tw/upload/images/20210902/20130271pZT14bYWOo.png

HDD就是用類似光碟的圓盤一個個堆疊出來了,剛剛提到的"扇區"就是上圖的sector,代表同個半徑下一小塊長度,HDD的最小單位就是一個sector,然後block storage最小的單位是一個block,sector是實體地址,block是作業系統上的邏輯地址

這樣比喻好了,大家上作業系統課的時候,應該學過虛擬記憶體,意思是實體記憶體與一個虛擬化的記憶體的Mapping關係,實體記憶體的Page就像是硬碟的sector,而虛擬記憶體的Page就像是block. Block就是作業系統最小的邏輯儲存單位,常見為4096 bytes. 可以藉由指令stat /boot/ |grep "IO Block" 查詢

為何有這樣的設計呢?因為sector有點小,傳統的硬碟一般是512bytes,如果用block作為最小單位直接讀的話,可以一次讀多個,當然,這個可以根據需求透過軟體控制

總結來說,block storage就是一種最底層讓軟體和硬碟溝通的方式

另外,本次系列的程式碼都放在這了,歡迎自行取用:https://github.com/kaichiachen/python-simple-object-storage


上一篇
Day1 淺入淺出分散式儲存
下一篇
Day3 資料儲存 - block storage優缺點及場景
系列文
淺入淺出分散式儲存30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言