日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

linux系統raid0測試實驗

作者:HeroKern 更新時間: 2022-01-22 編程語言

????????本篇文章介紹嵌入式平臺linux系統中raid0如何使用,并了解raid0磁盤陣列的工作原理,在后面文章中介紹pcie+switch存儲方案raid0陣列的實現。在linux系統中raid0配置使用的mdadm命令,在嵌入式平臺中,mdadm命令一般默認是沒有的,需要手動安裝mdadm命令。本次編寫塊設備驅動用兩片內存模擬磁盤做raid0,在塊設備中提供讀寫內存接口,打印內存接口,方便跟蹤mdadm命令工作原理。

安裝mdadm命令

  1. 下載mdadm.tar.gz
  2. tar –xzvf mdadm.tar.gz
  3. make ?CROSS_COMPILE=arm-linux-gnueabihf- 這里指定自己平臺的編譯器,如果編譯中報錯,修改Makefile,去掉CWFLAGS中的-Werror,再次編譯就可以通過。
  4. 將當前目錄的mdadm命令拷貝到嵌入式平臺中

塊設備驅動程序編寫是比較簡單的,這里我僅貼代碼,就不講解具體的代碼。

驅動初始化函數,提供了塊設備驅動初始化和注冊,分配了一塊4MB大小的內存,用于模擬磁盤,具體代碼如下所示。

??????驅動初始化函數中提供了file_operations接口和request_queue塊設備請求隊列,?request_queue用于文件系統與磁盤之間的數據交互,交互最小單元為一個bio結構,最常見的一次數據交互大小為4KB,請求隊列函數如下所示。

  • ????????塊設備請求隊列函數中,添加了打印信息,方便查看本次bio請求讀寫的扇區位置和扇區的個數,通過判斷bio結構的讀寫實現bio緩存到內存的拷貝或內存到bio緩存的拷貝,ramblock_buf這個就是用內存模擬的磁盤,大小為4MB,在file_operations結構的read函數中,程序會讀取這個內存的數據,方便跟蹤兩塊磁盤中數據的分布,file_operations結構代碼如下所示。

????????在read函數中,將拷貝ramblock_buf這塊內存的數據到應用程序,拷貝多大通過上位機調用read函數是傳入參數。應用程序將讀兩個驅動程序的內存數據,同時創建遞增數文件,遞增數文件方便對比兩片內存的關聯性。

遞增數文件創建函數如下所示。

????????應用程序主程序會讀取內存數據,并且將數據寫入到data0或者data1文件中,具體代碼如下所示。

????????代碼準備工作已經完成,開始上板實測效果,需要先配置內核支持raid0,具體配置如下。

????????在開發板中手動加載驅動程序,同時執行mdadm命令,本次chunk大小為64KB,具體操作如下所示。

????????mdadm --query /dev/md0和./mdadm --detail /dev/md0命令用于查詢raid0設備信息,通過查詢設備信息可以確定raid0制作完成,下面開始格式化文件系統,掛載文件系統,拷貝遞增數據到掛載目錄,并且執行應用程序,將讀取的兩個內存數據分別通過tftp命令拷貝到windos。

????????通過compare比較data0和data1文件,發現生成的數據文件規律為一邊拷貝64k的數據,這也正是raid0的基本原理,比較數據如下所示。

????????左右紅框的內的數據,上下一行的差值都是0x4000=16KB,但是數據時32字節對齊的,所以數據的總數為16Kb*4=64KB,跟mdadm創建時指定的chunk參數一致,左右紅框中,右邊的結尾剛好是左邊紅框的開始,這也說明數據時左右以64KB大小在切換。本篇文章講解了linux系統中raid0的使用方法,也給出了詳細測試說明,后面文章分析pcie-switch價格raid0陣列方案設計。

所有命令如下:

insmod ram_drv0.ko

insmod ram_drv1.ko

./mdadm -Cv /dev/md0 --chunk=64 -l0 -n2 /dev/ramblock0 /dev/ramblock1

./mdadm --query /dev/md0

./mdadm --detail /dev/md0

mkfs.ext4 /dev/md0

mount /dev/md0 /tmp/

cp increase.data /tmp/

./test_raid0 0 0 8192

tftp -p -l data0 10.10.10.66

./test_raid0 1 0 8192

tftp -p -l data1 10.10.10.66

原文鏈接:https://blog.csdn.net/qq_21792169/article/details/122474736

欄目分類
最近更新