第五章 第二節RAID 4 16

2021-08-18 21:15:14 字數 4400 閱讀 2111

mdadm:

-c / --creat:建立乙個新的陣列

-a:啟用磁碟陣列

-d / --detail:列印陣列裝置的詳細資訊

-s / --scan:掃瞄配置檔案或/proc/mdstat得到陣列缺失資訊

-f:將裝置狀態定位故障

-a / --add:新增裝置到陣列

同意建立裝置,如不加此引數時必須先使用mknod命令來建立乙個raid裝置,

不過推薦使用-a yes引數一次性建立;

-v / --verbose:顯示詳細資訊

-r:移除裝置

-l / --level=0 1 4 5 6:設定陣列的級別,陣列模式,支援的陣列模式有linear, raid0,

raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;

-n / --raid-devices=:指定陣列成員(分割槽/磁碟)的數量(活動盤的數量)

-x / --spare-devicds=:指定陣列中熱備盤的數量。陣列中活動磁碟的數目,

加上備用磁碟的數目應該等於陣列中總的磁碟數目;

-c / --chunk:設定陣列的塊chunk大小,單位為kb

-g /--grow:改變陣型大小或形態(將活動盤轉換為熱備盤,熱備盤轉換為活動盤)

參與建立陣列的磁碟名稱:可以用{},【】

例:/dev/sd1 或者 /dev/sd[b,c]1

1、建立raid0

(1)新建分割槽:需要兩塊硬碟,/dev/sdb和/dev/sdc

fdisk  /dev/sdb(/dev/sdc) -->n,新建分割槽(只建立乙個p即可,全部大小)-->p,檢視分割槽

(2)修改分割槽型別:預設型別為83:linux

將其改為raid型別:t(修改型別)--> l,檢視型別列表 -->fd:linux raid auto -->p,檢視分割槽

(3)儲存分割槽:w

(4)檢視狀態:fdisk -l /dev/sdb /dec/sdc(可同時檢視多個磁碟)

(5)開始建立raid0:

mdadm -c /dev/md0 -ayes -l0 -n2 /dev/sd1

(6)檢視raid0狀態:

1)cat /proc/mdstat

2)mdadm -d /dev/md0:列印列陣/dev/md0的詳細資訊

(7)建立raid配置檔案/etc/mdadm.conf(配置檔案必須建立,且輸入內容)

建立/etc/mdadm.conf

# echo device /dev/sd1 >> /etc/mdadm.conf

# mdadm –ds >> /etc/mdadm.conf    

(8)格式化磁碟陣列:

mkfs.ext4 /dev/md0

(9)建立掛載點並掛載

mkdir/mnt/raid0

mount /dev/md0 /mnt/raid0

寫入/etc/fstab

為了下次開機還能正常使用我們的raid裝置,需要將掛載的資訊寫入/etc/fstab檔案中。

然後重啟reboot ,再df -h

2、建立raid1

(1)新建分割槽並修改分割槽型別為(raid0)

(2)開始建立raid1:

mdadm -c /dev/md1 -ayes -l1 -n2 /dev/sd[d,e]1

(3)檢視raid1狀態:

1)cat /proc/mdstat

2)mdadm -d /dev/md1:列印列陣/dev/md1的詳細資訊       

(4)新增raid1 到raid 配置檔案/etc/mdadm.conf並修改

# echo device /dev/sd1 >> /etc/mdadm.conf

# mdadm –ds >> /etc/mdadm.conf

(5)格式化磁碟陣列

mkfs.ext4 /dev/md1

(6)建立掛載點並掛載

mkdir/mnt/raid1

mount /dev/md1 /mnt/raid1/

將掛載的資訊寫入/etc/fstab檔案中。然後重啟reboot ,再df -h

3、建立raid5

這四塊硬碟,三塊做為活動盤,另一塊做為熱備盤。

(1)新建分割槽並修改分割槽型別為(raid0)

(2)建立raid5

mdadm -c /dev/md5 -ayes -l5 -n3 -x1 /dev/sd[f,g,h,i]1

(3)檢視raid5狀態:

1)cat /proc/mdstat

2)mdadm -d /dev/md5:列印列陣/dev/md5的詳細資訊       

(4)新增raid5 到raid 配置檔案/etc/mdadm.conf並修改

# echo device /dev/sd1 >> /etc/mdadm.conf

# mdadm –ds >> /etc/mdadm.conf

(5)格式化磁碟陣列

mkfs.ext4 /dev/md5

(6)建立掛載點並掛載

mkdir /mnt/raid5

mount /dev/md5 /mnt/raid5/

將掛載的資訊寫入/etc/fstab檔案中。然後重啟reboot ,再df -h

4、raid維護

(1)啟動陣列:

mdadm -as /dev/md0

-a:啟用已存在的陣列

-s:以/etc/mdadm.conf配置檔案為依據

若沒有建立mdadm.conf配置檔案(或檔案有誤):

mdadm –a  /dev/md0  /dev/sd[bc]1

(2)停止陣列

mdadm -s /dev/md0

(3)顯示陣列詳細資訊

mdadm -d /dev/md0

5、模擬raid5 中磁碟損壞來講解軟raid 的維護操作

(1)往/mnt/raid5 掛載目錄中,寫入測試資料(建立的文件要大,用dd)

cd /mnt/raid5

dd if=/dev/zero of=test_raid5.failed bs=100g count=1

test_raid5.failed

test_raid5.fail

(2)模擬磁碟損壞,/dev/sdh1 模擬為出現故障的磁碟

mdadm /dev/md5 -f /dev/sdh1

(3)檢視重建狀態(必須第一時間檢視,否則就修復好了)

當有標記為故障磁碟的時候,熱備盤會自動頂替故障磁碟工作,

陣列也能夠在短時間內實現重建。通過檢視"/proc/mdstat" 檔案可以看到

當前陣列的狀態

cat /proc/mdstat

mdadm -d /dev/md5

(4)檢視之前寫入的測試資料是否存在(應為正常,不丟失)

test_raid5.faild 和 test_raid5.fail

(5)重建完畢之後檢視陣列狀態(應為恢復正常)

cat /proc/mdstat

(6)移除損壞的磁碟

mdadm /dev/md5 -r /dev/sdh1

(7)新加熱備磁碟

將剛才模擬損壞的硬碟新加到raid5中

mdadm /dev/md5 -a /dev/sdh1

(8)檢視raid5陣列狀態

mdadm -d /dev/md5---->/dev/sdh1已經變為熱備盤

6、向raid中增加儲存硬碟

(1)新加一塊硬碟(加的為熱備盤)

mdadm /dev/md5 -a /dev/sdj1

(2)將熱備盤轉換成活動盤

mdadm -g /dev/md5 -n4

(3)對檔案系統進行擴容(即總容量重新整理一下,加上新增的盤的容量)

df -h

resize2fs /dev/md5

df -h

(4)修改配置檔案/etc/mdadm.cong

(5)重啟reboot

7、軟體磁碟陣列的刪除

(1)停止raid

mdadm--stop /dev/md0

mdadm--misc--zero-superblock /dev/sdb (/dev/sdb為/dev/md0中的盤)

mdadm--misc--zero-superblock /dev/sdc (/dev/sdc為/dev/md0中的盤)

mdadm--misc--zero-superblock /dev/sdd (/dev/sdd為/dev/md0中的盤)

(2)為了防止系統啟動時候啟動raid

vim /etc/mdadm.conf 配置檔案中把該裝置相關的資訊刪除

(3)減少raid中的磁碟數量

使用 mdadm 的 grow 模式

第五章第二節 雜湊開放定址法

開放定址雜湊法 是另一種不用鍊錶解決衝突的方法,在開放定址雜湊演算法系統中,如果有衝突發生,那麼就要嘗試選擇另外的單元,直到找出空的單元為止。公式 hi x hash x f i mod tablesize 關鍵字x的位置等於 hash函式返回的位置在加上f i 的位置 mod tablesize ...

第五章 5 1節練習

練習5.1 什麼是空語句?什麼時候會用到空語句?解答 引用 空語句就是含有乙個單獨分號的語句。引用 如果在程式的某個地方,語法上需要一條語句但是邏輯上不需要,此時應該使用空語句。練習5.2 什麼是塊?什麼時候會用到塊?解答 引用 復合語句是指用花括號括起來的語句和宣告的序列,復合語句也被稱作塊。引用...

第二章 第二節 注釋

零 怎麼編寫注釋 編寫注釋的方式有三種 1.以 開頭 2.以三個 開頭和結尾 3.以三個 開頭和結尾 定義乙個字串變數 name 張三 定義乙個函式 defgetname return name defsetname n param n 姓名 return name n defsetage age ...