RAID陣列基礎知識

RAID陣列基礎知識

獨立硬盤冗余陣列RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列

RAID的種類

這里我們只介紹比較常用的RAID類型,詳細可查看維基百科

RAID-0 (等量模式,stripe): 性能最佳

  • 這種模式如果使用相同型號與容量的磁盤來組成時,效果最佳。這種模式的RAID會將磁盤先切出等量的區塊(舉例來說:4KB),然后當一個文件要寫入RAID時,該文件會依據塊的大小切割好,之后再依序放到各個磁盤里面去。由于每個磁盤會交錯存放數據,因此當你的數據要寫入RAID時,數據會被等量放置在各個磁盤上面。

    例如:你有兩塊硬盤組成RAID-0,當你有100MB的數據要寫入時,每個磁盤會被分配到50MB的存儲量。RAID-0的示意圖:

    這里寫圖片描述

  • RAID-0需要自行負責數據損毀的風險,由上圖我們知道文件是被切割成為適合每塊磁盤分區區塊的大小,然后再依序放置到各個磁盤中,所以如果一個磁盤壞了,那么數據將缺少一塊,此時這個文件就損毀了。由于每個文件都是這樣存放,因此RAID-0只要任何一塊磁盤損毀,在RAID-0上面的所有數據都會丟失而無法讀取。

RAID-1 (鏡像模式,mirror): 完整備份

  • 這種模式也是需要相同的磁盤容量的,最好是一模一樣的磁盤。如果是不同容量的磁盤組成RAID-1時,那么總容量將以最小的那一塊磁盤為主!這種模式主要是讓同一份數據完整保存在兩塊磁盤上面。舉例來說,如果有一個100MB的文件,且我僅有兩塊磁盤組成RAID-1時,那么這兩塊磁盤將會同步寫入100MB到他們的存儲空間去。因此,整體RAID的容量就幾乎少了50%.

這里寫圖片描述

  • 由于兩塊磁盤內的數據一模一樣,所以任何一塊硬盤損毀時,你地數據還是可以完整保留下來。所以我們可以說,RAID-1最大的優點大概就是在于數據的備份。不過由于磁盤容量有一半用在備份,因此總容量會是全部磁盤容量的一半而已。RAID-1的寫入性能不佳,不過讀取的性能則是還可以。這是因為數據有兩份在不同的磁盤上面,如果多個進程在讀取同一條數據時,RAID會自行取得最佳的讀取平衡。

RAID 0 + 1

  • RAID-0的性能佳但是數據不安全,RAID-1的數據安全但是性能不佳,那么能不能將這兩者整合起來設置RAID呢?那就是RAID 0 + 1或RAID 1 + 0。所謂的RAID 0 + 1就是先讓兩塊硬盤組成RAID-0,并且這樣的設計有兩組;然后將這兩組RAID-0再組成一組RAID-1,這就是RAID 0 + 1,反過來說,RAID 1 + 0 就是先組成RAID-1再組成RAID-0的意思。
  • 下圖中,Disk 0 + Disk 1組成第一組RAID 0,Disk 2 + Disk 3組成第二組RAID 0,然后這兩組再整合成一組RAID-1。如果我有100MB的數據要寫,則由于RAID 1的關系,兩組RAID-0 都會寫入100MB,但是由于RAID-0的關系,因此每塊磁盤僅會寫入50MB而已。如此一來,無論哪一組的RAID-0的磁盤損毀,只要另外一組RAID-0還存在,那么就能夠通過RAID-1的機制來恢復數據。

這里寫圖片描述

  • 由于具有RAID-0的優點,所以性能得以提升,由于具有RAID-1的優點,所以數據得以備份。但是也由于RAID-1的缺點,所以總容量會少一半用來作為備份。

Raid 1 + 0

  • 下圖Disk 0 + Disk 1先組成第一組RAID-1,Disk 2 + Disk 3再組成一組RAID-1,然后這兩組再整合成為一組RAID-0。如果我有100MB數據要寫,首先會將數據分割,那么有50MB的數據會寫入第一組RAID-1中,另外50MB寫入第二組RAID-1中,由于RAID-1的特點,Disk 0 和 Disk 1都會寫入同樣的50MB數據,另外一組RAID-1也是同樣。因此,的那個我餓能其中一塊硬盤壞掉是沒有關系的,但是如果第一組RAID-1(disk 0 + Disk 1)兩塊硬盤全部損壞,那么數據將會丟失。再比如Disk 0 和Disk 2兩塊硬盤損壞,由于RAID-1所以數據還是可以恢復的。

這里寫圖片描述

Spare Disk: 預備磁盤的功能

  • 磁盤陣列的磁盤損壞時,就得將要壞的磁盤拔除,然后換上一塊新的磁盤。換成新磁盤并且順利啟動磁盤陣列后,磁盤陣列就會開始重建原本壞掉的那塊磁盤數據到新的磁盤中去,然后你磁盤陣列上的數據就復原了。這就是磁盤陣列的優點,不過我們還是要手動插拔磁盤,此時通常得要關機才能這么做。
  • 為了讓系統可以實時地在壞掉硬盤時主動重建,因此就需要預備磁盤(spare disk)的輔助。所謂的spare disk就是一塊或者多塊沒有包含原本磁盤陣列等級中的磁盤,這塊磁盤平時并不會被磁盤陣列所使用,當磁盤陣列有任何一塊磁盤損壞時,這塊spare disk會被主動拉進磁盤陣列中,并將壞掉的那塊磁盤移除磁盤陣列,然后重建數據系統。

硬陣列和軟陣列

  • 硬件磁盤陣列(hardware RAID)
    硬磁盤陣列就是通過磁盤陣列卡來完成陣列的。磁盤陣列卡上面有一塊專門的芯片處理RAID任務,因此在性能方面會比較好。并且目前中高等的磁盤陣列卡都支持熱插拔,即在不關機的情況下更換損壞的硬盤。

  • 軟件磁盤陣列(software RAID)
    軟件磁盤陣列主要是通過軟件來仿真硬件磁盤陣列,因此會損耗較多的系統資源,比如說CPU的運算于I/O總線的資源等,不過我們現在的計算機已經速度很快了,因此這些限制現可以忽略不計了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536074.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536074.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

timeshift備份你的Linux系統

timeshift備份你的Linux系統 安裝 打開終端(ctrl alt T)并逐個執行以下命令 sudo apt-add-repository -y ppa:teejee2008/ppa sudo apt-get update sudo apt-get install timeshift 創建 點擊Create按鈕 默認不能備份用戶下的文件,所以…

Go語言vscode環境配置

Go語言vscode環境配置 此教程在GO已經安裝成功的前提下。 安裝vscode擴展 在vscode擴展里面搜索go,然后下載擴展。 安裝go 插件 在$GOPATH目錄下創建bin,pkg,src切換到$GOPATH/bin目錄下,打開終端輸入以下命令,不需要翻墻: go…

Angular實現懸浮球組件

Angular實現懸浮球組件 在手機 App 上,我們經常會看到懸浮球的東東,用著可能很舒服,但是 web 網頁上卻很少見,今天我們就通過 Angular 來實現,當然使用其他框架也是可以的。 功能要求: 支持設置直徑支持點擊觸發信號支持設置鼠標按壓時間實現的過程中省略的部分天填坑過…

Docker+Nginx部署Angular國際化i18n

Docker+Nginx部署Angular國際化i18n 在Angular項目中添加default.conf文件 default.conf 為了支持局域網,增加一個域名,即本地的局域網ip地址。 server {listen 80;server_name localhost;server_name 192.168.2.172;location / {root /usr/share/nginx/html;lo…

消息隊列-Message Queue

消息隊列-Message Queue 目前隨著互聯網的普及以及上網用戶的增多,擁有一套 安全、穩定、低耦合、高性能的內部通信工具尤為重要。 什么是消息隊列? 消息隊列(英語:Message queue)是一種進程間通信或同一進程的不同線…

Angular 第一章 開始

第一章 開始 用 JavaScript 開發應用程序是一個很大的挑戰。由于它的延展性和缺少類型檢查,在 JavaScript 中構建一個適當大小的應用程序是很困難的。除此之外,我們對所有類型的處理都使用JavaScript,例如用戶界面(UI),操作、客戶端-服務器交互和業務處理/驗證。因此,我們…

Typescript實現單例之父類調用子類

Typescript實現單例之父類調用子類 設計要求 在程序中,需要一個對象可以全局使用,并且只有一個實例Breakpoint 類是一個可以被繼承的類,然后子類必須實現 updateView函數updateView 這個函數可以被自動調用,當窗口發生變化的時候構思 UML 圖 Layout 是一個單例類,也就是全局只…

Angular性能優化之臟檢測

Angular性能優化之臟檢測 當我們在使用 Angular 框架搭建項目時,隨著組件越來越多,頁面也來越復雜,性能會越來越低,主要表現在 CPU 使用率 很高。所以我們要對項目做一定的優化。 Angular臟檢查(Change Detection)機制 Angular 的臟檢測主要是指 zone.js,這是一個開源的…

第一章、第一節 Angular基礎

第一章、第一節 Angular基礎 讓我們先來看看Angular是如何實現組件模式的。 組件模式 Angular 應用程序使用組件模式。你可能聽說過這個模式,它不僅用于軟件開發,還用于制造、建筑和其他領域。簡單地說,它涉及到將更小的、離散的構建塊組合…

Angular Chart.js第三方庫ng-chartjs基礎使用

Angular Chart.js第三方庫ng-chartjs基礎使用 項目github地址 這個項目支持基本的Chart.js圖表,并且支持內聯插件和全局插件的使用。 Demo地址 支持圖表類型 linebarradarpiepolarArea安裝 npm install ng-chartjs --save npm install chart.js --save導入 正常導入模塊i…

linux一鍵安裝node+npm

分享一個linux下一鍵安裝nodenpm腳本。 使用方式為: ./install-node.sh,然后輸入版本號,node.js版本查詢 切記不需要加 sudo 執行!!! 默認安裝10.15.0。 #! /bin/bash############################################################ # …

Angular Material 陰影使用

Angular Material 陰影使用 依托于 Angular Material 庫,可以直接使用通用的符合 Material Design 風格的陰影。 使用 使用方式有兩種: 外聯樣式設定,即在css或scss中設定通過class名稱設定,即 元素的class名稱方式一:外聯樣式使用 在scss或css文件中導入@import ~@ang…

typescript或javascript深拷貝Object json

typescript或javascript深拷貝Object json Object的json對象很多時候我們需要深拷貝,我寫了兩個工具函數,供大家參考。 deepCopyObject 深拷貝一個Object對象,返回深復制的對象。 /** * method 深復制一個json對象 * param source 需要深復制的對象 * return 返…

linux安裝zsh終端

linux安裝zsh終端 ZSH 已經被收錄到了 Ubuntu 18.04 LTS 的官方軟件包存儲庫中了 sudo apt install zshZSH Shell 安裝好之后,可以使用如下命令查看其版本: zsh --version取代bash,設為默認shell sudo usermod -s /bin/zsh username也可以…

HTML meta使用

HTML meta使用 meta標簽是什么? meta標簽是HTML語言head區的一個輔助性標簽。 meta標簽是干什么用的? meta標簽用來描述一個HTML網頁文檔的屬性,例如作者、日期和時間、網頁描述、關鍵詞、頁面刷新等。它提供的信息雖然用戶不可見&#x…

共享圖片方案

共享圖片方案 安裝chrome插件 極簡圖床安裝,鏈接地址 插件使用 使用阿里云 OSS 存儲圖片 阿里云 OSS 提供了安全、低成本、高可靠的云存儲服務,極簡圖床針對阿里云 OSS 做了整合,通過簡單的設置,即可方便地將圖片上傳到阿里…

javascript復制到黏貼板之完美兼容

javascript復制到黏貼板之完美兼容 很多時候我們需要給用戶方便,提供一鍵復制的功能,但是在實現的過程中遇到各式各樣的坑。 原生解決方案 document.execCommand()方法 MDN上的定義: which allows one to run commands to manipulate the contents of the edita…

制作windows啟動盤-大于4GB鏡像

制作windows啟動盤-大于4GB鏡像 制作一個 Windows 安裝 U 盤是很容易的,使用 UltraISO 這樣的刻錄工具量產一個 iso 鏡像文件到 U 盤即可。然而隨著 Windows 10 版本號的提升,鏡像變得越來越大,終于 FAT32 文件系統不再能夠容納得下安裝鏡像…

DIY 主機 所有AMD IntelCPU及主板

DIY 主機 所有AMD IntelCPU及主板 查看intel的cpu及amd的cpu或者對應的主板可以查看這個項目。diy-pc

PC介紹之電腦組成

電腦組成 CPU cpu就是中央處理器,英文為central processing unit。 CPU一般我們需要知道以下幾點即可: 主頻 CPU的主頻,即CPU內核工作的時鐘頻率(CPU Clock Speed),通常所說的某某CPU是多少兆赫的&#xff…