1. 程式人生 > >linux下raid學習心得和raid0的實現

linux下raid學習心得和raid0的實現

常見的硬碟:SATA一般pc機主流的硬碟。SCSI一般伺服器應用廣泛。IDE比較老,二者均可。

RAID 的意思是廉價磁碟冗餘陣。是一些列放在一起,成為一個邏輯卷的磁碟集合。

軟體RAID和硬體RAID

軟體RAID的效能低,使用主機資源,載入RAID軟體,從軟體RAID卷中讀取資料。無需物理硬體,成本低。

硬體RAID效能高,使用pciexpress 卡物理的提供專有RAID控制器。不使用主機資源。有NVRAM用於快取的讀取和寫入。快取用於RAID重建,即使出現電源故障,也會使用後背電池電源保持快取,但十分昂貴。

幾個概念:

1條帶化:將切片資料隨機儲存到多個磁碟。至少要用兩塊磁碟。

2映象:映象用來自動備份資料。儲存相同的內容到其他磁碟。

3熱備份:自動更換髮生故障的驅動器。

4塊:每次讀寫資料的最小單位。

5校驗:用於重新生成丟失的內容。

首先,raid級別代表的是種類不同,在不同的場合有不同的應用。

raid0是條帶化


好處是讀寫速度快。

壞處是零容錯。

raid1是映象化


好處是當一個壞掉可以完全回覆。

壞處是磁碟利用率變為原來的1/2,寫效能也會變慢

raid4是奇偶校驗

一塊磁碟做校驗,好處是如果壞了一塊磁碟的話可以恢復資料,利用率為n-1/n。壞處是每次儲存資料都要訪問校驗磁碟

raid5是分散式奇偶校驗


校驗碼分佈在不同磁碟快。好處是如果壞了一塊磁碟的話可以恢復資料,利用率為n-1/n。

但壞兩塊就不行了

raid6

是雙分散式奇偶校驗

利用率為n-2/n

壞三塊內都可以恢復

raid0+1或1+0


先映象再條帶或先條帶再映象。

1/2利用率,可重建。可用於資料庫儲存

mdadm:將任何塊裝置做成raid

模式化命令:

         建立模式-c

                   -l:級別

                   -n:裝置個數

                   -a:裝置檔案

                   -c:資料塊大小

                   -x #:指定空閒盤個數

         管理模式

                   mdadm/dev/md# --fail /dev/sda#

                   mdadm/dev/md# --remove /dev/sda#

         監控模式-f

         增長模式-g

         裝配模式-a

         -d --detail 檢視裝置檔案詳情

第一步fdisk -l

先檢視一下磁碟的分割槽大小情況

fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes----------------------磁碟21.5G
255 heads, 63 sectors/track, 2610 cylinders-----------------------磁頭,扇區,柱面
Units = cylinders of 16065 * 512 = 8225280 bytes---------------柱面大小
Sector size (logical/physical): 512 bytes / 512 bytes-------------扇區512
I/O size (minimum/optimal): 512 bytes / 512 bytes-------------i/o大小
Disk identifier: 0x0006a64d


   Device Boot      Start        End      Blocks  Id  System
/dev/sda1   *           1          39      307200  83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              39        2489   19680256   83  Linux
/dev/sda3            2489        2611      983040  82  Linux swap / Solaris


這裡已經把2610個柱面全部使用了。因此需要重新劃分一下。

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


sdb是新加的磁碟,還未使用。

第二步:磁碟分割槽。fdisk /dev/sdb

Command (m for help):


這一行後面輸入 n,代表建立分割槽。如果不知道命令的話輸入m會彈出所有命令的列表。

Command action
  e   extended
  p   primary partition (1-4)


輸入n後會出現這個選項。選e還是選p。這裡需要普及一下。linux的磁碟檔案,最多有四個主分割槽,如果有擴充套件分割槽的,擴充套件分析必須是小於等於第四個的位置,也就是擴充套件分割槽之前的設定為主分割槽。擴充套件分割槽的主要作用是用來劃分邏輯分割槽的。邏輯分割槽的個數不限制,但不能超過15號,只要磁碟夠大就可以。

因此,我們可以先建立3個主分割槽。輸入命令p

Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610,default 2610): +400


上面涉及三個操作。第一個是選擇主分割槽號,我們選1.第二個是選擇主分割槽的開始柱面號,預設是1,我們直接回車,使用預設1,作為主分割槽1的第一個柱面。第三個是選擇最後一個柱面號,也就是設定第一主分割槽的結尾。我們使用+400,意思是在主分割槽1的大小為400的柱面。

Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (402-2610, default 402):
Using default value 402
Last cylinder, +cylinders or +size{K,M,G}(402-2610, default 2610): +400


繼續重複這個過程,直到建立3個主分割槽。我們可以看到,使用的柱面號是被自動識別的。因此,我們可以可以根據提示,選擇預設的第二個主分割槽的初始柱面號,依然使用+400的操作來設定大小。

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
e
Selected partition 4
First cylinder (1204-2610, default 1204):
Using default value 1204
Last cylinder, +cylinders or +size{K,M,G}(1204-2610, default 2610): +1200


當建立最後一個時候,我們選擇e,輸入4,然後將擴充套件分割槽設定大小為1200個柱面。

接下來是設定邏輯分割槽。

Command (m for help): n
First cylinder (1204-2404, default 1204):
Using default value 1204
Last cylinder, +cylinders or +size{K,M,G}(1204-2404, default 2404): +200
 
Command (m for help): n
First cylinder (1405-2404, default 1405):
Using default value 1405
Last cylinder, +cylinders or +size{K,M,G}(1405-2404, default 2404): +200
 
Command (m for help): n
First cylinder (1606-2404, default 1606):
Using default value 1606
Last cylinder, +cylinders or +size{K,M,G}(1606-2404, default 2404): +200
 
Command (m for help): n
First cylinder (1807-2404, default 1807):
Using default value 1807
Last cylinder, +cylinders or +size{K,M,G}(1807-2404, default 2404): +200


邏輯分割槽建立是遞增的,不用你選號碼,大小還是要設定的,我們依然使用預設的初始柱面,大小設定為200

Command (m for help): t
Partition number (1-8): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd(Linux raid autodetect)


t命令是設定劃分的分割槽的類別的,這裡我們把5-8都設定為fd,fd就是linux raidautodetect

點一下w,別用q,不儲存就退出的話,就完了。

partprobe /dev/sda       ---讓系統識別分割槽。只要是fdisk -l 有顯示就說明成功了。

第三步:建立raid

mdadm -C /dev/md0 -a yes -l 0 -n 2/dev/sda{5,8}

-a yes 選項是預設的,不加也是這個引數。自動擴充套件

-l指定等級,raid0,可以raid1等等

-n 指定裝置,raid0使用兩個就可以條帶了。

後面指定用那些裝置,sda5,sda8。當然可以分開寫,/dev/sda5  /dev/sda6

第四步:檢視一下

cat /proc/mdstat

Personalities : [raid0]
md0 : active raid0 sdb8[1] sdb5[0]
     3226624 blocks super 1.2 512k chunks


第五步:格式化md0,格式化是為了稍後的掛載。

mke2fs -j /dev/md0

mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
202000 inodes, 806656 blocks
40332 blocks (5.00%) reserved for the superuser
First data block=0
Maximum filesystem blocks=826277888
25 block groups
32768 blocks per group, 32768 fragments pergroup
8080 inodes per group
Superblock backups stored on blocks:
         32768,98304, 163840, 229376, 294912
 
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystemaccounting information: done
 
This filesystem will be automaticallychecked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


第六步:掛載md0

mount /dev/md0 /mnt

第七步:檢視md0詳情

mdadm --detail /dev/md0

/dev/md0:
       Version : 1.2
 Creation Time : Wed Oct 12 00:41:09 2016
    Raid Level : raid0
    Array Size : 3226624 (3.08 GiB 3.30 GB)
  Raid Devices : 2
 Total Devices : 2
   Persistence : Superblock is persistent
 
   Update Time : Wed Oct 12 00:41:09 2016
         State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
 Spare Devices : 0
 
    Chunk Size : 512K
 
          Name : slave-01:0  (local to hostslave-01)
          UUID : 01dc4e54:2db8007e:48a85eed:575bf4ba
        Events : 0
 
   Number   Major   Minor  RaidDevice State
      0       8       21       0      active sync   /dev/sdb5
       1      8       24        1     active sync   /dev/sdb8

相關推薦

linuxraid學習心得raid0實現

常見的硬碟:SATA一般pc機主流的硬碟。SCSI一般伺服器應用廣泛。IDE比較老,二者均可。 RAID 的意思是廉價磁碟冗餘陣。是一些列放在一起,成為一個邏輯卷的磁碟集合。 軟體RAID和硬體RAID 軟體RAID的效能低,使用主機資源,載入RAID軟體,從軟體RAID卷

linux用互斥鎖條件變數來實現讀寫鎖

以下內容來源自UNP卷二的第八章 讀寫鎖的概念( the conception of read-write lock ) (1)只要沒有執行緒持有某個給定的讀寫鎖用於寫,那麼任意數目的執行緒可以持有該執行緒用於讀 (2)僅當沒有執行緒持有某個給定的讀寫鎖用於讀或用於寫,才能分配該

第67課:Spark SQL采用JavaScala實現Join的案例綜合實戰(鞏固前面學習的Spark SQL知識)

內容:     1.SparkSQL案例分析     2.SparkSQL下采用Java和Scala實現案例 一、SparkSQL下采用Java和Scala實現案例 學生成績: {"name":"Michael","score":98} {"name":"Andy"

MongoDB學習一--在Linux的yum安裝配置

MongoDB is an open-source document database that provides high performance, high availability, and automatic scaling. 正式學習MongoDB了,從官網htt

Linuxgcc編譯器生成使用靜態庫動態庫學習筆記

我們通常把一些公用函式製作成函式庫,供其它程式使用。函式庫分為靜態庫和動態庫兩種。靜態庫在程式編譯時會被連結並拷貝到目的碼中,程式執行時將不再需要該靜態庫。動態庫在程式編譯時並不會被拷貝到目的碼中,而是在程式執行時才被載入,因此在程式執行時還需要動態庫存在。本質上說庫是一

linux 利用ls grep 正則表示式實現目錄檔案的分開顯示

要列出當前目錄下所有的檔名和目錄名直接使用ls命令即可。但如何只列出檔名而不列出目錄呢?查遍了ls 的幫助,也沒看到有這個現成的選項。幸好這個問題還是比較常見的,網上已經有了一些解答,但實驗之後,我發現看到的幾個連結給出的解決方法都是不完全正確的。具體如下。一、網上流傳的解

Linux的C語言程式設計——簡單實現tcp客戶端伺服器

以下程式均未做錯誤處理,等有時間一定完善 客戶端 #include <stdio.h> #include <sys/socket.h> #include <stdlib.

linuxjdk的安裝配置

rac -s watermark img 使用 etc 文件拷貝 安裝 com 一、首先依據自己的系統位數在網上下載對應的jdk安裝包 下載地址例如以下:http://www.oracle.com/technetwork/java/javase/downloads/jd

奪命雷公狗---linux NO:27 linux的密碼管理用戶切換以及sudo的使用

意思 發現 which window 明顯 能開 操作 賬戶 修改 我們在windows下用戶名是可以設置空密碼登錄的,但是在linux 裏面必須要設置一個密碼才可以登錄,否則會失敗的。。。 在linux 下設置密碼可以使用 passwd 這個命令來進行設置。。。 但是

LinuxMySQL的備份恢復

mysql備份 再也不用擔心數據丟失了 MySQL備份的原因 1. 災難恢復 2. 審計 3. 測試1234512345mysql的備份類型 1. 根據服務器的在線狀態: 熱備:服務器處於運行狀態 冷備:服務器出去停止狀態 溫備:服務器處於半離線狀態,只能讀,但是不能

Linux安裝Python3.x第三方庫

方便 tls libpcap 輸入 zlib cert ase $path pip安裝 如果本機安裝了python2,盡量不要管他,使用python3運行python腳本就好,因為可能有程序依賴目前的python2環境, 比如yum!!!!! 不要動現有的python2環境

etcd的學習心得使用

etcd 單機 cluster 學習操作1 etcd key-value 存儲結構 “A highly-available key value store for shared configuration and service discovery.”  Etcd是coreos開發的分布式服務系統,內部采用r

Linuxvsftpd的配置使用

vsftpd設置通過ftp向linux主機傳輸文件十分方便,但是在使用之前也需要對主機進行相關設置。首先是對vsftpd進行配置,詳細的信息可以見這個博客:https://www.huzs.net/?p=1213#server_vsftpd.conf 但是當配置好vsftpd後,仍然無法用ftp鏈接到linu

linux的靜態庫動態庫

列表 可執行文件 運行時 打包 文件的 ade 命令 div library 一、linux下的靜態庫 靜態庫中的被調用的函數的代碼會在編譯時一起被復制到可執行文件中去的!!可執行文件在運行不需要靜態庫的存在! 二、linux下動態庫的構建和使用 1、動態庫的構建

LinuxMySQL的安裝啟動(轉載)

enable linu char cal mysql用戶 客戶端程序 ast 初學 unix 原文鏈接:http://www.linuxidc.com/Linux/2016-07/133234.htm 一、MySQL各類安裝方法的比較 在Linux系統下,MySQL有3種主

Linux安裝Python3.6第三方庫

python安裝一、安裝Python-3.6.2.tgz安裝依賴環境最小化安裝Redhat6.4環境下yum -y install gcc make zlib-devel bzip2-devel ncurses-devel readline-devel(yum -y install gcc mak

linux gogs的安裝web鉤子

目錄 就是 文件中 mit inux 倉庫 創建 開始 下載安裝 linux系統下 gogs下載安裝以及web鉤子的使用 (1)下載gogs 官方網址:https://dl.gogs.io/ 選擇合適的版本,解壓後就可以使用了 啟動gogs的命令: ./gos web

Linux多節點SSH無密碼互聯實現

openssh color pre 都是 測試 創建 私鑰 無密碼ssh 需要 需求:有3個主機192.168.0.191、192.168.0.192、192.168.0.193,需要實現無密碼ssh互聯訪問 我使用的是root用戶進行操作的: 1、每個節點分別檢查是否安裝

LinuxRedis的安裝部署(轉)

分享圖片 rpo service bare moni res linux文件 情況下 遠程管理 一、Redis介紹 Redis是當前比較熱門的NOSQL系統之一,它是一個key-value存儲系統。和Memcache類似,但很大程度補償了Memcache的不足,它支

Linuxmakefile學習

文本文 新規 兩個 組成 https 當前 自動更新 mman n) [make是什麽?]   make是一個命令工具,是一個解釋makefile中指令的命令工具。它可以簡化編譯過程裏面所下達的指令,當執行 make 時,make 會在當前的目錄下搜尋 Makefile (