title: 硬盘 分区 RAID
created: 2026-06-20
updated: 2026-09-03
type: entity
tags: [storage, raid, disk, management, entity]
sources:
- raw/scripts/RAID.sh
- raw/scripts/0硬盘.sh
- raw/scripts/磁盘 .sh


硬盘 分区 RAID

磁盘与 RAID 管理涵盖物理磁盘的查看、健康检查、分区、格式化、挂载,以及 RAID 卡管理(StorCLI/MegaCLI)、虚拟磁盘创建、热备盘配置等运维操作。

磁盘管理

查看磁盘信息

# 查看所有块设备(型号、序列号、接口、挂载点)
lsblk -o NAME,MAJ:MIN,MODEL,SERIAL,SIZE,WWN,HCTL,TRAN,VENDOR,TYPE

# 查看 SCSI 设备(HCTL、厂商、型号、容量)
lsscsi -s

# 查看硬盘硬件信息
lshw -class disk

# 查看设备 UUID 与文件系统
blkid
ls -l /dev/disk/by-uuid/
ls -l /dev/disk/by-id/

SMART 健康检查

# 查看硬盘温度
smartctl -a /dev/sda | grep -i -E 'Temperature|emp'

# 查看使用时间与序列号
sudo smartctl -i -A /dev/sdd | grep -iE 'Device Model|Serial|Power|Product'

# 批量采集
for i in {a..z}; do
    smartctl -a /dev/sd$i >> smartctl.out
done

关键阈值指标:
- Reallocated_Sector_Ct — 重映射扇区数(应为 0)
- Power_On_Hours — 通电小时数
- Temperature_Celsius — 当前温度
- Pending_Sector — 待重映射扇区(应为 0)

分区与格式化

# 交互式分区
fdisk /dev/sdb
# 或 parted(支持 GPT 大容量)
parted /dev/sdb mklabel gpt

# 格式化(ext4 / xfs)
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb1

# 挂载
mkdir -p /data
mount /dev/sdb1 /data

# 永久挂载(写入 fstab)
echo "/dev/sdb1 /data ext4 defaults 0 0" >> /etc/fstab
mount -a   # 验证 fstab 无错误

I/O 监控

iostat -x 1    # 每 1 秒输出扩展统计
指标 含义
r/s, w/s 每秒读写请求数(IOPS)
rkB/s, wkB/s 每秒读写数据量(吞吐量)
await 平均 I/O 等待时间(ms),反映延迟
%util 设备利用率(不一定是瓶颈指标)

LVM 逻辑卷管理

LVM(Logical Volume Manager)在物理盘/分区之上抽象出卷组与逻辑卷,支持在线扩容、跨盘聚合、快照。

概念层级

PV(物理卷 pvcreate)
 └── VG(卷组 vgcreate,聚合多 PV)
      └── LV(逻辑卷 lvcreate,= 可挂载的"分区")
           └── 文件系统(mkfs)

基础操作

# 1. 创建 PV(物理卷)——基于整盘或分区
pvcreate /dev/sdb
pvcreate /dev/sdc1
pvs                    # 查看 PV(PV Size / VG / Free)

# 2. 创建 VG(卷组)
vgcreate vg_data /dev/sdb /dev/sdc1
vgs                    # 查看 VG(总容量/已用/空闲)

# 3. 创建 LV(逻辑卷)
lvcreate -n lv_app -L 500G vg_data           # 固定大小
lvcreate -n lv_web -l 100%FREE vg_data       # 用尽剩余空间
lvs                    # 查看 LV
lvdisplay /dev/vg_data/lv_app

# 4. 格式化 + 挂载
mkfs.xfs /dev/vg_data/lv_app                 # 或 mkfs.ext4
mkdir -p /data/app
mount /dev/vg_data/lv_app /data/app
echo "/dev/vg_data/lv_app /data/app xfs defaults 0 0" >> /etc/fstab

在线扩容(核心优势)

# 扩容 LV(先扩 LV 再扩文件系统,顺序不能反)
lvextend -L +100G /dev/vg_data/lv_app        # 增加 100G
lvextend -r -L +100G /dev/vg_data/lv_app     # -r 自动扩文件系统(xfs/ext4 均支持)
xfs_growfs /data/app                         # xfs 手动扩容挂载点
resize2fs /dev/vg_data/lv_app                # ext4 手动扩容

# VG 空间不足时:新增物理盘加入卷组
pvcreate /dev/sdd
vgextend vg_data /dev/sdd
vgs    # 确认 VG 空闲空间增加后再 lvextend

缩容(ext4 仅限离线)

# 缩容必须:先卸载 → 检查 → 缩文件系统 → 缩 LV(顺序严格)
umount /data/app
e2fsck -f /dev/vg_data/lv_app
resize2fs /dev/vg_data/lv_app 400G           # 先缩文件系统到 400G
lvreduce -L 400G /dev/vg_data/lv_app         # 再缩 LV
mount /data/app
# xfs 不支持缩容,需缩容请先备份重建

快照

# 创建快照(LV 精简副本,备份/测试前使用)
lvcreate -s -n lv_app_snap -L 20G /dev/vg_data/lv_app

# 挂载快照查看历史数据
mkdir -p /mnt/snap
mount -o nouuid /dev/vg_data/lv_app_snap /mnt/snap   # xfs 需 -o nouuid

# 回滚(先卸载原 LV)
umount /data/app
lvconvert --merge /dev/vg_data/lv_app_snap
mount /data/app

# 删除快照
lvremove /dev/vg_data/lv_app_snap

常用查看与删除

pvdisplay / vgdisplay / lvdisplay    # 详情(对应 pvs/vgs/lvs 简版)
pvs -o +pv_used                     # PV 用量
vgdisplay -s                        # 简略卷组汇总

# 删除链路(LV → VG → PV,与创建反向)
umount /data/app
sed -i '/vg_data/d' /etc/fstab       # 先删 fstab 条目
lvremove /dev/vg_data/lv_app
vgremove vg_data
pvremove /dev/sdb /dev/sdc1

注意事项:
- 扩容顺序:lvextend 先 → 文件系统后(-r 一步到位最省事)
- 缩容顺序:卸载 → 文件系统先缩 → LV 后缩
- xfs 只可扩不可缩;ext4 可扩可缩(缩需离线)
- 快照空间来自 VG 剩余空间,快照越大增长越快,用完会失效


软 RAID(mdadm)

Linux 内核原生 md 驱动实现的软件 RAID,无需专用 RAID 卡,普通 SATA/SSD/NVMe 盘即可组建。

与硬 RAID 对比

对比 软 RAID (mdadm) 硬 RAID (StorCLI)
硬件要求 无专用卡,主板 SATA 口即可 需 RAID 卡(Broadcom/Microchip)
成本 0 数百~数千元
性能 多盘时吃 CPU(校验计算) 卡上芯片卸载计算
缓存/掉电保护 无(依赖系统) 卡缓存 + BBU/电容
迁移性 换机器认盘即用 换卡可能需同型号
适用 家用/单机/盘少 服务器/盘多/企业级

创建 RAID

# 查看磁盘
lsblk -o NAME,SIZE,MODEL

# RAID 0(条带,2 盘)
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc

# RAID 1(镜像,2 盘)
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# RAID 5(1 块冗余,3 盘起)
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd

# RAID 10(4 盘,性能+冗余)
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde

格式化 + 挂载 + 持久化

# 格式化(RAID5/6 建议 ext4/xfs 均可)
mkfs.ext4 /dev/md0
# 或
mkfs.xfs /dev/md0

# 挂载
mkdir -p /data/raid
mount /dev/md0 /data/raid

# 写入配置文件(重建阵列时自动组装)
mdadm --detail --scan >> /etc/mdadm.conf
# 或手动写入
echo "DEVICE /dev/sdb /dev/sdc /dev/sdd" >> /etc/mdadm.conf

# 写入 fstab 永久挂载(用 UUID 更稳)
blkid /dev/md0
echo "UUID=<上一步UUID> /data/raid ext4 defaults 0 0" >> /etc/fstab
mount -a   # 验证

查看状态

cat /proc/mdstat          # 实时状态(是否 degraded/rebuilding)
mdadm --detail /dev/md0   # 详细阵列信息
mdadm --detail --scan     # 扫描现有阵列

日常维护

# 标记某盘故障(模拟/实际坏盘后)
mdadm /dev/md0 --fail /dev/sdb
mdadm /dev/md0 --remove /dev/sdb

# 添加新盘重建(热替换)
mdadm /dev/md0 --add /dev/sde
cat /proc/mdstat   # 观察重建进度 [>....]

# 移除阵列
umount /data/raid
mdadm --stop /dev/md0

NVMe 软 RAID 注意

# NVMe 盘同样可用 mdadm(RAID0/1/10)
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1

# 关键限制:
# 1. PCIe 通道数决定能插几块 NVMe(x4/盘),消费板 2-4 条,服务器平台可 8+
# 2. 校验类(RAID5/6)不推荐用于 NVMe:重建窗口长、md 校验性能弱
# 3. NVMe 高负载发热大,注意散热
# 4. RAID5/6 大数据量建议改用 ZFS(自愈 + 写时校验 + 压缩)

场景选型建议

场景 方案
2 盘:系统/数据镜像 mdadm RAID1(简单可靠)
4 盘:数据库/高 IO mdadm RAID10
数据量大、要自愈/快照 ZFS raidz2(非 mdadm)
企业服务器、卡已有 硬 RAID(StorCLI 管理)

RAID 管理(StorCLI / MegaCLI)

StorCLI 安装

StorCLI 是 Broadcom/LSI RAID 卡的官方管理工具。

# 安装
yum install -y storcli

# 创建软链接
sudo ln -s /opt/MegaRAID/storcli/storcli64 /bin/storcli64
sudo ln -s /opt/MegaRAID/storcli/storcli64 /sbin/storcli

# 下载地址
# https://docs.broadcom.com/docs-and-downloads/raid-controllers/raid-controllers-common-files/007.1907.0000.0000_Unified_StorCLI.zip

基础查询

查看 RAID 卡

storcli show

输出示例:

Ctl Model      AdapterType   VendId DevId SubVendId SubDevId PCI Address
  0 SAS9311-8i   SAS3008(C0) 0x1000  0x97    0x1000   0x3090 00:b3:00:00

Ctl = Controller ID(RAID 卡编号),后续命令用 c0c1 引用。

查看磁盘信息

storcli /c0 show

输出列含义:

字段 说明
EID:Slt Enclosure ID:Slot ID(背板:槽位)
DID Device ID
State UGood=正常,UBad=故障
DG Disk Group(属于哪个 RAID 组)
Size 容量
Intf SATA/SAS/NVMe
Med HDD/SSD
Sp 热备状态

查看详细配置

# 完整信息输出到文件
storcli /c0 show all logfile=logfile.txt

# 查看控制器日志
storcli /c0 show termlog
storcli /c0 show events

虚拟磁盘(VD / RAID 组)管理

创建 RAID

# RAID 0(条带化)
storcli /c0 add vd r0 drives=93:3-4

# RAID 1(镜像)
storcli /c0 add VD r1 drives=30:3,30:4

# RAID 5(分布式奇偶校验)
storcli /c0 add VD r5 drives=252:0-3

# RAID 5(带缓存策略)
storcli /c0 add vd type=raid5 size=all drives=8:0,8:1,8:2 awb ra

删除 RAID

storcli /c0/vall show        # 查看所有虚拟磁盘
storcli /c0/v0 delete force  # 删除 VD0(force 跳过确认)

缓存策略

# 批量设置(推荐)
storcli /c0 /vall set rdcache=RA wrcache=WB pdcache=off

# 写入缓存:WT=WriteThrough, WB=WriteBack, AWB=AdaptiveWriteBack
storcli /c0 /v1 set wrcache=awb

# 刷新缓存
storcli /c0 flushcache
策略 说明 适用场景
WT (WriteThrough) 数据写入磁盘后才返回 数据安全优先
WB (WriteBack) 数据写入缓存即返回 性能优先(需电池/电容保护)
AWB (AdaptiveWB) 根据是否有电池自动切换 折中方案
RA (ReadAhead) 预读 顺序读优化
NoRA 不预读 随机读优化

热备盘(HotSpare)

# 全局热备
storcli /c0/e8/s3 add hotsparedrive

# 局部热备(指定 DG=0 的热备)
storcli /c0/e8/s3 add hotsparedrive dgs=0

# 删除热备
storcli /c0/e8/s3 delete hotsparedrive

# 自动全局热备
storcli /c0 set eghs eug=on
storcli /c0 set eghs smarter=on

物理盘操作

点亮故障灯(定位磁盘)

storcli /c0/e2/s5 start locate    # 亮灯
storcli /c0/e2/s5 stop locate     # 灭灯

硬盘擦除

storcli /c0/e2/s11 start erase simple   # 简单擦除(1遍)
storcli /c0/e2/s11 start erase normal   # 普通擦除(3遍)
storcli /c0/e2/s11 start erase thorough # 彻底擦除(9遍)
storcli /c0/e2/s11 show erase           # 查看进度
storcli /c0/e2/s11 stop erase           # 停止

JBOD / 直通模式

# 切换 RAID 卡 Personality
storcli /c0 set personality = jbod
storcli /c0 set personality = raid

# 单盘直通
storcli /c0/e252/s1 set jbod
storcli /c0/e252/s1 del jbod force

# 批量设置
storcli64 /c0/e8/sall set jbod

# 清理状态
storcli /c0/e252/s1 set good force

RAID 维护

一致性检查(CC)

storcli /c0/vall stop cc                       # 停止一致性检查
storcli /c0 set CC=conc starttime=2012/02/21 00  # 定时执行

初始化

# RAID 快速初始化(仅前 100MB)
storcli /c0/vx start init

# 完全初始化(全盘写0,耗时较长)
storcli /c0/vx start init full

# 后台初始化(BGI)
storcli /c0 /vall set autobgi=off
storcli64 /c0/vall show autobgi

巡读(Patrol Read)

storcli /c0 set patrolread=on     # 开启
storcli /c0 show patrolread       # 查看状态

RAID 重建

storcli /c0 set rebuildrate=50    # 设置重建速率(1-100)
storcli /c0 show rebuildrate      # 查看
storcli /c0/e2/s5 show rebuild    # 查看某盘重建进度
storcli /c0/e2/s5 pause rebuild   # 暂停

固件升级

storcli /c0 download file=mr3108fw.rom noverchk
storcli /c0 restart

MegaCLI(旧版兼容)

旧版 RAID 卡仍使用 MegaCLI:

# 查看物理盘
megacli -PDList -aALL

# 查看逻辑盘
megacli ldinfo lall a0

# 创建 RAID5(物理盘 1:2,1:3,1:4 + 热备 1:5)
megacli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] -a0

# 创建 RAID10
megacli –CfgSpanAdd –r10 –Array0[1:2,1:3] –Array1[1:4,1:5] WB Direct -a0

常见故障处理

问题 排查命令 对策
磁盘 UBad storcli /c0/e2/s5 show all 更换硬盘,触发重建
RAID Degraded storcli /c0/vall show 检查热备盘,确认重建
缓存数据丢失 storcli /c0 flushcache 尝试刷新缓存
外部配置冲突 storcli /c0/fall delete 导入或清除外部配置

相关页面