Linux RAID1 創建與配置實戰指南(mdadm)

Linux RAID1 創建與配置實戰指南(mdadm)


一、RAID1 核心價值與實戰目標

RAID1(磁盤鏡像) 通過數據冗余提供高可靠性:

  • 當單塊硬盤損壞時,數據不丟失
  • 支持快速陣列重建
  • 讀寫性能略低于單盤(鏡像寫入開銷)

本文實戰目標
? 使用 mdadm 在 Linux 創建 RAID1
? 提供環境兼容方案(如工具缺失時的替代方案)
? 實現開機自動掛載與狀態驗證

示例環境

  • 系統:CentOS 7 / Ubuntu(通用方案)
  • 數據盤:/dev/sda + /dev/sdc
  • RAID設備:/dev/md126
  • 掛載點:/data/raid1
  • 文件系統:ext4

二、前置準備
  1. 安裝 mdadm
    按發行版選擇命令:

    # Debian/Ubuntu
    apt update && apt install mdadm -y# CentOS/RHEL
    yum install mdadm -y
    

    驗證安裝:

    mdadm --version
    

  2. 磁盤檢查與清理
    關鍵步驟:清除舊分區表/RAID信息,避免沖突

    # 查看磁盤列表
    lsblk
    

    清理舊分區(二選一)

    # 方案A(推薦):使用 sgdisk
    sgdisk --zap-all /dev/sda# 方案B(無 sgdisk 時):使用 dd
    dd if=/dev/zero of=/dev/sda bs=512 count=2048
    

    清除文件系統簽名

    wipefs -a /dev/sda建議同樣對 sdc 也執行 wipefs,防止遺留。

  3. 檢查舊 RAID 陣列
    若存在舊陣列,先嘗試組裝:

    mdadm --assemble --scan
    cat /proc/mdstat  # 檢查陣列狀態
    

    ?? 無輸出表示無舊陣列,可跳過此步


三、創建 RAID1 陣列
  1. 初始化陣列(兼容性方案)

    # 創建陣列(預留一個磁盤位置)
    mdadm --create /dev/md126 --level=1 --raid-devices=2 /dev/sdc missing
    

    • missing:為 /dev/sda 預留位置,后續手動添加

    ? 若設備名沖突(如已有 /dev/md126):

    mdadm --stop /dev/md126
    mdadm --remove /dev/md126
    

  2. 添加第二塊磁盤

    mdadm --add /dev/md126 /dev/sda
    

  3. 監控重建進度

    watch cat /proc/mdstat  # 實時查看狀態
    

    • 等待狀態變為 [UU](表示雙盤正常):
      md126 : active raid1 sda[2] sdc[0]3907015680 blocks [2/2] [UU]
      


四、文件系統與掛載
  1. 格式化 RAID 設備

    mkfs.ext4 /dev/md126
    

  2. 掛載到文件系統

    mkdir -p /data/raid1
    mount /dev/md126 /data/raid1
    

  3. 驗證掛載

    df -h /data/raid1
    

    預期輸出:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/md126      3.6T   89M  3.4T   1% /data/raid1
    


五、開機自動掛載配置
  1. 保存 RAID 配置

    # Debian/Ubuntu
    mdadm --detail --scan >> /etc/mdadm/mdadm.conf# CentOS/RHEL
    mdadm --detail --scan >> /etc/mdadm.conf
    

  2. 配置 /etc/fstab

    • 獲取設備 UUID:
      blkid /dev/md126
      
      預期輸出:
      /dev/md126: UUID="d8e3eb19-2b2f-41f5-b8b0-05bbb1f01aee" TYPE="ext4"
      
    • 編輯 /etc/fstab
      UUID=d8e3eb19-2b2f-41f5-b8b0-05bbb1f01aee /data/raid1 ext4 defaults 0 0
      

  3. 測試自動掛載

    umount /data/raid1
    mount -a
    df -h /data/raid1  # 檢查是否成功掛載
    


六、檢查與驗證
  1. 查看陣列健康狀態

    mdadm --detail /dev/md126
    

    關鍵指標:

    Raid Level : raid1
    State : clean
    Active Devices : 2
    Working Devices : 2
    Failed Devices : 0
    [UU]  # 雙盤正常
    

  2. 故障模擬測試

    • 狀態 [_U] → 單盤故障
    • 狀態 [__] → 陣列崩潰
  3. 關鍵驗證操作

    # 重啟測試
    reboot
    df -h | grep raid1  # 重啟后檢查掛載# 讀寫測試
    touch /data/raid1/testfile
    ls -l /data/raid1
    rm -f /data/raid1/testfile
    


七、最佳實踐與注意事項

? 定期維護

cat /proc/mdstat          # 每月檢查陣列狀態
mdadm --monitor --scan    # 啟用后臺監控

? 關鍵認知

  • RAID1 ≠ 備份!仍需獨立備份方案
  • 更換故障盤后需手動觸發重建
  • 避免使用同一批次硬盤(降低同時故障風險)

? 常見錯誤

  • 未清理舊分區導致陣列沖突
  • 忘記保存配置到 /etc/mdadm.conf
  • 直接拔盤未標記為 failed

最終配置摘要

項目
RAID 設備/dev/md126
RAID 類型RAID1
UUIDd8e3eb19-2b2f-41f5-b8b0-05bbb1f01aee
文件系統ext4
掛載點/data/raid1
陣列狀態健康 [UU]
可用空間≈3.4 TB

通過本指南,您已構建高可靠的磁盤鏡像系統。下一步建議:配置監控告警(如 mdadm 郵件通知)和定期數據備份。

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

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

相關文章

MySQL數據庫----函數

目錄函數1,字符串函數2,數值函數3,日期函數4,流程函數函數 1,字符串函數 MySQL中內置了很多字符串函數 2,數值函數 3,日期函數 4,流程函數

1.2 vue2(組合式API)的語法結構以及外部暴露

vue2 vue3中可以寫vue2的語法&#xff0c;vue2的結構像一個花盆里的根&#xff08;根組件App.vue&#xff09;&#xff0c;根上可以插上不同的枝杈和花朵&#xff08;組件&#xff09;。 組件的結構&#xff1a; // 這里寫邏輯行為 <script lang"ts"> export d…

Swift 解 LeetCode 324:一步步實現擺動排序 II,掌握數組重排的節奏感

文章目錄摘要描述題解答案題解代碼&#xff08;Swift&#xff09;題解代碼分析步驟一&#xff1a;排序數組步驟二&#xff1a;左右指針分段步驟三&#xff1a;按位置交錯插入示例測試及結果示例 1示例 2示例 3&#xff08;邊界情況&#xff09;時間復雜度分析空間復雜度分析總結…

使用SQLMAP的文章管理系統CMS的sql注入滲透測試

SQLMAP注入演示&#xff1a;抓包拿到Cookie:召喚sqlmap&#xff1a;sqlmap -u "http://192.168.1.99:8085/show.php?id34" --cookie "pma_langzh_CN; kbqug_admin_username2621-PL_LxhFjyVe43ZuQvht6MI5q0ZcpRVV5FI0pzQ6XR8; kbqug_siteid2621-PL_LxhFjyVe4yA5…

I3C通信協議核心詳解

一、物理層與電氣特性雙線結構 SCL&#xff08;串行時鐘線&#xff09;&#xff1a;主設備控制&#xff0c;支持 推挽&#xff08;Push-Pull&#xff09;輸出&#xff08;高速模式&#xff09;和 開漏&#xff08;Open-Drain&#xff09;&#xff08;兼容I2C模式&#xff09;。…

Docker搭建Redis哨兵集群

Redis提供了哨兵機制實現主從集群下的故障轉移&#xff0c;其中包含了對主從服務的檢測、自動故障恢復和通知。 1.環境 centos7、redis6.2.4、MobaXterm 目的&#xff1a; 搭建redis的主從同步哨兵集群&#xff08;一主一從三哨兵&#xff09; 2.步驟 1.主從集群的搭建 主從…

暑假Python基礎整理 --異常處理及程序調試

異常概念 在程序運行過程中&#xff0c;經常會遇到各種各樣的錯誤&#xff0c;這些錯誤統稱為“異常”。如下表是Python常見的異常與描述&#xff1a; 異常描述NameError嘗試訪問一個未聲明的變量引發錯誤IndexError索引超出序列范圍引發錯誤IndentationError縮進錯誤ValueErr…

k8s-高級調度(二)

目錄 Taint(污點)與Toleration(容忍) Taint&#xff08;污點&#xff09;&#xff1a;節點的排斥標記 Toleration&#xff08;容忍&#xff09;&#xff1a;Pod的適配聲明 與節點親和性的對比 警戒(cordon)和轉移(drain) Cordon&#xff1a;節點隔離&#xff08;阻止新 Po…

基于OpenCV的深度學習人臉識別系統開發全攻略(DNN+FaceNet核心技術選型)

核心技術選型表 技術組件版本/型號用途OpenCV DNN4.5.5人臉檢測FaceNet (facenet-pytorch)0.5.0人臉特征提取MiniConda最新版Python環境管理PyTorch1.8.0FaceNet運行基礎OpenVINO2021.4模型加速(可選)SSD Caffe模型res10_300x300高精度人臉檢測 一、環境準備與項目搭建 1.1 M…

【AI News | 20250714】每日AI進展

AI Repos 1、All-Model-Chat All Model Chat 是一款為Google Gemini API家族設計的網頁聊天應用&#xff0c;支持多模態輸入&#xff08;圖片、音頻、PDF等&#xff09;和多種模型&#xff08;如Gemini Flash、Imagen&#xff09;。它提供了豐富的自定義功能&#xff0c;包括高…

C 語言(二)

主要包括變量與常量、數據類型、存儲方式、數制轉換以及字符處理等內容一、變量與常量在 C 語言中&#xff0c;變量是用來存儲數據的命名空間&#xff0c;它會在內存中分配地址。例如&#xff1a;int i; i 12345; 其中 i 是變量&#xff0c;12345 是常量。常量表示在程序運行過…

原型繼承(prototypal inheritance)的工作原理

這是一個非常常見的 JavaScript 問題。所有 JS 對象都有一個__proto__屬性&#xff0c;指向它的原型對象。當試圖訪問一個對象的屬性時&#xff0c;如果沒有在該對象上找到&#xff0c;它還會搜尋該對象的原型&#xff0c;以及該對象的原型的原型&#xff0c;依次層層向上搜索&…

OpenCV 視頻處理與攝像頭操作詳解

1. 引言大家都來寫OpenCV&#x1f60a;&#xff0c;學的好開心&#xff01;2. 視頻基礎與OpenCV簡介2.1 視頻的定義視頻&#xff08;Video&#xff09;是由一系列靜態圖像&#xff08;幀&#xff09;以一定速率連續播放形成的動態影像。其本質是利用人眼的視覺暫留效應&#xf…

Agentic AI 的威脅與緩解措施

原文&#xff1a;https://www.aigl.blog/content/files/2025/04/Agentic-AI—Threats-and-Mitigations.pdf AI Agent 的定義 1. 定義與基礎 智能代理&#xff08;Agent&#xff09;的定義&#xff1a; 智能代理是一種能夠感知環境、進行推理、做出決策并自主采取行動以實現特定…

ArrayList列表解析

ArrayList集合 ArrayList 的底層是數組隊列&#xff0c;相當于動態數組。與 Java 中的數組相比&#xff0c;它的容量能動態增長。在添加大量元素前&#xff0c;應用程序可以使用ensureCapacity操作來增加 ArrayList 實例的容量。這可以減少遞增式再分配的數量。 ArrayList 繼承…

《戀與深空》中龍和蛇分別是誰的代表

在《戀與深空》宏大而神秘的世界觀中&#xff0c;每一個符號都蘊含著深意。當玩家們熱議“龍”和“蛇”這兩種強大而古老的生物究竟代表著誰時&#xff0c;所有的線索都默契地指向了同一個名字——秦徹。 他不僅是力量與權威的象征“惡龍”&#xff0c;也是背負著宿命與糾葛的“…

gitignore添加后如何生效?

清除 Git 緩存&#xff1a; git rm -r --cached .添加文件到 Git&#xff1a;git add .使用 git commit 命令提交這些更改git commit -m "Update .gitignore"

多尺度頻率輔助類 Mamba 線性注意力模塊(MFM),融合頻域和空域特征,提升多尺度、復雜場景下的目標檢測能力

在偽裝物體檢測領域&#xff0c;現有方法大多依賴空間局部特征&#xff0c;難以有效捕捉全局信息&#xff0c;而 Transformer 類方法雖能建模長距離依賴關系&#xff0c;卻存在計算成本高、網絡結構復雜的問題。同時&#xff0c;頻域特征雖具備全局建模能力&#xff0c;可頻繁的…

Dify的默認端口怎么修改

1.定位配置文件 在 Dify 的安裝目錄中找到 .env 文件&#xff08;通常位于 docker/ 子目錄下&#xff09;。此文件定義了 Docker 容器的環境變量&#xff0c;包括端口配置。 2.調整端口參數 修改以下兩個關鍵配置項&#xff1a; # Docker 容器內部 Nginx 監聽的端口&#xf…

Go內存分配

圖解Go語言內存分配 - 知乎 go內置運行時&#xff0c;采用了自主管理&#xff0c;實現更好的內存使用模式&#xff0c;不需要每次內存分配都進行系統調用 采用TCMalloc算法&#xff1a;把內存分為多級管理&#xff0c;從而降低鎖的粒度 將可用的堆內存采用二級分配的方式進行…