RAID 1 軟體實現(Linux 系統)

来源:https://www.cnblogs.com/Renqy/archive/2020/06/10/13083241.html
-Advertisement-
Play Games

實現raid有2種方式:軟體 RAID 的性能較低,因為其使用主機的資源。 需要載入 RAID 軟體以從軟體 RAID 捲中讀取數據。在載入 RAID 軟體前,操作系統需要引導起來才能載入 RAID 軟體。在軟體 RAID 中無需物理硬體。零成本投資。硬體 RAID 的性能較高。他們採用 PCI E... ...


實現raid有2種方式:

軟體 RAID 的性能較低,因為其使用主機的資源。 需要載入 RAID 軟體以從軟體 RAID 捲中讀取數據。在載入 RAID 軟體前,操作系統需要引導起來才能載入 RAID 軟體。在軟體 RAID 中無需物理硬體。零成本投資。

硬體 RAID 的性能較高。他們採用 PCI Express 卡物理地提供有專用的 RAID 控制器。它不會使用主機資源。他們有 NVRAM 用於緩存的讀取和寫入。緩存用於 RAID 重建時,即使出現電源故障,它會使用後備的電池電源保持緩存。對於大規模使用是非常昂貴的投資。

RAID有不同的級別。在這裡,我們僅列出在真實環境下的使用最多的 RAID 級別。

    • RAID0 = 條帶化
    • RAID1 = 鏡像
    • RAID5 = 單磁碟分散式奇偶校驗
    • RAID6 = 雙磁碟分散式奇偶校驗
    • RAID10 = 鏡像 + 條帶。(嵌套RAID)

e850352ac65c103887cd779ab3119313b07e8933

RAID 1稱為磁碟鏡像,原理是把一個磁碟的數據鏡像到另一個磁碟上,也就是說數據在寫入一塊磁碟的同時,會在另一塊閑置的磁碟上生成鏡像文件,在不影響性能情況下最大限度的保證系統的可靠性和可修複性上,只要系統中任何一對鏡像盤中至少有一塊磁碟可以使用,甚至可以在一半數量的硬碟出現問題時系統都可以正常運行,當一塊硬碟失效時,系統會忽略該硬碟,轉而使用剩餘的鏡像盤讀寫數據,具備很好的磁碟冗餘能力。雖然這樣對數據來講絕對安全,但是成本也會明顯增加,磁碟利用率為50%,以四塊80GB容量的硬碟來講,可利用的磁碟空間僅為160GB。另外,出現硬碟故障的RAID系統不再可靠,應當及時的更換損壞的硬碟,否則剩餘的鏡像盤也出現問題,那麼整個系統就會崩潰。更換新盤後原有數據會需要很長時間同步鏡像,外界對數據的訪問不會受到影響,只是這時整個系統的性能有所下降。因此,RAID 1多用在保存關鍵性的重要數據的場合。

RAID 1主要是通過二次讀寫實現磁碟鏡像,所以磁碟控制器的負載也相當大,尤其是在需要頻繁寫入數據的環境中。為了避免出現性能瓶頸,使用多個磁碟控制器就顯得很有必要。

RAID 1 :磁碟利用率為50%,二次讀寫實現磁碟鏡像。

1、準備工作

安裝系統後,主板上連接2塊硬碟,這裡我用虛擬機做實驗。

試驗系統:Centos 8.1.1911

2、創建邏輯捲RAID 1

查看邏輯捲及分區

[root@study ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   20G  0 disk
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   19G  0 part
  ├─cl-root 253:0    0   17G  0 lvm  /
  └─cl-swap 253:1    0    2G  0 lvm  [SWAP]
sdb           8:16   0    1G  0 disk
sdc           8:32   0    1G  0 disk
sr0          11:0    1 1024M  0 rom
[root@study ~]#

我們使用sdb 和 sdc 簡歷邏輯捲RAID1

[root@study ~]# mdadm -C /dev/md0 -l raid1 -n 2 /dev/sdb /dev/sdc
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@study ~]#

查看狀態

[root@study ~]# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Jun  9 07:24:46 2020
        Raid Level : raid1
        Array Size : 1046528 (1022.00 MiB 1071.64 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Jun  9 07:24:52 2020
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : study.server.com:0  (local to host study.server.com)
              UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
[root@study ~]#

格式化分區並掛載使用

[root@study ~]# mkfs.ext4 /dev/md0
mke2fs 1.44.6 (5-Mar-2019)
創建含有 261632 個塊(每塊 4k)和 65408 個inode的文件系統
文件系統UUID:07d1f71a-95dd-4985-b018-e205de9b9772
超級塊的備份存儲於下列塊:
	32768, 98304, 163840, 229376

正在分配組表: 完成
正在寫入inode表: 完成
創建日誌(4096 個塊)完成
寫入超級塊和文件系統賬戶統計信息: 已完成

[root@study ~]# mkdir /mnt/raid1
[root@study ~]# mount /dev/md0 /mnt/raid1/
[root@study ~]# echo "this is linux raid1" > /mnt/raid1/readme.txt
[root@study ~]# ll /mnt/raid1/readme.txt
-rw-r--r--. 1 root root 20 6月   9 07:27 /mnt/raid1/readme.txt
[root@study ~]# cat /mnt/raid1/readme.txt
this is linux raid1
[root@study ~]#

配置自動掛載

[root@study ~]# umount /mnt/raid1
[root@study ~]# blkid /dev/md0
/dev/md0: UUID="07d1f71a-95dd-4985-b018-e205de9b9772" TYPE="ext4"
[root@study ~]# vim /etc/fstab
[root@study ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu May 28 03:40:23 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=9df293e1-6753-4be2-9733-dad673e61f4a /boot                   ext4    defaults        1 2
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
UUID="07d1f71a-95dd-4985-b018-e205de9b9772" /mnt/raid1 ext4 defaults 0 0
[root@study ~]# mount -a
[root@study ~]# df -h
文件系統             容量  已用  可用 已用% 掛載點
devtmpfs             885M     0  885M    0% /dev
tmpfs                903M     0  903M    0% /dev/shm
tmpfs                903M  9.4M  894M    2% /run
tmpfs                903M     0  903M    0% /sys/fs/cgroup
/dev/mapper/cl-root   17G  4.3G   13G   26% /
/dev/sda1            976M  143M  766M   16% /boot
tmpfs                181M  1.2M  180M    1% /run/user/42
tmpfs                181M  4.0K  181M    1% /run/user/0
/dev/md0             990M  2.6M  921M    1% /mnt/raid1
[root@study ~]#

3、模擬raid磁碟故障

移除磁碟sdc。

移除後,partprobe刷新下分區。

[root@study ~]# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Jun  9 07:24:46 2020
        Raid Level : raid1
        Array Size : 1046528 (1022.00 MiB 1071.64 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Jun  9 07:30:15 2020
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : study.server.com:0  (local to host study.server.com)
              UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
[root@study ~]# partprobe /dev/md0
[root@study ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   20G  0 disk
├─sda1        8:1    0    1G  0 part  /boot
└─sda2        8:2    0   19G  0 part
  ├─cl-root 253:0    0   17G  0 lvm   /
  └─cl-swap 253:1    0    2G  0 lvm   [SWAP]
sdb           8:16   0    1G  0 disk
└─md0         9:0    0 1022M  0 raid1 /mnt/raid1
sr0          11:0    1 1024M  0 rom

查看raid1狀態數據

發現數據依然存在,沒有影響到數據。

[root@study ~]# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Jun  9 07:24:46 2020
        Raid Level : raid1
        Array Size : 1046528 (1022.00 MiB 1071.64 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Jun  9 07:35:17 2020
             State : clean, degraded
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 1
     Spare Devices : 0

Consistency Policy : resync

              Name : study.server.com:0  (local to host study.server.com)
              UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c
            Events : 20

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       -       0        0        1      removed

       1       8       32        -      faulty   /dev/sdc
[root@study ~]# ll /mnt/raid1/
總用量 20
drwx------. 2 root root 16384 6月   9 07:26 lost+found
-rw-r--r--. 1 root root    20 6月   9 07:27 readme.txt
[root@study ~]# cat /mnt/raid1/readme.txt
this is linux raid1
[root@study ~]#

修複RAID1

移除故障磁碟,插入新磁碟,然後重啟伺服器。

[root@study ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   20G  0 disk
├─sda1        8:1    0    1G  0 part  /boot
└─sda2        8:2    0   19G  0 part
  ├─cl-root 253:0    0   17G  0 lvm   /
  └─cl-swap 253:1    0    2G  0 lvm   [SWAP]
sdb           8:16   0    1G  0 disk
└─md0         9:0    0 1022M  0 raid1 /mnt/raid1
sdc           8:32   0    1G  0 disk
sr0          11:0    1 1024M  0 rom
[root@study ~]# df -h
文件系統             容量  已用  可用 已用% 掛載點
devtmpfs             886M     0  886M    0% /dev
tmpfs                904M     0  904M    0% /dev/shm
tmpfs                904M  9.4M  894M    2% /run
tmpfs                904M     0  904M    0% /sys/fs/cgroup
/dev/mapper/cl-root   17G  4.4G   13G   26% /
/dev/sda1            976M  143M  766M   16% /boot
tmpfs                181M  1.2M  180M    1% /run/user/42
tmpfs                181M  4.0K  181M    1% /run/user/0
/dev/md0             990M  2.6M  921M    1% /mnt/raid1
[root@study ~]# umount /mnt/raid1
[root@study ~]# mdadm --manage /dev/md0 --add /dev/sdc
mdadm: added /dev/sdc
[root@study ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   20G  0 disk
├─sda1        8:1    0    1G  0 part  /boot
└─sda2        8:2    0   19G  0 part
  ├─cl-root 253:0    0   17G  0 lvm   /
  └─cl-swap 253:1    0    2G  0 lvm   [SWAP]
sdb           8:16   0    1G  0 disk
└─md0         9:0    0 1022M  0 raid1
sdc           8:32   0    1G  0 disk
└─md0         9:0    0 1022M  0 raid1
sr0          11:0    1 1024M  0 rom

查看數據

[root@study ~]# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Jun  9 07:24:46 2020
        Raid Level : raid1
        Array Size : 1046528 (1022.00 MiB 1071.64 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Jun  9 21:11:45 2020
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : study.server.com:0  (local to host study.server.com)
              UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c
            Events : 53

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       2       8       32        1      active sync   /dev/sdc
[root@study ~]# mount -a
[root@study ~]# df -h
文件系統             容量  已用  可用 已用% 掛載點
devtmpfs             886M     0  886M    0% /dev
tmpfs                904M     0  904M    0% /dev/shm
tmpfs                904M  9.4M  894M    2% /run
tmpfs                904M     0  904M    0% /sys/fs/cgroup
/dev/mapper/cl-root   17G  4.4G   13G   26% /
/dev/sda1            976M  143M  766M   16% /boot
tmpfs                181M  1.2M  180M    1% /run/user/42
tmpfs                181M  4.0K  181M    1% /run/user/0
/dev/md0             990M  2.6M  921M    1% /mnt/raid1
[root@study ~]# ll /mnt/raid1/
總用量 20
drwx------. 2 root root 16384 6月   9 07:26 lost+found
-rw-r--r--. 1 root root    20 6月   9 07:27 readme.txt
[root@study ~]# cat /mnt/raid1/readme.txt
this is linux raid1
[root@study ~]#


讀書和健身總有一個在路上

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 你應該曾經糾結過是用kmalloc(),還是vmalloc()?現在你不用那麼糾結了,因為內核裡面現在有個API叫kvmalloc(),可以認為是kmalloc()和vmalloc()的雙劍合一。屠龍刀和倚天劍的合體。 內核裡面有大量的代碼現在都使用了kvmalloc(),譬如: source/ip ...
  • 密碼的重要性,相信大家都不言而喻。而密碼泄漏或信息泄漏,經常是層出不窮地出現,令人防不勝防。所以,一個強大而複雜的密碼是保證自己賬戶安全的第一步。 為了防止信息泄漏,我們可以做些什麼呢? 密碼足夠複雜; 每個平臺密碼都不一樣,比如QQ,微信,郵箱等; 定期更換密碼。 那怎樣的密碼才算是比較可靠的密碼 ...
  • 今天在使用 yum 命令進行包的下載時候,Linux 提示 沒有可用的軟體包~ 如下: [root@localhost share]# yum -y install wordpress 已載入插件:fastestmirror, product-id, search-disabled-repos, s ...
  • 概述 Zabbix 5.0已經正式發佈,相比4.0,它在可用性,安全性和完整性方面都有一系列重要改進。 支持的平臺 除了現有的官方軟體包和appliances外,Zabbix 5.0現在還支持以下平臺: SUSE Linux Enterprise Server 15 Debian 10 Ubuntu ...
  • 1、Linux環境下安裝jdk (1)在官網下載一個jdk的版本: https://www.oracle.com/technetwork/cn/java/javase/downloads/index.html 點擊勾選後,直接下載 (2)下載tar包之後,直接解壓jdk:tar -zxf jdk-1 ...
  • MCU是智能控制的主要核心,是目前物聯網和汽車電子未來主要增長點。MCU微控制器作為智能控制的核心廣泛應用於消費電子、汽車電子、電腦與網路、工業控制等領域,伴隨物聯網的逐步落地和汽車電子的發展,MCU微控制器的市場需求增長顯著。 國內MCU微控制器市場未來五年複合增速達11.7%,至2020年市場 ...
  • awk是一個強大的文本分析工具,是把文件逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。 awk其名稱得自於它的創始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首字母。實際上 AWK 的確擁有自己的語言: AWK程式 ...
  • 我無意引起單片機、Linux、Android孰優孰劣的討論,我確實不看好純粹的單片機軟體開發,但是很看好RTOS及物聯網在單片機上的應用。 生活不容易,碼農不容易,走上碼農之路,只有不斷學習了。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...