EXT家族支持度最广,但
创建文件系统慢
修复慢
存储容量有限
XFS同样是日志文件系统:
容量大,支持大存储
高性能,创建/修复文件系统快
inode与block都是系统需要用到时,才动态配置产生
基本分区(静态)
7*24小时
不能随意重装系统,装系统时,必须提前规划好
动态磁盘
RAID介绍
什么是raid
raid是廉价冗余磁盘阵列(Redundant Arrays of Independent Drives,RAID)的简称,有时候也简称磁盘阵列(Disk Array)
raid是一种把多块独立的物理磁盘按不同的技术方式组合起来形成一个磁盘组,在逻辑上(做完RAID,装系统后)看起来就是
一块大的磁盘,从而提供比单个物理磁盘更大的存储容量或更高的存储性能,同时又提供不同级别数据冗余备份的一种技术。
RAID级别介绍
把多个物理磁盘通过不同技术方式组成磁盘阵列,这个不同的技术方式就被称为RAID级别
RAID级别一般Raid0、Raid1、Raid2、Raid3、Raid4、Raid5、Raid6、Raid7、Raid0+1(也称为raid10)、Raid53等
生产环境常用的Raid级别为:Raid0、Raid1、Raid5、Raid10
Raid级别 关键优点 关键缺点 实际应用场景 0 读写速度最快 没有任何冗余 MySQL Slave,集群的节点RS 1 100%冗余,镜像 读写性能一般,成本高 单独的,数据重要,且不能宕机的业务。监控、系统盘 5 具备一定性能和冗余可以 写入性能不高 一般的业务都可以用 坏一块盘。读性能不错 10 读写速度很快,百分百 成本高 性能和冗余要求都很好的业务 冗余 数据库主库和存储的主节点
下表提供了7级RAID的简单定义
Raid技术分类
常见Raid技术分为两种
基于硬件的Riad技术和基于软件的Raid技术
1.软raid技术
只有Windows2000/2003、Win9x/WinMe/Linux系统支持
需要CPU配合,性能相对较低
安全性不好,当有一块硬盘损坏时,它不能实现重建的功能
通过在硬盘中模拟实现,成本较低
2.硬raid技术
所有系统都支持。
从硬件直接支持RAIN,不需要额外性能
当有硬盘丢失时,它可以实现重建,以及如果RAID卡损坏时,它可以通过更换RAID卡,实现不丢失数据的功能
需要相应的硬件设备支持,成本较高
互联网公司首选dell服务器,默认的就会支持raid0和raid1,如果需要raid5、raid10就需要买raid卡
RAID和LVM的区别
LVM源于HP,是LINUX平台下的一种综合存储解决方案。算是RAID的一个超集。不但实现了主流的RAID功能(span/stripe/mirror
/stripemirror/RAID 4/RAID 5/RAID 6),而且还有快照和存储池支持;同时还支持在线数据迁移和卷级别的尺寸变动等功能。
算是一种相当优秀的解决方案。当然,缺点跟软件RAID一样,需要占用CPU。
LVM:灵活的管理磁盘的容量,有一定的冗余和性能功能,但很弱。
RAID:更侧重性能和数据安全
为什么使用RAID
1.提高数据安全性
2.提升数据读写性能
3.提供更大的单一逻辑磁盘数据容量存储
raid5案例:3+1(热备)
1.准备四块硬盘 [root@xiaoming ~]# lsblk | grep sd[d-g] sdd 8:48 0 5G 0 disk sde 8:64 0 5G 0 disk sdf 8:80 0 5G 0 disk sdg 8:96 0 5G 0 disk
2.创建raid5 [root@xiaoming ~]# yum install -y mdadm [root@xiaoming ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd[d-g] mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. \相关选项解释 -C 创建RAID /dev/md0 第一个raid设备 -l5 Raid5 -n3 raid成员三块硬盘 -x1 热备磁盘一块硬盘
3.格式化 [root@xiaoming ~]# mkfs.xfs /dev/md0 4.挂载 [root@xiaoming ~]# mkdir /mnt/raid5 [root@xiaoming ~]# mount /dev/md0 /m
5.查看raid信息 [root@xiaoming ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Dec 30 12:10:14 2019 Raid Level : raid5 Array Size : 10475520 (9.99 GiB 10.73 GB) Used Dev Size : 5237760 (5.00 GiB 5.36 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Dec 30 12:17:13 2019 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : xiaoming:0 (local to host xiaoming) UUID : 5f80c18b:d803af9e:5b002baa:06c7dedf Events : 18 Number Major Minor RaidDevice State 0 8 48 0 active sync /dev/sdd 1 8 64 1 active sync /dev/sde 4 8 80 2 active sync /dev/sdf 3 8 96 - spare /dev/sdg
6.模拟一块硬盘错误 开两个终端 一个监控RAID信息 一个模拟磁盘故障 [root@xiaoming raid5]# mdadm /dev/md0 -f /dev/sde -r /dev/sde mdadm: set /dev/sde faulty in /dev/md0 mdadm: hot removed /dev/sde from /dev/md0 //-f fail //-r remove 观察RAID卷的变化 ...
LVM简介
logical volume manager
实现动态分区
CentOS6/7默认都是lvm分区
物理卷(PV):把常规的块设备(硬盘、分区等可以读写数据的设备)通过PVcreate命令对其进行初始化,就成了物理卷
卷组(VG):把多个物理卷的容量组成一个逻辑整体,可以从里面灵活分配容量
逻辑卷(LV):从卷组中划分部分空间成为一个可以读写数据的逻辑单元。需要对其格式化然后挂载使用
案例:基于RAID5的lvm
1.创建过程:
1)创建物理卷,添加物理磁盘
2)创建卷组,添加物理卷加入该卷组
3)在卷组中划分逻辑卷
1.准备物理磁盘
/dev/md0
2.创建物理卷PV 查看物理卷 pvs pvscan pvdisplay [root@xiaoming ~]# yum install -y lvm2 [root@xiaoming ~]# pvcreate /dev/md0 Physical volume "/dev/md0" successfully created. [root@xiaoming ~]# pvs PV VG Fmt Attr PSize PFree /dev/md0 lvm2 --- 9.99g 9.99g /dev/sda2 centos lvm2 a-- <19.00g 0
3.创建卷组 查看卷组 vgs vgscan vgdisplay [root@xiaoming ~]# vgcreate datavg /dev/md0 Volume group "datavg" successfully created [root@xiaoming ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 datavg 1 0 0 wz--n- <9.99g <9.99g
4.创建逻辑卷LV 查看逻辑卷 lvs lvscan lvdisplay [root@xiaoming ~]# lvcreate -L 2G -n lv1 datavg Logical volume "lv1" created. [root@xiaoming ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g lv1 datavg -wi-a----- 2.00g
5.创建文件系统(格式化) mkfs.ext4 /dev/datavg/lv1 mkfs.xfs /dev/datavg/lv2mkfs.xfs lv的写法 /dev/mapper/datavg-lv1 /dev/mapper/lv1 UUID 6.挂载并使用 [root@xiaoming ~]# mkdir /mnt/lv1 [root@xiaoming ~]# mount /dev/datavg/lv1 /mnt/lv1/
数据迁移卷组VG,同一卷组的磁盘才可以进行在线迁移
1.检查当前逻辑卷的使用情况 [root@xiaoming ~]# pvs PV VG Fmt Attr PSize PFree /dev/md0 datavg lvm2 a-- <9.99g <5.99g /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdc datavg lvm2 a-- <5.00g <5.00g 2.pvmove在线数据迁移至其他pv [root@xiaoming ~]# pvmove /dev/md0 /dev/md0: Moved: 5.86% /dev/md0: Moved: 50.00% [root@xiaoming ~]# pvs PV VG Fmt Attr PSize PFree /dev/md0 datavg lvm2 a-- <9.99g <9.99g /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdc datavg lvm2 a-- <5.00g 1020.00m
扩容逻辑卷lv
逻辑卷的扩展,取决于vg卷中剩余多少容量。
[root@xiaoming ~]# lvextend -L +2G /dev/datavg/lv1 Size of logical volume datavg/lv1 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents). Logical volume datavg/lv1 successfully resized. [root@xiaoming ~]# lvextend -l +50%FREE /dev/datavg/lv2 Size of logical volume datavg/lv2 changed from 2.00 GiB (512 extents) to 6.49 GiB (1662 extents). Logical volume datavg/lv2 successfully resized. 注意:必须使用下面的方式,更新扩展之后的lv //xfs扩容 [root@xiaoming ~]# xfs_growfs /dev/datavg/lv1 //ext扩容 [root@xiaoming ~]# resize2fs /dev/datavg/lv2
缩小逻辑卷
1.如果已经挂载,先卸载需要缩容的lv [root@xiaoming ~]# umount /dev/datavg/lv1 2.检测文件系统 //ext检测 [root@xiaoming ~]# fsck /dev/datavg/lv1 fsck,来自 util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/mapper/datavg-lv1: clean, 11/262144 files, 34894/1048576 blocks //xfs检测 [root@xiaoming ~]# xfs_repair /dev/datavg/lv2 注意:必须先卸载lv 3.定义裁剪容量(ext4) [root@xiaoming ~]# resize2fs /dev/datavg/lv2 1G resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/datavg/lv2 Couldn't find valid filesystem superblock. [root@xiaoming ~]# resize2fs /dev/datavg/lv1 1G resize2fs 1.42.9 (28-Dec-2013) Please run 'e2fsck -f /dev/datavg/lv1' first. 注意:如果不成功,根据提示信息输入下面的命令 [root@xiaoming ~]# e2fsck -f /dev/datavg/lv1 [root@xiaoming ~]# resize2fs /dev/datavg/lv1 1G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/datavg/lv1 to 262144 (4k) blocks. The filesystem on /dev/datavg/lv1 is now 262144 blocks long. [root@xiaoming ~]# fsck /dev/datavg/lv1 fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/mapper/datavg-lv1: clean, 11/262144 files, 34894/1048576 blocks //裁剪容量(扩展,慎重) [root@xiaoming ~]# lvreduce -L 1G /dev/datavg/lv1 WARNING: Reducing active logical volume to 1.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce datavg/lv1? [y/n]: y Size of logical volume datavg/lv1 changed from 4.00 GiB (1024 extents) to 1.00 GiB (256 extents). Logical volume datavg/lv1 successfully resized. [root@xiaoming ~]fsck -f /dev/datavg/lv1 fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/datavg-lv1: 11/65536 files (0.0% non-contiguous), 21787/262144 blocks 5.再次检测文件系统 [root@xiaoming ~]# fsck /dev/datavg/lv1 fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/mapper/datavg-lv1: clean, 11/65536 files, 21787/262144 blocks 6.挂载测试 如果能够挂载,一般说明裁剪成功,文件系统没有损坏
删除LV逻辑卷
删除使用lv-vg-pv,保证都没使用
//逻辑卷 [root@xiaoming ~]# umount /dev/datavg/lv1 [root@xiaoming ~]# lvremove /dev/datavg/lv1 Do you really want to remove active logical volume datavg/lv1? [y/n]: y Logical volume "lv1" successfully removed //卷组 [root@xiaoming ~]# vgremove /dev/datavg Do you really want to remove volume group "datavg" containing 1 logical volumes? [y/n]: y Do you really want to remove active logical volume datavg/lv2? [y/n]: y Logical volume "lv2" successfully removed Volume group "datavg" successfully removed //物理卷 [root@xiaoming ~]# pvremove /dev/md0 /dev/sdc Labels on physical volume "/dev/md0" successfully wiped. Labels on physical volume "/dev/sdc" successfully wiped.
总结
RAID *****
企业使用的硬件RAID(raid卡),保障磁盘的可靠性,提高磁盘的性能
LVM ***
针对分区实现动态扩容
pv vg lv
磁盘分区企业应用:数据迁移
常规生产环境分区一个/
问题:/home /var /usr等目录数据增长较快
解决方案:
1、将新加的硬盘(RAID)分区格式化挂载
2、cp(mv) -rpf /home/* 新分区挂载点
3、mount 新分区 /home,写入/etc/fstab
创建 查看 扩展 删除
pv pvcreate pvs pvremove
pvscan
pvdisplay
vg vgcreate vgs vgextend vgremove
vgscan
vgdisplay
lv lvcreate lvs lvextend lvremove
lvscan
lvdisplay