180天Linux小白到大神-Linux磁盘管理2

12.Linux磁盘管理

12.Linux磁盘管理

7.逻辑卷lvm

7.1 为何要用lvm

7.2 什么是lvm

7.3 lvm相关术语

7.4 lvm配置实践

7.4.1 环境与思路

7.4.2 创建物理卷

7.4.3 创建卷组

7.4.4 创建逻辑卷

7.4.5 挂载使用

7.5 lvm卷组管理

7.5.1 扩大卷组

7.5.2 缩减卷组

7.6 lvm逻辑卷管理

7.6.1 扩展逻辑卷

7.6.2 删除逻辑卷

8.磁盘阵列RAID

8.1 什么是RAID

8.2 为什么需要RAID

8.3 实现RAID的几种模式

8.3.1 RAID0

8.3.2 RAID1

8.3.3 RAID5

8.3.4 RAID10

8.4 实现RAID的方式

8.4.1 硬RAID(服务器|raid卡)

8.4.2 软RAID(软件)

8.5 软RAID配置实战

8.5.1 RAID环境准备

8.5.2 RAID0实战

8.5.3 RAID1实战

8.5.4 RAID5实战

7.逻辑卷lvm

7.1 为何要用lvm

当刚开始安装Linux 系统时,往往不能确定每个分区使用的空间大小,只能凭经验分配不科学;

如果分区设置的过大,就浪费了磁盘空间;

如果分区设置的过小,就会导致空间不够;

如何希望分配的空间过大或过小,都能动态调整,则需要使用到 LVM 逻辑卷;

7.2 什么是lvm

LVM 是 Logical Volume Manager 逻辑卷管理的简

写,它是对磁盘分区管理的一种机制;

LVM 优点:

LVM 可以创建和管理逻辑卷,而不是直接使用物理

硬盘。

LVM 可以弹性的管理逻辑卷的扩大缩小,操作简

单,而不损坏已存储的数据;

LVM 可以随意将新的硬盘添加到LVM ,以直接扩展已经存在的逻辑卷。

LVM 缺点:

LVM 如果有一个磁盘损坏,整个 lvm 都坏了,lvm只有动态扩展作用

解决办法:用 RAID + LVM = 既有冗余又有动态扩展;

7.3 lvm相关术语

物理卷(PV):将常规的磁盘通过pvcreate 命令对其

进行初始化,形成了物理卷。(面粉)

卷组(VG):把多个物理卷组成一个逻辑的整体,这样

卷组的大小就是多个盘之和。(大面团)

逻辑卷(LV):从卷组中划分需要的空间大小出来,用户仅需对其格式化然后即可挂载使用。(切成馒头) 基本单元(PE):分配的逻辑大小的最小单元,默认4MB,假设分配100MB的空间,则需要创建25个PE

7.4 lvm配置实践

7.4.1 环境与思路

1.准备三块物理磁盘,建议在虚拟机关闭状态添加,

以便更好的实验;

1.创建物理卷,将普通磁盘转换为物理卷

2.创建卷组, 将物理卷加入到卷组中

3.在卷组中划分逻辑卷,然后挂载使用

7.4.2 创建物理卷

1.将磁盘转换为物理卷,并加入pv

[root@linux-node1 ~]# pvcreate /dev/sdb Physical volume “/dev/sdb” successfully created.

2.检查 pv 创建情况

[root@linux-node1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 — 1.00g 1.00g

7.4.3 创建卷组

1.创建名为 datavg 的卷组,然后将物理卷加入进卷组

[root@linux-node1 ~]# vgcreate datavg /dev/sdb

Volume group “datavg” successfully created

2.检查卷组(发现存在一个PV卷)

[root@linux-node1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 0 0 wz–n- 1020.00m 1020.00m

7.4.4 创建逻辑卷

1.分配 datavg 逻辑卷,-n 指定逻辑卷名称,-L 指定逻辑卷大小;

#1.分配100M空间给lv1逻辑卷 [root@linux-node1 ~]# lvcreate -L 100M -n lv1 datavg

Logical volume “datalv1” created.

2.检查逻辑卷

[root@linux-node1 ~]# lvscan

ACTIVE ‘/dev/datavg/lv1’ [100.00

MiB] inherit

7.4.5 挂载使用

1.格式化逻辑卷

[root@linux-node1 ~]# mkfs.xfs /dev/datavg/lv1

2.创建目录并挂载

[root@linux-node1 ~]# mkdir /lv1 [root@linux-node1 ~]# mount /dev/datavg/lv1 /lv1/

[root@linux-node1 ~]# df -h

Filesystem Size Used

Avail Use% Mounted on

/dev/mapper/datavg-lv1 97M 5.2M 92M

6% /lv1

7.5 lvm卷组管理

7.5.1 扩大卷组

1.准备新的磁盘加入至pv ,然后检查卷组当前的大小;

[root@xuliangwei~]# pvcreate /dev/sdc [root@oldxu ~]# vgs

VG #PV #LV #SN Attr VSize
VFree
datavg 1 1 0 wz–n-
1020.00m 920.00m

2.使用 vgextend 扩展卷组

[root@xuliangwei~]# vgextend datavg /dev/sdc

Volume group “datavg” successfully extended

3.再次检查,发现卷组已经扩大

[root@oldxu ~]# vgs

VG #PV #LV #SN Attr

VSize

VFree

datavg

2 1

0 wz–n-

1.99g 1.89g

7.5.2 缩减卷组

假设想移除 /dev/sdb 磁盘,建议先将 sdb 磁盘数据先迁移到 sdc 磁盘,然后在移除;

注意:同一卷组的磁盘才可以进行在线迁移1.检查当前逻辑卷 VG 中 PV 使用情况

[root@xuliangwei~]# pvs

PV VG Fmt Attr PSize PFree /dev/sdb vg1 lvm2 a – 2.00g 1.76g /dev/sdc vg1 lvm2 a – 2.00g 2.00g

  1. pvmove 在线数据迁移,将 sdb 的数据迁移至 sdc

[root@xuliangwei~]# pvmove /dev/sdb /dev/sdb: Moved: 100.00%

3.检查是否将 sdb 数据迁移至 sdc

[root@xuliangwei~]# pvs

PV VG Fmt Attr PSize PFree /dev/sdb vg1 lvm2 a – 2.00g 2.00g /dev/sdc vg1 lvm2 a – 2.00g 1.76g

4.从卷组中移除 sdb 磁盘

[root@xuliangwei~]# vgreduce datavg /dev/sdb

Removed “/dev/sdb” from volume group “datavg”

7.6 lvm逻辑卷管理

7.6.1 扩展逻辑卷

扩展逻辑卷:取决于 vg 卷中是否还有剩余的容量 注意扩展逻辑卷不能超过卷组 VG 的总大小

[root@xuliangwei~]# vgs

VG #PV #LV #SN Attr

VSize

VFree

datavg

1 1

0 wz–n-

1020.00m 920.00m

1.扩展 lv 逻辑卷,增加 800M 分配给逻辑卷

[root@xuliangwei~]# lvextend -L +800M /dev/datavg/lv1

#也可以选择分配卷组中多少百分比给逻辑卷

[root@xuliangwei~]# lvextend -l +50%FREE /dev/datavg/lv1

2.扩展逻辑卷后需要更新fs文件系统

[root@xuliangwei~]# xfs_growfs /dev/datavg/lv1 #xfs文件格式扩容 [root@xuliangwei~]# resize2fs /dev/datavg/lv1 #ext文件格式扩容

7.6.2 删除逻辑卷

1.选卸载挂载点,然后在移除逻辑卷

[root@oldxu ~]# umount /dev/datavg/lv1 [root@oldxu ~]# lvremove /dev/datavg/lv1

2.删除 vg

[root@oldxu ~]# vgremove datavg

3.删除 pv

[root@oldxu ~]# pvremove /dev/sdb [root@oldxu ~]# pvremove /dev/sdc

8.磁盘阵列RAID

8.1 什么是RAID

RAID 简称磁盘阵列,那什么是阵列:

古代打仗时会对士兵进行排兵布阵,其目的在于提高

士兵整体的作战能力,而不是某个士兵的战斗力。 那么回到磁盘中,我们可以将多块盘组合进行排列,提高磁盘的整体读写能力,和冗余能力,通常我们将其称为磁盘阵列。

8.2 为什么需要RAID

1.提升读写能力:(在RAID中,可以让很多磁盘同时传输数据,因为多块磁盘在逻辑上感觉是一个磁盘,所以使用RAID可以达到单个磁盘的几倍、几十倍甚至上百倍的速率。100MB/s --> 300MB/s)

2.保证数据安全:(硬盘非常的脆弱,它经常会坏掉,所以有了RAID。它的目的是将好多个硬盘组合在一起;就算坏掉一块盘,也不影响服务器对外提供服务,保证磁盘高可用; abc b ac)

RAID可以预防数据丢失,但并不能百分百保证数据不丢,所以在使用RAID的同时还需要备份数据。

8.3 实现RAID的几种模式

8.3.1 RAID0

RAID0条带卷,最少两块盘。读写性能好,但没有容错机制。坏一块磁盘数据全丢。

磁盘空间使用率:100%,成本低

读性能:N * 单块磁盘的读性能;

写性能:N * 单块磁盘的写性能;

冗余:无,任何一块磁盘损坏都将导致数据不可用;

应用场景:无状态服务(web);

8.3.2 RAID1

RAID1 镜像卷,写入性能一般、读取性能快、有容错机制,但磁盘有50%浪费

磁盘空间使用率:50% 成本较高。

读性能:N * 单块磁盘的读性能;

写性能:1 * 单块磁盘的写性能;

冗余:在这一对镜像盘中有一块磁盘可以使用,那么无影响;

应用场景:系统盘;

8.3.3 RAID5

RAID5 校验卷,至少3块相同大小的盘,并且只允许坏一块盘,有效空间 (N-1) ,读写速度快。坏掉一块盘,读的性能会下降;

磁盘空间利用率:(N-1) ,即只浪费一块磁盘用于

奇偶校验;

读性能:(n-1)*单块磁盘的读性能,接近 RAID0 的读性能;

写性能:(n-1)*单块磁盘的写性能,写入数据需要做校验值;性能会下降;

冗余:只允许一块磁盘损坏; 修复时间会比较长,修复过程中可能会出现其他盘损坏的; 应用场景:常规选择 (all);

8.3.4 RAID10

RAID10,先做RAID1,在做 RAID0

磁盘空间利用率:50%

读性能:

写性能:

冗余:只要一对镜像盘中有一块磁盘可以使用就没问题。

应用场景:数据库(db);

8.4 实现RAID的方式

8.4.1 硬RAID(服务器|raid卡)

硬 RAID 使用硬件阵列卡;在安装操作系统之前进入

BIOS 配置

raid列表

raid0

raid1

raid5

选择磁盘

8.4.2 软RAID(软件)

软 RAID 通过操作系统软件来实现,性能远不如硬 RAID , 仅测试效果;

8.5 软RAID配置实战

8.5.1 RAID环境准备

由于使用操作系统模拟的软RAID,所以需要在虚拟机上添加9 块硬盘,来完成实验;

2.创建软 RAID 命令 mdadm ,如果没有使用 yum install mdadm 安装即可

mdadm 磁盘阵列命令选项

创建模式:

–C :创建阵列;

-l :指定指定级别;

-n :指定设备数量;

-v :指定设备名称;

-x :指定备用磁盘;

管理模式:

–add

–remove

–fail

8.5.2 RAID0实战

创建 RAID0 实验环境:

raid种类

磁盘

热备盘

raid0

sdb、sdc

(sdc、sdd)

1.创建

raid0

[root@oldxu ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc

2.查看阵列信息

[root@oldxu ~]# mdadm -Ds [root@oldxu ~]# mdadm -D /dev/md0

3.格式化磁盘并分区挂载

[root@oldxu ~]# mkfs.xfs /dev/md0 [root@oldxu ~]# mkdir /raid0 [root@oldxu ~]# mount /dev/md0 /raid0/ [root@oldxu ~]# df -h

8.5.3 RAID1实战

1)创建 RAID1 ,并添加1个热备盘;

2)模拟磁盘故障,看备用盘是否会自动顶替故障

盘;

3)从 raid1 中移出故障盘;

创建 RAID1 实验环境:

raid种 磁盘 热备盘

raid1 sdd、sde、 (sde、sdf、sdg) sdf

1.准备 sdb、sdc 两块盘,然后创建阵列为 RAID1 ,准备 sdd 为备用盘。

#1.创建raid1阵列

[root@oldxu ~]# mdadm -C -v /dev/md1 -l 1 - n 2 /dev/sdd /dev/sde -x1 /dev/sdf

2.格式化磁盘并分区挂载;

[root@oldxu ~]# mkfs.xfs -f /dev/md1

[root@oldxu ~]# mkdir /raid1

[root@oldxu ~]# mount /dev/md1 /mnt/raid1/

3.使用 --fail 模拟 RAID1 中数据盘 /dev/sde 出现故

障,观察 /dev/sdf 备用盘能否自动顶替故障盘;

[root@oldxu ~]# mdadm /dev/md1 --fail /dev/sde

4.检查当然 raid 状态

[root@oldxu ~]# # mdadm -D /dev/md1 Number Major Minor RaidDevice

State

0 8 96

active sync /dev/sdd

2 8 128

spare rebuilding /dev/sdf

0

1

热备盘已经

在同步数据

1

8

112

faulty

/dev/sde

#故障盘

5.移除损坏的磁盘

[root@oldxu ~]# mdadm /dev/md1 -r /dev/sde

8.5.4 RAID5实战

1)使用三块盘创建RAID5 ,使用-x 添加热备盘

2)模拟损坏一块磁盘,然后查看备用盘是否能顶用

(此时是三块磁盘)

3)然后在模拟一块磁盘损坏,检查数据是否损坏 (此时是二块磁盘)

创建 RAID5 实验环境:

raid种 磁盘 热备
类 盘

raid5 sdg、sdh、sdi ( sdc sdh sdi sdj sdj
sdk )

1.创建 raid5 也可以在最后-x添加备用盘

[root@oldxu ~]# mdadm -C -v /dev/md5 -l 5 - n 3 /dev/sdg /dev/sdh /dev/sdi -x1 /dev/sdj

2.格式化磁盘并分区挂载

[root@oldxu ~]# mkfs.xfs -f /dev/md5 [root@oldxu ~]# mkdir /mnt/raid5 [root@oldxu ~]# mount /dev/md5 /raid5/ [root@oldxu ~]# echo “Raid” > /raid5/file [root@oldxu ~]# mdadm -D /dev/md5

3.模拟一块磁盘损坏,查看 /dev/sdj 备用磁盘是否会顶上

[root@oldxu ~]# mdadm /dev/md5 --fail /dev/sdg

[root@oldxu ~]# mdadm -D /dev/md5

4.将故障的 /dev/sdg 盘剔除;

[root@oldxu ~]# mdadm /dev/md5 -r /dev/sdg

5.再次模拟一块磁盘损坏,检查数据是否丢失;

[root@oldxu ~]# mdadm /dev/md5 --fail /dev/sdg

[root@oldxu ~]# mdadm -D /dev/md5

你可能感兴趣的:(Linux小白成长之路,linux,运维,运维开发,云计算,操作系统)