一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

Linux下的兩種分層存儲方案

時(shí)間:2024-09-25 00:24:48 Linux認證 我要投稿
  • 相關(guān)推薦

Linux下的兩種分層存儲方案

  在存儲設備中,使用分層技術(shù),將冷熱數據自動(dòng)分層存放在具有不用讀寫(xiě)性能的存儲介質(zhì)上,已經(jīng)是很普遍的做法,比如 IBM 的 DS8K 中使用的 Easy Tier。這些功能都需要存儲設備固件的支持,如何在 Linux 主機上,使用 Linux 現有的機制,實(shí)現數據的分層存儲?本文主要介紹了 Linux 平臺上兩種不同的實(shí)現分層存儲的方案。

Linux下的兩種分層存儲方案

  背景介紹

  隨著(zhù)固態(tài)存儲技術(shù) (SSD),SAS 技術(shù)的不斷進(jìn)步和普及,存儲介質(zhì)的種類(lèi)更加多樣,采用不同存儲介質(zhì)和接口的存儲設備的性能出現了很大差異。SSD 相較于傳統的機械硬盤(pán),由于沒(méi)有磁盤(pán)的機械轉動(dòng),尋址速度大大提高,尤其在隨機讀寫(xiě)較多的應用環(huán)境下,性能會(huì )大大提升,但這些高性能存儲設備的單位存儲價(jià)格相對于傳統的磁帶和 SATA 硬盤(pán)也高出很多,如圖 1 所示。

  圖 1 不同存儲設備的性能價(jià)格對比

  所以,如何高效平衡地利用這些存儲設備,是所有存儲廠(chǎng)商都在關(guān)注的問(wèn)題。采用 Storage Tiering分層存儲,將數據按照冷熱進(jìn)行自動(dòng)分層,越熱的數據存放在訪(fǎng)問(wèn)性能越高的設備上,而越冷的數據存放在訪(fǎng)問(wèn)性能越低的設備上,既可以獲取高的性能,又可以有效節約成本。

  Storage Tiering 分層存儲技術(shù)在企業(yè)級的存儲設備中已經(jīng)被廣泛使用,如 IBM 的 Easy Tier, EMC 的 FAST 等,但這些功能都集成在存儲設備內部,需要存儲設備固件的支持。

  本文主要 Host 主機的角度,分析在 Linux 上實(shí)現 Storage Tiering 分層存儲的兩種方案以及其開(kāi)源實(shí)現。為便于表述,本文中僅以?xún)杉?Tiering 為例,慢速設備為傳統的 SATA 硬盤(pán)(DEV1),快速設備為固態(tài)存儲硬盤(pán) SSD(DEV2)。

  分層存儲的技術(shù)要點(diǎn)

  要實(shí)現分層存儲,首先需要將具有不同訪(fǎng)問(wèn)性能的存儲設備(DEV1, DEV2)虛擬化成一個(gè)新的存儲設備(VDEV)。與緩存(Cache)不同,VDEV 的存儲容量是 DEV1 與 DEV2 的容量之和(需除去一些用于存放元數據的空間)。

  所有用戶(hù)的 IO 請求將會(huì )發(fā)給新的存儲設備 VDEV,然后再按照一定的地址映射關(guān)系被轉發(fā)到相應的物理設備 DEV1 或 DEV2。

  同時(shí)還需要統計 IO 的熱度,并根據這些熱度數據,動(dòng)態(tài)地在不同的 Tiering 間遷移數據,以達到性能容量的優(yōu)化。

  因此,實(shí)現分層存儲主要包括三方面的工作,如圖 2 所示。

  存儲設備的虛擬化

  負責虛擬設備的創(chuàng )建,刪除; 維護虛擬設備到物理設備的地址映射關(guān)系。

  IO 性能的監測統計

  統計 IO 的熱度,以及 IO 的大小,隨機性能屬性,為數據遷移提供依據。

  數據的遷移

  根據 IO 數據的熱度等統計屬性,將訪(fǎng)問(wèn)頻度高的數據遷移至讀寫(xiě)性能高的 Tier 存放,而將訪(fǎng)問(wèn)頻度低的數據遷移到性能低的 Tier 存放。

  圖 2 分層存儲的數據遷移

  基于 Block Device 的分層存儲方案

  該方案完整地實(shí)現了以上提到的分層存儲中所有的工作,包括虛擬化,IO 性能統計以及數據的遷移。

  方案結構

  該方案的結構包括一個(gè) Linux 設備驅動(dòng)程序和若干用戶(hù)態(tài)的控制程序,如圖 3 所示。

  驅動(dòng)程序實(shí)現存儲設備的虛擬化,IO 性能監測統計以及數據的遷移;

  用戶(hù)態(tài)控制程序負責創(chuàng )建、刪除虛擬設備,手動(dòng)觸發(fā)數據遷移,以及設置獲取設備狀態(tài)。

  該方案由于 Storage Tiering 所有的功能都在 Linux 內核實(shí)現,且需要維護虛擬設備到物理設備的地址映射表,以及保證數據一致性,所以實(shí)現難度和工作量比較大,但可擴展性和靈活性也相對較大。

  圖 3 基于 Block Device 的分層存儲方案

  方案實(shí)現

  該方案的實(shí)現主要包括以下內容:

  1、管理設備的注冊

  管理設備主要用于與用戶(hù)態(tài)程序的 IOCTL 交互,可以是一個(gè)字符設備或者 Misc 設備。Linux 下可以通過(guò) register_chrdev 或 misc_register 注冊,并實(shí)現所需要的 IOCTL 接口。

  2、虛擬塊設備的創(chuàng )建

  用戶(hù)態(tài)控制程序通過(guò) IOCTL 向控制設備發(fā)起創(chuàng )建虛擬設備的請求,并傳入所有的物理磁盤(pán)(DEV1,DEV2)的參數,如設備名,磁盤(pán)大小,虛擬磁盤(pán)的塊大小等;驅動(dòng)程序收到該請求后,進(jìn)行必要的參數檢查,然后調用 register_blkdev 創(chuàng )建一個(gè)新的塊設備(VDEV)。并設置新設備的相關(guān)參數,如 IO 處理函數,隊列大小,設備容量等。

  3、虛擬設備地址與物理設備地址映射

  虛擬設備地址到物理設備的地址映射表在虛擬設備創(chuàng )建是被初始化,并在數據遷移過(guò)程中被修改。

  虛擬設備和物理設備都被分成固定大小的塊,塊大小可以固定或通過(guò) IOCTL 由用戶(hù)指定,但一旦確定,不能更改,一個(gè) Block 是熱度統計以及數據遷移的最小單位;每個(gè) Block 包含若干個(gè) sector(512 Byte)。

  當 VDEV 收到一個(gè) bio,可以由 bi_sector 和 bi_size 找出所對應的 VDEV 的 Block 以及 Block 內的偏移量,通過(guò)查詢(xún)映射表,找到各個(gè) VDEV Block 所對應的物理設備以及 Block,然后讀取物理設備 Block 內的偏移量,如圖 4 所示。

  地址映射表以及其他的元數據需要存儲在物理設備上,以便機器重啟時(shí)能重構這個(gè)虛擬的塊設備,且需要采取一定的備份策略,防止斷電或磁盤(pán)損壞造成數據丟失。

  4、IO 熱度統計

  IO 熱度統計也以 Block 為基本單位,每個(gè) Block 內的任何一個(gè) sector 被訪(fǎng)問(wèn),該 Block 的熱度都為增加。由于大 IO 以及順序 IO 在性能在傳統硬盤(pán)和 SSD 上的差異并不是特別大,所以在進(jìn)行熱度統計是應該考慮排除大 IO 和順序 IO。

  5、數據遷移

  可以采用自動(dòng)方式或手動(dòng)方式。自動(dòng)方式由驅動(dòng)內的定時(shí)器驅動(dòng),每隔一定的時(shí)間,啟動(dòng)數據遷移的掃描,將 IO 熱度統計中的熱數據向高性能存儲設備遷移,冷數據向低性能存儲設備遷移;手動(dòng)方式由用戶(hù)指定,將某塊數據向高性能存儲設備遷移或低性能設備遷移。手動(dòng)數據遷移方式增加了更大的靈活性和可擴展性。

  圖 4 虛擬設備與物理設備的地址映射

  開(kāi)源實(shí)現

  BTier 基于 Block Device 的分層存儲方案的開(kāi)源實(shí)現。BTier 最大支持 16 個(gè)設備的虛擬化,這些設備被 BTier 簡(jiǎn)單地捆綁成一個(gè) btier 塊設備,因此,其中任何一個(gè)設備的失效,都會(huì )導致整個(gè) btier 的失效。

  編譯并以模塊形式安裝 BTier 之后,會(huì )創(chuàng )建一個(gè)名為 tiercontrol 的字符設備;

  然后使用 BTier 提供的 btier_setup 應用可以創(chuàng )建一個(gè)新的塊設備 btiera,然后就可以對 btiera 設備進(jìn)行所有塊設備的讀寫(xiě)操作,包括分區和創(chuàng )建文件系統。

  BTier 還提供了豐富的 sysfs 接口,進(jìn)行控制和信息獲取,如數據遷移的開(kāi)關(guān),間隔時(shí)間,IO 統計信息等。

  不過(guò) BTier 每個(gè) Tier 層僅支持 1 個(gè)物理設備,同層多個(gè)設備的虛擬化需要借助其他的方法,在虛擬化上面,BTier 還有可以改善的空間。

  基于 LVM 的分層存儲方案

  Linux 的邏輯卷管理(LVM)提供了存儲虛擬化,可以將多個(gè)物理卷(PV)建成一個(gè)卷組(VG),然后再在 VG 里創(chuàng )建虛擬卷(VG)。而且 LVM 提供了在不同物理卷之間遷移數據的 API。因此,基于 LVM 的分層存儲方案借助 LVM 的虛擬化和數據遷移的能力,實(shí)現會(huì )更簡(jiǎn)單。

  方案結構

  該方案中,數據一致性的問(wèn)題以及數據遷移時(shí) IO 中斷的問(wèn)題都由 LVM 進(jìn)行處理,重點(diǎn)在于如何分析并統計 IO 的熱度信息,并且不涉及內核態(tài)的開(kāi)發(fā)。該方案的結構如圖 5 所示。

  圖 5 基于 LVM 的分層存儲方案

  方案實(shí)現

  該方案的實(shí)現主要包括以下內容:

  1、創(chuàng )建虛擬設備

  使用 pvcreate 將所有的物理磁盤(pán)創(chuàng )建成物理卷(PV);再使用 vgcreate 將所有的 VG 創(chuàng )建成一個(gè)卷組(VG);最后使用 lvcreate 在創(chuàng )建出來(lái)的 VG 上建虛擬卷。

  2、IO 熱度統計

  IO 熱度統計可以使用 blktrace 工具,或者實(shí)現一個(gè)設備驅動(dòng)來(lái)檢測 IO 的熱度。使用 blkparse 可以解析 blktrace 的輸出,然后分析這些 IO 的分布以及讀寫(xiě)頻度,從而得到 IO 的熱度統計信息。

  4、數據遷移

  根據 IO 的熱度統計信息,使用 LVM 提供的 pvmove 工具,可以在屬于同一個(gè) VG 里的不同 PV 之間進(jìn)行數據遷移,將熱數據和冷數據分布存放在不同的物理卷上。

  開(kāi)源實(shí)現

  LVMTS(LVM Tired Storage)是一個(gè)使用 SSD 和 HDD 來(lái)創(chuàng )建混合存儲的方案,完全在用戶(hù)態(tài)實(shí)現,主要由幾個(gè)守護進(jìn)程構成。

  Lvmtscd 負責監測 blktrace 的輸出并統計塊設備的訪(fǎng)問(wèn)頻度,并將這些統計信息記錄在文件中;

  Lvmtsd 負責根據用戶(hù)配置的信息,啟動(dòng)其他的守護進(jìn)程,并完成數據遷移。

  實(shí)際使用中發(fā)現,LVMTS 并不是太穩定,而且在 IO 分析統計上并不是太完善,可開(kāi)發(fā)的空間仍然很大。

  總結

  在 Linux 上實(shí)現 Storage Tiering 分層存儲,方法有很多,包括使用 Linux Device Mapper 機制等。本文對比較常用的兩種方案的實(shí)現進(jìn)行了大概的分析,以及各個(gè)方案的優(yōu)劣,在實(shí)際實(shí)現中,還有很多細節需要考慮,如 Thin Provision,SSD Trim 等的支持。

【Linux下的兩種分層存儲方案】相關(guān)文章:

Linux系統下ftp的管理08-19

Linux下程序的Profile工具01-24

Linux認證系統管理:linux下搭建ftp10-08

linux下etc/fstab文件的簡(jiǎn)介10-23

Linux系統下如何刪除文件夾01-11

大數據時(shí)代下的三種存儲架構07-23

Linux下常用文本處理命令大全01-22

Linux下RPM軟件包管理方法匯總09-01

華為認證:華為T(mén)A128在LINUX下的簡(jiǎn)單設置08-09

茶葉存儲技巧09-21

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看