目录
一、LVM逻辑卷
1、概述
LVM 是 Logical Volume Manager(逻辑卷管理)的简写,它是 Linux 环境下对磁盘分区进行管理的⼀种机制; 安装 Linux 操作系统时遇到的⼀个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空 间; 普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小; 随着 Linux 的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小,即动态调整磁盘容量,从而提高磁盘管理的灵活性。
1.1、运行原理
编辑
1.2、LVM 相关概念:
1.PV(Physical Volume):物理卷
处于 LVM 最底层,可以是物理硬盘或者分区,整个硬盘,或使用fdisk 等⼯具建⽴的普通分区,包许多默认 4MB 大小的 PE(Physical Extent,基本单元)。
2.PE(Physical Extend):物理区域
PV 中可以用于分配的最小存储单元,可以在创建 PV 的时候制定(默认为 4MB),如 1M, 2M, 4M, 8M, 32M, 64M… 组成同⼀VG 中所有 PV 的 PE大小应该相同。
3.VG(Volume Group):卷组
建立在 PV 之上,可以含有一个到多个 PV,一个或多个物理卷组合而成的整体。
4.LV(Logical Volume):逻辑卷
建立在 VG 之上,相当于原来分区的概念,不过大小可以动态改变。从卷组中分割出的一块空间,用于建立文件 系统。
1.3、挂载流程
编辑
2、管理命令
功能 | PV物理卷命令 | VG卷组命令 | LV逻辑卷命令 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
查询 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩容 | vgextend | lvextend | |
缩容 | vgreduce | lvreduce |
3、配置案例
3.1、构建LVM逻辑卷
#创建分区 fdisk /dev/sdb #创建物理卷 pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 #创建卷组 vgcreate testvg /dev/sdb1 /dev/sdb2 /dev/sdb3 #创建逻辑卷 lvcreate -n tstlv testvg -L 2G [root@c2407 mapper]# mkfs.xfs /dev/mapper/testvg-testlv meta-data=/dev/mapper/testvg-testlv isize=512 agcount=4, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=524288, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@c2407 mapper]# mkdir /testlv [root@c2407 mapper]# mount /dev/mapper/testvg-testlv /testlv/ [root@c2407 mapper]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 894M 0 894M 0% /dev tmpfs tmpfs 910M 11M 900M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 50G 8.8G 42G 18% / tmpfs tmpfs 182M 12K 182M 1% /run/user/42 /dev/sda1 xfs 1014M 185M 830M 19% /boot /dev/mapper/centos-home xfs 147G 38M 147G 1% /home /dev/mapper/testvg-testlv xfs 2.0G 33M 2.0G 2% /testlv
3.2、扩容LVM逻辑卷
#基于XFS文件系统的lv扩容 [root@c2407 ~]# lvextend /dev/testvg/testlv -L +2G Size of logical volume testvg/testlv changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents). Logical volume testvg/testlv successfully resized. [root@c2407 ~]# xfs_growfs /dev/testvg/testlv meta-data=/dev/mapper/testvg-testlv isize=512 agcount=4, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=524288, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 524288 to 1048576 [root@c2407 ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 894M 0 894M 0% /dev tmpfs tmpfs 910M 11M 900M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 50G 8.8G 42G 18% / tmpfs tmpfs 182M 12K 182M 1% /run/user/42 /dev/sda1 xfs 1014M 185M 830M 19% /boot /dev/mapper/centos-home xfs 147G 38M 147G 1% /home /dev/mapper/testvg-testlv xfs 4.0G 33M 4.0G 1% /testlv
##基于EXT文件系统的lv扩容 [root@c2407 ~]# lvextend /dev/testvg2/testlv2 -L +2G [root@c2407 ~]# e2fsck -f /dev/testvg2/testlv2 e2fsck 1.42.9 (28-Dec-2013) /dev/testvg2/testlv2 is mounted. e2fsck: 无法继续, 中止.
[root@c2407 ~]# umount /testlv2 [root@c2407 ~]# e2fsck -f /dev/testvg2/testlv2 e2fsck 1.42.9 (28-Dec-2013) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/testvg2/testlv2: 11/131072 files (0.0% non-contiguous), 26156/524288 blocks [root@c2407 ~]# res rescan-scsi-bus.sh resize2fs resizepart reset resizecons restorecon [root@c2407 ~]# resize2fs /dev/testvg2/testlv2 resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/testvg2/testlv2 to 1048576 (4k) blocks. The filesystem on /dev/testvg2/testlv2 is now 1048576 blocks long.
[root@c2407 ~]# mount /dev/testvg2/testlv2 /testlv2/ [root@c2407 ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 894M 0 894M 0% /dev tmpfs tmpfs 910M 11M 900M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 50G 8.8G 42G 18% / tmpfs tmpfs 182M 12K 182M 1% /run/user/42 /dev/sda1 xfs 1014M 185M 830M 19% /boot /dev/mapper/centos-home xfs 147G 38M 147G 1% /home /dev/mapper/testvg-testlv xfs 4.0G 33M 4.0G 1% /testlv /dev/mapper/testvg2-testlv2 ext4 3.9G 8.0M 3.7G 1% /testlv2
3.3、缩容LVM逻辑卷(不建议)
二、磁盘配额
1、概述
针对用户和组,用于配置用户和组在该磁盘的使用容量限制。
配额类型:
usrquota:支持对用户的磁盘配额
grpquota:支持对组的磁盘配额
限制类型:
软限制:指定一个软性的配额数据值,用户超过这个数据时,系统给出警告信息,可以打破数据值。
硬限制:指定一个硬性的配额值,禁止用户超过这个限制。
2、配置命令
2.1、quota命令
语法:
quota [ -guv | q ] quota [ -uv | q ] user quota [ -gv | q ] group
选项:
选项 | 作用 |
---|---|
-g | 显示 用户所在组 的 组限额. 可选项(optional). |
-u | 和 缺省情况 一样 |
-v | 显示 文件系统上 的 限额, 即使 没有 占用 空间. |
-q | 简洁的 信息, 只 显示 超出 限额 的 文件系统. |
案例:
查看磁盘配额:
quota -v -u zhao
2.2、xfs_quota命令
语法:
xfs_quota [ -x ] [ -p prog ] [ -c cmd ] ... [ -d project ] ... [ path ... ] xfs_quota -V
选项:
选项 | 作用 |
---|---|
-x | 启用专家模式。所有允许对配额系统进行修改的管理命令(请参阅下面的“管理员命令”部分)仅在专家模式下可用。 |
-c | cmd xfs_quota命令可以交互式运行(默认情况),也可以作为命令行参数运行。可以给出多个-c参数。命令按照给定的顺序运行,然后程序退出。 |
名称 xfs_quota - 管理XFS文件系统上的配额使用 概要 xfs_quota [ -x ] [ -p prog ] [ -c cmd ]... [ -d project ]... [ 路径... ] xfs_quota -V 描述 xfs_quota是一个用于报告和编辑文件系统配额各个方面的实用工具。 xfs_quota的选项包括: -c cmd xfs_quota命令可以交互式运行(默认情况),也可以作为命令行参数运行。可以给出多个-c参数。命令按照给定的顺序运行,然后程序退出。 -p prog 为提示和一些错误消息设置程序名称,默认值是xfs_quota。 -x 启用专家模式。所有允许对配额系统进行修改的管理命令(请参阅下面的“管理员命令”部分)仅在专家模式下可用。 -d project 可以使用此选项指定项目名称或数字标识符,这将单个xfs_quota命令的输出限制为指定的项目集。可以给出多个-d参数。 -V 打印版本号并退出。 #####用户命令 print 列出带有设备/项目标识符的所有路径。路径列表可以来自多个地方 - 命令行、挂载表和/etc/projects文件。 df 请参阅free命令。 quota [ -g | -p | -u ] [ -bir ] [ -hnNv ] [ -f file ] [ ID | 名称 ]... 显示单个用户名或数字用户ID的个人使用情况和限制。-h选项以类似于df(1)命令的“人类可读”格式报告。-n选项报告数字ID而不是名称。-N选项省略标题。-v选项输出详细信息。-f选项将输出发送到文件而不是标准输出。 free [ -bir ] [ -hN ] [ -f file ] 报告文件系统使用情况,非常类似于df(1)实用程序。它可以显示块、索引节点和/或实时块空间的使用情况,并显示已使用、空闲和总可用空间。如果正在使用项目配额(请参阅下面的“目录树配额”部分),它还将报告这些项目(目录树)的利用率。-h选项以“人类可读”格式报告。-N选项省略标题。-f选项将报告输出到文件而不是标准输出。 help [ 命令 ] 为所有命令或一个特定命令提供在线帮助。 quit 退出xfs_quota。 q 请参阅quit命令。 #####配额管理 XFS配额系统在许多方面与其他文件系统不同。最重要的是,XFS将配额信息视为文件系统元数据,并使用日志记录来提供更高层次的一致性保证。因此,它的管理方式不同,特别是: quotacheck命令对XFS文件系统没有影响。在首次打开配额核算(在挂载时)时,XFS会在内部自动进行quotacheck;此后,在手动关闭配额之前,配额系统将始终保持完全一致。 XFS文件系统的根目录中不需要配额文件。 XFS区分配额核算和限制执行。在挂载XFS文件系统时必须打开配额核算。但是,可以在任何时候打开或关闭限制执行,只要配额核算已打开。mount命令的“quota”选项同时打开(用户)配额核算和执行。必须使用“uqnoenforce”选项来打开用户核算并禁用限制执行。 在根文件系统上打开配额略有不同。对于IRIX XFS,请参阅quotaon(1M)。对于Linux XFS,配额挂载标志必须通过“rootflags =”引导参数传递。 使用state来监视XFS配额子系统在各个阶段的情况是很有用的 - 它可以用于查看配额是否已打开,以及监视配额系统本身占用的空间。 xfsdump中内置了一种机制,允许在需要时备份配额限制信息以供以后恢复。 在打开配额之前,不能设置配额限制。 XFS文件系统对超级用户(用户ID为零)进行配额核算,并且该工具将显示超级用户的使用信息。但是,永远不会对超级用户执行限制(也不会对组和项目ID为零执行限制)。 XFS文件系统无论用户是否有配额限制都会进行配额核算。 XFS支持项目配额的概念,可用于实现一种目录树配额的形式(即限制目录树只能使用文件系统可用空间的一部分;或简单地跟踪树内使用的空间量或索引节点数量)。 #####管理员命令 path [ N ] 列出所有带有设备/项目标识符的路径,或将当前路径设置为列表中的第N个条目(这里描述的许多命令都使用当前路径,它标识命令指向的文件系统)。路径列表可以来自多个地方 - 命令行、挂载表和/etc/projects文件。 report [ -gpu ] [ -bir ] [ -ahntlLNU ] [ -f file ] 报告文件系统配额信息。这将报告文件系统的所有配额使用情况,对于指定的配额类型(u / g / p和/或块/索引节点/实时)。默认情况下,它以1KB为单位报告块。-h选项以类似于df(1)命令的“人类可读”格式报告。-f选项将报告输出到文件而不是标准输出。-a选项报告所有文件系统的信息。默认情况下,输出用户/组/项目的名称。如果为给定的ID未定义名称,则输出数字ID。-n选项输出数字ID而不是名称。-L和-U选项指定要报告的上下ID边界。如果指定了上/下边界,则默认情况下仅在输出中显示ID;使用-l选项,将执行查找以将这些ID转换为名称。-N选项报告信息时不包含标题行。-t选项进行简洁报告。 state [ -gpu ] [ -av ] [ -f file ] 报告总体配额状态信息。这将报告配额核算、配额执行的状态以及文件系统内配额元数据使用的范围数量。-f选项将状态信息输出到文件而不是标准输出。-a选项报告所有文件系统的状态,而不仅仅是当前路径。 limit [ -g | -p | -u ] bsoft = N | bhard = N | isoft = N | ihard = N | rtbsoft = N | rtbhard = N -d | id | 名称 设置配额块限制(bhard / bsoft)、索引节点计数限制(ihard / isoft)和/或实时块限制(rtbhard / rtbsoft)。-d选项(默认值)可用于设置将使用的默认值,否则必须指定特定的用户/组/项目名称或数字标识符。 timer [ -g | -p | -u ] [ -bir ] 值 允许修改配额执行超时(即允许在软限制被强制作为硬限制之前经过的时间量)。当前超时设置可以使用state命令显示。值参数是秒数,但也可以理解为“分钟”、“小时”、“天”和“周”的单位(以及它们的缩写“m”、“h”、“d”和“w”)。 warn [ -g | -p | -u ] [ -bir ] 值 -d | id | 名称 允许查看和修改配额警告限制(即向超配额的人发送警告的次数)。-d选项(默认值)可用于设置将使用的默认时间,否则必须指定特定的用户/组/项目名称或数字标识符。 注意:此功能当前未实现。 enable [ -gpu ] [ -v ] 为当前路径标识的文件系统打开配额执行。这要求文件系统在挂载时启用配额,并且当前活动的核算。-v选项(详细)在操作完成后显示状态。 disable [ -gpu ] [ -v ] 禁用配额执行,同时保持配额核算活动。-v选项(详细)在操作完成后显示状态。 off [ -gpu ] [ -v ] 永久关闭当前路径标识的文件系统的配额。此后只能通过卸载并重新挂载来重新打开配额。 remove [ -gpu ] [ -v ] 从当前路径标识的文件系统中删除分配给配额元数据的任何空间。文件系统上不得启用配额,否则此操作将报告错误。 dump [ -g | -p | -u ] [ -f file ] 为备份实用程序转储配额限制信息,要么输出到标准输出(默认),要么输出到文件。当然,这只是限制,而不是使用信息。 restore [ -g | -p | -u ] [ -f file ] 从备份文件恢复配额限制。文件必须采用dump命令生成的格式。 quot [ -g | -p | -u ] [ -bir ] [ -acnv ] [ -f file ] 按用户、组或项目汇总文件系统所有权。此命令使用特殊的XFS“批量统计”接口快速扫描整个文件系统并报告使用信息。即使文件系统配额未启用,也可以使用此命令,因为它是全文件系统扫描(可能也需要很长时间...)。-a选项显示所有文件系统的信息。-c选项显示直方图而不是报告。-n选项显示数字ID而不是名称。-v选项显示详细信息。-f选项将输出发送到文件而不是标准输出。 project [ -cCs [ -d depth ] [ -p path ] id | 名称 ] -c、-C和-s选项允许维护目录树配额机制。-d允许在处理项目目录时限制递归级别,-p允许在命令行中指定项目路径(而不是/etc/projects)。所有选项将在下面详细讨论。 目录树配额
案例:
查看磁盘配额:
[root@c2407 ~]# xfs_quota -x -c 'report' /testlv
3、配置案例
#针对用户和组,用于配置用户和组在该磁盘的使用容量限制。 #实现支持磁盘配额的挂载: mount -o ursquota,grpquota /dev/test_vg/test_lv /testlvm #查看是否支持磁盘配额: mount #XFS文件系统的磁盘配额命令: xfs_quota -x -c 'limit -u bsoft=10M bhard=50M isoft=10 ihard=20 lisi' /testlvm/ #-u:用户配额 #-g:组配额 #(b/i)soft:容量/文件数软限制,用于监视 #(b/i)hard:容量/文件数硬限制,不能超出设置的值 #查看容量配额: xfs_quota -x -c 'report -b -u ' /testlvm/ #查看文件数量配额: xfs_quota -x -c 'report -i -u ' /testlvm/ #在终端中切换用户的命令: su - username #验证: #dd if=/dev/zero of=./test.txt bs=10M count=60 #mkdir dir{1..30} [zhao@c2407 testlv]$ touch {1..51}.txt touch: 无法创建"51.txt": 超出磁盘限额 [zhao@c2407 testlv]$ dd if=/dev/zero of=./1.txt bs=11M count=1 记录了1+0 的读入 记录了1+0 的写出 11534336字节(12 MB)已复制,0.0551349 秒,209 MB/秒 [zhao@c2407 testlv]$ dd if=/dev/zero of=./1.txt bs=51M count=1 dd: 写入"./1.txt" 出错: 超出磁盘限额 记录了1+0 的读入 记录了0+0 的写出 50135040字节(50 MB)已复制,0.278001 秒,180 MB/秒
3.1、xfs配额
1、挂载并启用配额
mount -o usrquota,grpquota /挂载磁盘 /挂载点
永久挂载参数如下:
/dev/sdb1 /mail xfs defaults,usrquota,grpquota 0 0
2、编辑用户配额
xfs_quota -x -c 'limit -u bsoft:30M bhard:50M isft:3 ihard:5 用户名' /挂载目录
3、也可以针对组编辑配额
xfs_quota -x -c 'limit -g bsoft:30M bhard:50M isft:3 ihard:5 组名' /挂载目录
3.2、ext4配额(了解)
1、挂载
mount -o defaults,usrquota,grpquota /挂载磁盘 /挂载点
永久挂载参数如下:
/dev/sdb1 /mail ext4 defaults,usrquota,grpquota,defaults 0 0
2、生成配额文件
quotacheck /挂载点
3、启用配额;关闭配额命令用quotaoff
quotaon -ugv /挂载点
4、针对用户配额
edquota -u 用户名
也可以针对组做配额: edquota -g 组名
5、修改配置文件格式如下:
/dev/sdd1 0 30M 50M 0 8 10
三、磁盘检测与修复
1、fsck命令
fsck - 检查并修复Linux文件系统
语法:
fsck [ -sACVRTNP ] [ -t fstype ] [filesys ... ] [--] [ fs-specific-options ]
选项:
选项 | 作用 |
---|---|
-y | 检查文件系统并进行尝试修复 |
案例:
fsck.ext4 -y /dev/sdb4
2、xfs_repair命令
语法:
xfs_repair [options] device
选项:
选项 | 作用 |
---|---|
案例:
xfs_repair -n -v /dev/sdb1
3、badblocks命令
badblocks - 查询设备的坏区块
语法:
badblocks [ -svwnf ] [ -b block-size ] [ -c blocks_at_once ] [ -i input_file ] [ -o output_file ] [ -p num_passes ] device [ blocks-count ] [ start-block
选项:
选项 | 作用 |
---|---|
案例:
#模拟故障 [root@c2407 ~]# dd if=/dev/zero of=/dev/mapper/testvg-testlv bs=512 count=1 记录了1+0 的读入 记录了1+0 的写出 512字节(512 B)已复制,0.000827944 秒,618 kB/秒 [root@c2407 ~]# mount /dev/mapper/testvg-testlv /testlv mount: /dev/mapper/testvg-testlv 写保护,将以只读方式挂载 mount: 文件系统类型错误、选项错误、/dev/mapper/testvg-testlv 上有坏超级块、 缺少代码页或助手程序,或其他错误
有些情况下在 syslog 中可以找到一些有用信息- 请尝试 dmesg | tail 这样的命令看看。
badblocks /dev/mapper/testvg-testlv
四、文件系统备份与恢复
1、xfsdump命令
备份等级:
0 --完全备份(文件系统默认备份等级)
1—9 --增量备份
语法:
xfsdump -h xfsdump [ options ] -f dest [ -f dest ... ] filesystem xfsdump [ options ] - filesystem xfsdump -I [ subopt=value ... ]
选项:
选项 | 作用 |
---|---|
-f | 指定备份到哪个目录 |
-L | 指定会话标签 |
-M | 指定设备标签 |
-s | 指定分区中文件或目录的相对路径 |
案例:
1)备份整个分区:
#交互式:xfsdump -f [备份存放路径] [要备份的的设备或挂载点] xfsdump -f /opt/dump_sdb1 /dev/sda1 #非交互式:xfsdump -f [备份存放路径] [要备份的的设备或挂载点] -L [会话标签名] -M [设备标 签名] xfsdump -f /opt/dump_sdb1_0 /dev/sdb1 -L dump_sdb1_0 -M sdb1_0
2)备份分区中某个目录或文件:
#xfsdump -f [备份存放路径] -s [要备份的目录或文件的相对路径] -L [会话标签名] -M [设 备标签名] xfsdump -f /optdump_sda1_0 -s grub2/grub.cfg /boot -L dump_sda1_0 -M sda1_0
3)查看已备份的文件系统:
#每次备份成功后,都会在/var/lib/xfsdump/inventory 目录下生成档案信息,详细记录备份的信 息,如挂载点、挂载设备、会话标签、设备标签、备份目录等相关信息。 cd /var/lib/xfsdump/inventory xfsdump -I
注意:
-
xfsdump不支持没有挂载的文件系统备份,所以只能备份已挂载的文件系统;
-
xfsdump必须使用root的权限才能操作;
-
xfsdump只能备份xfs文件系统;
-
xfsdump备份下来的数据只能让xfsrestore来解析;
-
xfsdump是通过文件系统的UUID来分辨备份档案的,因此不能备份两个具有相同UUID的文件系统
2、xfsrestore命令
语法:
语法:xfsrestore -f [已备份文件路径] [恢复后的文件路径]
选项:
选项 | 作用 |
---|---|
-f | 指定需要恢复的备份文件 |
案例:
#先删除挂载点下的内容 #恢复文件系统数据 xfsrestore -f /opt/dump_sdb1 /sdb1
附录:xfs常用命令
xfs_admin: 调整 xfs 文件系统的各种参数 xfs_copy: 拷贝 xfs 文件系统的内容到一个或多个目标系统(并行方式) xfs_db: 调试或检测 xfs 文件系统(查看文件系统碎片等) xfs_check: 检测 xfs 文件系统的完整性 xfs_bmap: 查看一个文件的块映射 xfs_repair: 尝试修复受损的 xfs 文件系统 xfs_fsr: 碎片整理 xfs_quota: 管理 xfs 文件系统的磁盘配额 xfs_metadump: 将 xfs 文件系统的元数据 (metadata) 拷贝到一个文件中 xfs_mdrestore: 从一个文件中将元数据 (metadata) 恢复到 xfs 文件系统 xfs_growfs: 调整一个 xfs 文件系统大小(只能扩展) xfs_logprint: print the log of an XFS filesystem xfs_mkfile: create an XFS file xfs_info: expand an XFS filesystem xfs_ncheck: generate pathnames from i-numbers for XFS xfs_rtcp: XFS realtime copy command xfs_freeze: suspend access to an XFS filesystem xfs_io: debug the I/O path of an XFS filesystem
五、RAID类型介绍与应用场景
1. RAID 0(条带化)
-
原理:数据分割为块,交替写入多块磁盘(条带化)。
-
优点:
-
极致性能:读写速度接近磁盘数量的倍数。
-
100%容量利用率:无冗余开销。
-
-
缺点:
-
无冗余:任意一块磁盘故障即数据全损。
-
-
适用场景:
-
临时数据处理(如视频渲染缓存)。
-
对速度要求极高且数据可丢失的场景(如科研计算中间结果)。
-
2. RAID 1(镜像)
-
原理:数据完全复制到另一块磁盘(镜像)。
-
优点:
-
高可靠性:允许一块磁盘故障。
-
读取速度提升:可从任意磁盘读取。
-
-
缺点:
-
容量利用率50%:存储成本翻倍。
-
写入速度无提升:需同时写入两块磁盘。
-
-
适用场景:
-
关键系统盘(如操作系统、数据库日志文件)。
-
小型企业文件服务器(预算有限但需基本冗余)。
-
3. RAID 5(分布式奇偶校验)
-
原理:数据条带化分布,奇偶校验信息轮流存储在所有磁盘。
-
优点:
-
平衡性能与冗余:允许一块磁盘故障,容量利用率为
(N-1)/N
(如4盘利用75%)。 -
读取性能高:多盘并行读取。
-
-
缺点:
-
写入性能较低:每次写入需计算并更新奇偶校验。
-
重建时间长:大容量磁盘重建期间二次故障风险高。
-
-
适用场景:
-
中型文件服务器(如企业文档共享)。
-
虚拟机存储(兼顾IOPS与成本)。
-
4. RAID 6(双分布式奇偶校验)
-
原理:类似 RAID 5,但使用两组独立奇偶校验。
-
优点:
-
更高容错:允许两块磁盘同时故障。
-
大容量场景更安全:降低重建期间的故障风险。
-
-
缺点:
-
写入性能更低:双重校验计算增加开销。
-
容量利用率
(N-2)/N
(如6盘利用66%)。
-
-
适用场景:
-
大容量归档存储(如医疗影像、监控视频)。
-
云存储后端(需应对多盘故障风险)。
-
5. RAID 10(镜像+条带化)
-
原理:先镜像(RAID 1)再条带化(RAID 0)。
-
优点:
-
高性能+高可靠:读写速度接近 RAID 0,允许每组镜像中一块磁盘故障。
-
重建速度快:仅需复制镜像盘。
-
-
缺点:
-
容量利用率50%:成本较高。
-
最少4块磁盘:扩展需偶数递增。
-
-
适用场景:
-
高事务数据库(如MySQL、Oracle)。
-
虚拟化平台(ESXi、KVM)的存储池。
-
其他 RAID 类型
-
RAID 50/60:RAID 5/6与RAID 0结合,适合超大规模存储(需至少6盘)。
-
RAID 01(条带化+镜像):先条带化再镜像,故障容错性低于 RAID 10,已较少使用。
对比总结
RAID级别 | 最小磁盘数 | 容错能力 | 容量利用率 | 读取性能 | 写入性能 | 典型场景 |
---|---|---|---|---|---|---|
RAID 0 | 2 | 无 | 100% | 极高 | 极高 | 非关键临时数据 |
RAID 1 | 2 | 1块 | 50% | 高 | 中等 | 系统盘、小型服务器 |
RAID 5 | 3 | 1块 | (N-1)/N | 高 | 中等 | 文件服务器、虚拟机存储 |
RAID 6 | 4 | 2块 | (N-2)/N | 高 | 低 | 大容量归档、云存储 |
RAID 10 | 4 | 每组1块 | 50% | 极高 | 高 | 数据库、高IOPS应用 |
选择建议
-
性能优先 → RAID 0(无冗余)或 RAID 10(有冗余)。
-
预算有限+基本冗余 → RAID 5。
-
大容量+高容错 → RAID 6。
-
关键业务高可用 → RAID 10。
注意事项
-
RAID 不是备份:无法防止误删除、病毒攻击,需额外备份方案。
-
硬件 RAID vs 软件 RAID:
-
硬件 RAID:依赖 RAID 卡,性能稳定,支持缓存加速。
-
软件 RAID(如Linux mdadm):灵活,成本低,但占用CPU资源。
-
-
SSD与RAID:SSD的磨损均衡机制可能与RAID冲突,建议优先选用企业级SSD并禁用磁盘缓存。