Linux 学习之路(十一):RAID和LVM

传输速度 Mb/8=MB

硬盘的接口:

IDE(ATA):133Mbps 并行总线

SATA:300Mbps,600Mbps,6Gbps 串行总线

USB:USB3.0:480Mbps 串行总线

SCSI:Small Computer System Interface转速比较块

​ UltraSCSI,320Mbps 并行总线

SAS: 串行2.5英寸,转速快,造价高

RAID

独立磁盘冗余阵列 (Redundant Array of Independent Disks, RAID) 是一种将多个磁盘驱动器组件(通常是多块硬盘或多个分区)组合为一个逻辑单元的存储技术。根据 RAID 的部署情况,这个逻辑单元可以是单个的文件系统,也可以是一个能在其上建立多个分区的透明中间层。根据所需的冗余量和性能要求,数据按照 #RAID 级别 中的某一种方式分布在驱动器中。所选的 RAID 级别决定了是否可以防止数据丢失(硬盘故障时)、是否提高性能或结合两者优势。

RAID级别:

级别 性能表现 冗余能力(容错能力) 空间利用率 需要盘数
0条带 读写性能提升几乎n倍 ns(一块s) 至少2块盘
1镜像 写下降,读提升 1/2 至少2块盘
5校验盘 读、写提升 (n-1)/n 至少需要3块
01(先条带后镜像) 读、写提升 1/2 至少需要4块
10 读、写提升 1/2 至少需要4块
JBOD(将多个小盘组合成一个大盘) 无提升 100% 至少需要2块
50 读、写提升 (n-2)/n 至少需要6块

n指几块盘,s指每块盘大小,如果创建一个2G的RAID5:
在这里插入图片描述
注:n=3,s=1G

RAID的实现形式

硬件RAID

  • 将RAID控制器与外部设备连接起来。
  • RAID芯片在内部控制SATA口插槽,即在BIOS界面配置启用芯片,并将硬盘配置RAID级别。
  • 操作系统需要安装RAID的驱动程序,使之可以识别RAID。操作系统把RAID都识别为/dev/sda等磁盘。

软件RAID

  • 保证内核支持软件RAID,内核中有一个设备多磁盘md(multi disk)模块,可以读取配置信息。

  • md模拟一个RAID,逻辑RAID:/dev/md #,#数字标识不同RAID设备,并不标识RAID级别。

  • 在内核内部,由程序完成分配。再通过各自口存入自己的设备中/dev/sda,sdc。

  • 内核可以识别的软RAID类型:fd类型。

mdadm(md):将任何块设备做成RAID。不同磁盘上的分区(建议)。

模式化的命令:

创建模式 -C

专用选项:-l:级别

​ -n:设备个数

​ -a(yes|no):自动为其创建设备文件

​ -c:CHUNK大小,2^n,默认为64k

管理模式 --add,–del,–remove

模拟磁盘损坏的选项:

-f,–fail,–set-faulty

mdadm /dev/md # --fail /dev/sda7

监控模式 -F

查看RAID阵列的详细信息(例如显示所指定RAID的详细信息):

mdadm -D /dev/md1

将当前RAID信息保存至配置文件,以便以后进行装配

mdadm -D --scan > /etc/madam.conf

增长模式 -G

装配模式 -A 重新识别RAID并组合起来

  • 实验:在同一块磁盘的不同分区创建一个2G的RAID0(一般建议不要这么做)

4个512M分区或者2个1G分区(两块盘要一样)

#没有其他RAID设备的前提下的操作步骤
mdadm -C /dev/md0
#创建之前要指定在哪些设备上创建,于是要先创建分区
fdisk /dev/sda
n
+1G
t #调整分区
L
fd
w
#通知内核重读:
partprobe /sev/sda
#确保分区可以被识别
cat /proc/partitions
#创建设备为/dev/md0,自动创建设备文件,级别为0,共2个设备,分别是/dev/sda5和/dev/sda6
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{5,6}
#当前设备下所有处于启用状态的RAID设备
cat /proc/mdstat
#任何一个设备要能启用则要先格式化,然后挂载
#格式化raid
mke2fs -j /dev/md0
mdadm -D /dev/md1
#挂载
mount /dev/md0 /mnt
ls /mnt
  • 创建一个2G的RAID1

2个2G的分区

#前提sda7\sda8都是2G分区
mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sda7 /dev/sda8
cat /proc/mdstat
(镜像磁盘的特点必须将每个数据位一一同步,即修改任一磁盘数据位,另一个也会被修改.)
fdisk -l #查看设备
mke2fs -j /dev/md1
mount /dev/md1 /media/
#复制一个文件到/media下
cp /etc/inittab /media/
#在管理模式下模拟磁盘损坏
mdadm /dev/md1 -f /dev/sda8
#查看md1信息
mdadm --detail /dev/md1
#移除损坏盘
mdadm /dev/md1 -r /dev/sda8
#替换盘
mdadm /dev/md1 -a /dev/mda9(加入盘大小要与此前盘一致)

watch:周期性地执行指定命令,并以全屏方式显示结果。

​ -n #:指定周期长度,单位为秒,默认为2

格式: watch -n # ‘COMMAND’

RAID5只要有冗余都支持空闲盘

例如创建一个2G的RAID5:使用3个1G的。

一个空闲盘,则使用4个1G的。

条带的倍数:chunk/block

软RAID生成chunk的时候都要计算一下相当于多少个磁盘块

在格式化的时候指定条带的倍数,优化软RAID性能:

mke2fs -j -E stride=16 -b 4096 /dev/sd0

DM:Device Mapper逻辑设备

LVM 多路径

Linux 学习之路(十一):RAID和LVM_第1张图片

snapshot快照:访问文件的另一条路径

保存发生了改变的数据,主要作用是实现数据备份

逻辑卷底层可以是分区、磁盘或者硬件RAID,只要是块设备都可以。

PV物理卷

pvcreate,pvs,pvscan,pvmove(移动),pvremove(移除),pvdisplay(查看)

VG卷组

vgcreate,vgremove(覆盖里面的源数据),vgextend,vgreduce,vgs,vgdisplay,vgscan

vgcreate VG_NAME /PATH/TO/PV
​ -s #:PE大小,默认为4MB

LV逻辑卷

lvcreate,lvremove,lvextend,lvreduce,lvs,lvdisplay

lvcreate -n LV_NAME -L #G VG_NAME

fdisk /dev/sda
10G,VG
n:7G+3G
t
L
8e
#查看p
partprobe /dev/sda
cat /proc/partitions
#fdisk命令只支持创建15个分区
pvcreate /dev/sda{10,11}
#查看当前系统PV
pvs
#详细信息
pvdisplay
#扫描当前pv
pvscan
vgs
vgcreate myvg /dev/sda{10,11}
vgremove myng
vgcreate -s 8M myvg/dev/sda{10,11}
vgdisplay myvg
#查看VG当中有多少个pv
pvs
#移除pv上的数据
pvmove /dev/sda11 
#缩减vg大小(直接拿掉一个pv):
vgreduce
#把一个物理卷加入到此扩展卷组
vgextend myvg /dev/sda12
lvcreate -L 50M -n testlv myvg
lvdisplay /dev/myvg/testlv
mke2fs -j /dev/myvg/testlv
mount /dev/myvg/testlv/mnt
ls /mnt
ls /dev/mapper/
lvremove /dev/mapper/myvg-testlv

一、扩展逻辑卷

lvextend

​ -L [+]#

ext2扩展逻辑边界resize2fs

二、缩减逻辑卷

注意:1.不能在线缩减,得先卸载;

​ 2.确保缩减后的空间大小依然能存储原有的所有数据;

​ 3.在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态

df -lh

umount

e2fsck -f

resize2fs /PATH/TO/LV 5G

lvreduce -L [-] # /PATH/TO/LV

三、快照卷

1、生命周期为整个数据时长:在这段时长内,数据的增长量不能超出快照卷大小

2、快照卷应该是只读的

3、跟原卷在同一卷组内

lvcreate

​ -s

​ -p r|w

lvcreate -L # -n SLV_NAME -p r /PATH/TO/LV

lvcreate -L 50M -n testlv-snap -s -p r /dev/myvg/testlv
lvs
mount /dev/myvg/testlv-snap 

你可能感兴趣的:(Linux)