如何使用linux程式mdadm建立軟體RAID1軟陣列
磁碟冗餘陣列(RAID)是將多個物理磁碟結合成一個邏輯磁碟的技術,該技術可以提高磁碟容錯效能,提高磁碟的讀寫速度。根據資料儲存的排列(如:條帶儲存,映象儲存,奇偶或者他們的組合),定義了幾個不同級別的RAID(RAID-0,RAID-1,RAID-5 等等)。磁碟陣列可以使用軟體或者硬體方式實現。現代Linux作業系統中,基本的軟體RAID功能是預設安裝的。
本文中,我們將介紹軟體方式構建RAID-1陣列(映象陣列),RAID-1將相同的資料寫到不同的裝置中。雖然可以使用同一個磁碟的兩個分割槽實現RAID-1,但是如果磁碟壞了的話資料就都丟了,所以沒什麼意義。實際上,這也是為什麼大多數RAID級別都使用多個物理磁碟提供冗餘。當單盤失效後不影響整個陣列的執行,並且可以線上更換磁碟,最重要的是資料不會丟失。儘管如此,陣列不能取代外部儲存的定期備份。
由於RAID-1陣列的大小是陣列中最小磁碟的大小,一般來說應該使用兩個大小相同的磁碟來組建RAID-1。
安裝mdadm
我們將使用mdadm(簡稱多盤管理)工具建立、組裝、管理和監控軟體RAID-1。在諸如Fedora、CentOS、RHEL或者Arch Linux 的發行版中,mdadm是預設安裝的。在基於Debian的發行版中,可以使用aptitude 或者 apt-get 安裝mdadm。
Fedora, CentOS 或 RHEL
由於adadm是預裝的,所以我們只需要開啟RAID守護服務,並將其配置成開機啟動即可:
# systemctl start mdmonitor # systemctl enable mdmonitor
對於CentOS/RHEL 6系統,使用以下命令:
# service mdmonitor start # chkconfig mdmonitor on
Debian, Ubuntu 或 Linux Mint
在Debian或類Debian系統中,mdadm可以使用 aptitude 或者 apt-get 安裝:
# aptitude install mdadm
Ubuntu系統中,會要求配置Postfix MTA 以傳送電子郵件通知。你可以跳過去。
Debian系統中,安裝程式會顯示以下解釋資訊,用來幫助我們去判斷是否將根目錄安裝到RAID陣列中。下面的所有操作都有賴於這一步,所以應該仔細閱讀他。
我們不在根目錄使用RAID-1,所以留空。
提示是否開機啟動陣列的時候,選擇“是”。注意,這裡需要往/etc/fstab 檔案中新增一個條目使得系統啟動的時候正確掛載陣列。
硬碟分割槽
現在開始準備建立陣列需要的硬碟。這裡插入兩個8GB的usb磁碟,使用dmesg命令裝置顯示裝置 /dev/sdb 和 /dev/sdc
# dmesg | less
[ 60.014863] sd 3:0:0:0: [sdb] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB) [ 75.066466] sd 4:0:0:0: [sdc] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB)
我們使用fdisk為每個磁碟建立一個大小為8G的主分割槽。以下步驟是如何在/dev/sdb上建立分割槽,假設次磁碟從未被分割槽(如果有其他分割槽的話,可以刪掉):
# fdisk /dev/sdb
按p鍵輸出現在的分割槽表:
(如果有分割槽的話,可以使用 d 選項刪除,w 選項應用更改)。
磁碟上沒有分割槽,所以我們使用命令 ['n'] 建立一個主分割槽['p'], 分配分割槽號為['1'] 並且指定大小。你可以按回車使用預設值,或者輸入一個你想設定的值。如下圖:
用同樣的方法為/dev/sdc 分割槽。
如果我們有兩個不同容量的硬碟,比如 750GB 和 1TB的話,我們需要在每個磁碟上分出一個750GB的主分割槽,大盤剩下的空間可以用作他用,不加入磁碟陣列。
建立 RAID-1 陣列
磁碟分割槽完成後,我們可以使用以下命令建立 RAID-1 陣列:
# mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1
說明:
- -Cv: 建立一個陣列並列印出詳細資訊。
- /dev/md0: 陣列名稱。
- -l1 (l as in "level"): 指定陣列型別為 RAID-1 。
- -n2: 指定我們將兩個分割槽加入到陣列中去,分別為/dev/sdb1 和 /dev/sdc1
以上命令和下面的等價:
# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
如果你想在在磁碟失效時新增另外一個磁碟到陣列中,可以指定 '--spare-devices=1 /dev/sdd1' 到以上命令。
輸入 “y” 繼續建立陣列,回車:
可以使用以下命令檢視進度:
# cat /proc/mdstat
另外一個獲取陣列資訊的方法是:
# mdadm --query /dev/md0 # mdadm --detail /dev/md0 (或 mdadm -D /dev/md0)
'mdadm -D'命令提供的資訊中,最重要就是陣列狀態類。啟用狀態說明陣列正在進行讀寫操作。其他幾個狀態分別為:完成(讀寫完成)、降級(有一塊磁碟失效或丟失)或者恢復中(一張新盤已插入,系統正在寫入資料)。這幾個狀態涵蓋了大多數情況。
格式化或載入磁碟陣列
下一步就是格式化陣列了,本例中使用ext4格式:
# mkfs.ext4 /dev/md0
現在可以載入陣列並驗證其正常載入:
# mount /dev/md0 /mnt # mount
監控磁碟陣列
mdadm工具內建有磁碟陣列監控功能。當mdadm作為守護程式執行的時候(就像我們上文那樣),會週期性的檢測陣列執行狀態,將檢測到的資訊透過電子郵件或者系統日誌報告上來。當然,也可以配置其在發生致命性錯誤的時候呼叫緊急命令。
mdadm預設會記錄所有已知分割槽和陣列的事件,並將他們記錄到 /var/log/syslog中。或者你可以在配置檔案中(debian系統:/etc/mdadm/mdadm.conf ,紅帽子系統:/etc/mdadm.conf )用以下格式指定監控裝置或者陣列。如果mdadm.conf檔案不存在,你可以建立一個。
DEVICE /dev/sd[bcde]1 /dev/sd[ab]1 ARRAY /dev/md0 devices=/dev/sdb1,/dev/sdc1 ARRAY /dev/md1 devices=/dev/sdd1,/dev/sde1 ..... # optional email address to notify events MAILADDR your@email.com
編輯完畢mdadm配置檔案後,重啟mdadm服務:
Debian系統,Ubuntu或者Linux Mint:
# service mdadm restart
Fedora, CentOS 或 RHEL 7:
# systemctl restart mdmonitor
CentOS或者RHEL 6:
# service mdmonitor restart
自動載入陣列
現在我們在/etc/fstab中加入條目使得系統啟動的時候將陣列掛載到/mnt目錄下:
# echo "/dev/md0 /mnt ext4 defaults 0 2" << /etc/fstab
為了驗證掛載指令碼工作正常,我們首先解除安裝陣列,重啟mdadm,然後重新載入。可以看到/dev/md0已經安裝我們新增到/etc/fstab中的條目載入了:
# umount /mnt # service mdadm restart (on Debian, Ubuntu or Linux Mint) or systemctl restart mdmonitor (on Fedora, CentOS/RHEL7) or service mdmonitor restart (on CentOS/RHEL6) # mount -a
現在我們的陣列已經可以訪問了,複製檔案/etc/passwd到/mnt中測試一下:
Debian系統中,需要在/etc/default/mdadm 設定 AUTOSTART 變數為 true 才能使mdadm守護程式在開機時自動載入陣列:
AUTOSTART=true
模擬磁碟丟失故障
我們將使用以下命令解除安裝磁碟來模擬磁碟故障。注意,在實際應用中,磁碟如果已經是故障狀態了,不需要解除安裝。
首先,解除安裝陣列:
# umount /mnt
現在注意每次執行命令後 'mdadm -D /dev/md0' 的輸出。
# mdadm /dev/md0 --fail /dev/sdb1 # 標記 /dev/sdb1 為失效 # mdadm --remove /dev/md0 /dev/sdb1 # 從陣列中移走 /dev/sdb1
然後,如果你有個備用盤的話,重新新增一下:
# mdadm /dev/md0 --add /dev/sdb1
資料會被自動新增到備用盤 /dev/sdb1 上:
注意以上所述步驟只適合支援磁碟熱拔插的系統,在不支援熱拔插的系統中,還是得停止陣列並關機後更換備用盤:
# mdadm --stop /dev/md0 # shutdown -h now
最後將新驅動器重新新增到陣列中:
# mdadm /dev/md0 --add /dev/sdb1 # mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1
希望本文對你有所幫助。
via: http://xmodulo.com/2014/09/create-software-raid1-array-mdadm-linux.html
作者:Gabriel Cánepa 譯者:shipsw 校對:wxy
相關文章
- mdadm linux 做軟磁碟陣列 raid0Linux陣列AI
- 如何從 Linux 命令列安裝軟體Linux命令列
- Kali Linux 如何使用 軟體商店Linux
- 如何使用 XYZ 軟體建立複雜圖形
- Linux Shell 陣列建立及使用技巧Linux陣列
- 如何建立軟體測試管理體系?
- linux下用mdadm命令實現軟raid(zt)LinuxAI
- 針對mdadm的RAID1失效測試AI
- 如何使用eclipse軟體建立一個Java專案?EclipseJava
- Linux Shell 建立序列陣列Linux陣列
- 使用 arch-ppa 建立你自己的 Arch Linux 軟體庫Linux
- 使用 defineNuxtRouteMiddleware 建立路由中介軟體UX路由
- 深圳軟體測試培訓:java中陣列的操作Java陣列
- 如何在 Linux 上使用 dnf 命令安裝軟體包?Linux
- Java陣列宣告建立和使用以及多維陣列、Arrays類、稀疏陣列Java陣列
- 使用陣列建立分頁資料陣列
- VM軟體建立共享磁碟
- Linux軟體管理之YUM軟體管理Linux
- 分析如何使用專案管理軟體管理軟體開發團隊專案管理
- 蘋果應用加密軟體如何使用蘋果加密
- 如何使用軟體繪製流程圖!流程圖
- 如何使用 Issue 管理軟體專案?
- Linux下使用f.lux軟體Linux
- Linux 中軟體 RAID 的使用LinuxAI
- 使用CRM軟體系統建立的分配規則
- 伺服器磁碟陣列raid1資料恢復伺服器陣列AI資料恢復
- 使用 crontab 自動化命令列軟體的更新命令列
- [Linux] 軟 RAID (mdadm) 一些不瞭解的地方的測試LinuxAI
- C++ 使用 new 建立二維陣列C++陣列
- 在Linux中,如何配置軟體RAID?LinuxAI
- 如何在企業中建立軟體測試的威望
- 如何建立良好的軟體?軟體不僅僅是編寫程式碼而更是開發知識! - csc.gov.sgGo
- 開源運維軟體 WGCLOUD 可以監控磁碟陣列嗎運維GCCloud陣列
- websphere如何部署應用程式_中介軟體Web
- 錄影片軟體電腦版如何使用?
- 如何使用通用軟體簡化CI/CD?
- 【軟體工具】SecureCRT 軟體安裝與使用Securecrt
- linux下使用yum upgrade軟體包Linux