物理存储介质、物理卷、逻辑卷、卷组、快照卷之间的联系
》物理存储介质(PhysicalStorageMedia):指系统的物理存储设备==>磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
》物理卷(Physical Volume,PV):指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
》卷组(Volume Group,VG):是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷。
》逻辑卷(Logical Volume,LV):类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统。
》条带(strip)LVM的条带化:为了性能考虑,将数据跨越多个磁盘存储,即把LV上连续的数据分成大小相同的块,然后依次存储在各个磁盘PV上,类似于RAID0的数据存放形式,实现数据读写的并发;管理员一句自己的数据需求,定义数据分块大小,分布PV磁盘个数信息,从而实现读写性能最佳化。
》可以做这样一个设想来理解以上三者的关系:如果把PV比作地球的一个板块,VG则是一个地球,因为地球是由多个板块组成的,那么在地球上划分一个区域并标记为亚洲,则亚洲就相当于一个LV。
相互联系:在创建卷组时一定要为逻辑卷进行快照预留出空间,而后快照访问逻辑卷的另一个入口,只要把物理卷加到卷组之后,这个物理卷所提供的物理空间事先就被划分好一个个块,而这个块在没格式化之前叫做PE(Physical Extend)
【物理盘区】,是逻辑存储的一个小匣子,卷组的大小是由多个PE组成,而逻辑卷的大小是把卷组中的PE放到逻辑卷中,此时,PE不再叫做PE,而是叫做LE(Logical Extend)
【逻辑盘区】,其实,逻辑卷中的LE也叫做PE,只是站在角度不同而已。
如果某个物理卷损坏后,存储在逻辑卷中的LE也就会损坏,想让数据不损坏,可以把物理卷中PE做成镜像,这样VG创建逻辑卷时,首先是创建物理卷,无论物理卷是磁盘还是块设备。
磁盘分区
磁盘PV物理卷
用lsblk查看磁盘信息
查看物理卷的命令有两个,第一个是 pvscan,用来查询系统中哪些硬盘或分区是物理卷。命令如下:
可以看到,在我们的系统中,/dev/sdb5~7 这三个分区是物理卷。最后一行的意思是:共有7个物理卷[大小]/使用了1 个卷[大小]/空闲6个卷[大小]。
第二个查询命令是 pvdisplay,它可以查看到更详细的物理卷状态,命令如下:
[root@localhost ~]# pvdisplay
"/dev/sdb5" is a new physical volume of "1.01 GiB"
—NEW Physical volume 一
PV Name /dev/sdb5 #PV名
VG Name #属于的VG名,还没有分配,所以空白
PV Size 1.01 GiB #PV 的大小
Allocatable NO #是否已经分配
PE Size 0 #PE大小,因为还没有分配,所以PE大小也没有指定
Total PE 0 #PE总数
Free PE 0 #空闲 PE数
Allocated PE 0 #可分配的PE数
PV UUID CEsVz3-t0sD-e1w0-wkHZ-iaLq-06aV-xtQNTB #PV的UUID
其它两个PV省略…
如图所示:
创建物理卷
pvcreate [参数]
常用参数:
-f | 强制创建物理卷,不需要用户确认 |
-u | 指定设备的UUID |
-y | 所有的问题都回答yes |
参考实例:
创建物理卷:
[root@localhost~]# pvcreate /dev/sdb
创建多个物理卷:
[root@localhost~]# pvcreate /dev/sdc{1,2,3,4}
删除物理卷
如果不再需要物理卷,则使用 pvremove 命令删除,命令如下:
[root@localhost ~]# pvremove /dev/sdb7
Labels on physical volume "/dev/sdb7" successfully wiped
#当然,在我们的使中还要用到/dev/sdb7物理卷,所以实验完成后,记得把它再添加回来
在删除物理卷时,物理卷必须不属于任何卷组,也就是需要先将物理卷从卷组中删除,再删除物理卷。其实所有的删除就是把创建过程反过来,建立时不能少某个步骤,删除时也同样不能跳过某一步直接删除。
VG卷组
建立卷组
建立卷组使用的命令是 vgcreate,具体命令格式如下:
[root@localhost~]# vgcreate [-s PE 大小] 卷组名 物理卷名
[-s PE 大小] 选项的含义是指定 PE 的大小,单位可以是 MB、GB、TB 等。如果不写,则默认 PE 大小是 4MB。这里的卷组名指的就是要创建的卷组的名称,而物理卷名则指的是希望添加到此卷组的所有硬盘区分或者整个硬盘。
Vgcreate命令详解:
常用选项:
-l | 卷组上允许创建的最大逻辑卷数 |
-p | 卷组中允许添加的最大物理卷数 |
-s | 卷组上的物理卷的PE大小 |
参考实例
[root@localhost~]# vgcreate VG1
创建卷组 “VG1” :
[root@localhost~]# vgcreate -l 200 VG1
创建最大逻辑卷数为200的卷组 “VG1” :
[root@localhost~]# vgcreate -p 200 VG1
创建允许添加最大物理卷数为200的卷组“VG1” :
[root@localhost~]# vgcreate VG1 /dev/sdb1 /dev/sdb2
创建卷组 “VG1″,并且将物理卷”/dev/sdb1″和”/dev/sdb2″添加到卷组中:
[root@localhost~]# vgcreate -p 200 VG1 /dev/sdb1
创建卷组“VG1″,并且允许添加不超过200的 物理卷“/dev/sdb1” 到卷组中:
加入卷组
我们有两个物理卷 /dev/sdb1,5把 /dev/sdb1 和 /dev/sdb5 加入VG1卷组,命令如下:
[root@localhost ~]# vgcreate -s 8MB VG1 /dev/sdb1 /dev/sdb5
Volume group "VG1" successfully created
我们把/dev/sdb1和/dev/sdb5两个物理卷加入了卷组VG1,并指定了PE的大小是8MB
激活卷组
卷组创建完毕后,可以通过 vgchange 命令来激活卷组,而无法重启系统。
vgchange 命令的基本格式如下:
#激活卷组
[root@localhost ~]# vgchange -a y 卷组名
#停用卷组
[root@localhost ~]# vachange -a n 卷组名
通过使用 vgchange 命令,我们可以激活 VG1 卷组。
查看卷组
查看卷组的命令同样有两个:vgscan 命令主要用于查看系统中是否有卷组;而 vgdisplay 命令则用于查看卷组的详细状态。命令如下:
[root@1ocalhost ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "VG1" using metadata type lvm2
#scvg卷组确实存在
[root@localhost ~]# vgdisplay
---Volume group ---
VG Name VG1 卷组名
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write #卷组访问状态
VG Status resizable #卷组状态
MAX LV 0 #最大逻辑卷数
Cur LV 0
Open LV 0
Max PV 0 #最大物理卷数
Cur PV 2 #当前物理卷数
Act PV 2
VG Size 3.99 GiB #卷组大小
PE Size 4.00 MiB #PE大小
Total PE 1022 #PE总数
Alloc PE / Size 0/0 #已用 PE 数量/大小
Free PE/ Size 1022 / 3.99GiB #空闲PE数量/大小
VG UUID Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ
删除卷组
删除卷组的命令是 vgremove。命令如下:
[root@localhost ~]# vgremove VG1
Volume group "VG1" successfully removed
只有在删除卷组之后,才能删除物理卷。还要注意的是,VG1卷组中还没有添加任何逻辑卷,如果拥有了逻辑卷,则记得先删除逻再删除卷组。再次强调,删除就是安装的反过程,每一步都不能跳过。
LV逻辑卷
建立逻辑卷
我们现在已经建立了 3GB 大小的卷组 scvg,接下来需要在卷组中建立逻辑卷。命令格式如下:
[root@localhost ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
选项:
-L 容量:指定逻辑卷大小,单位为 MB、GB、TB 等;
-l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦;
-n 逻辑卷名:指定逻辑卷名;
参考实例
在名为VG1的卷组中创建15G大小的逻辑卷:
[root@localhost ~]# lvcreate -L 15G VG1
在名为VG1的卷组中创建大小为2500MB的逻辑卷,并命名为LV1:
[root@localhost ~]# lvcreate -L 2500 -n LV1 VG1
使用卷组剩下的所有空间创建逻辑卷:
[root@localhost ~]# lvcreate -name LV1 -l 100%FREE VG1
删除逻辑卷
lvremove 删除LV逻辑卷
查看逻辑卷
查看命令同样有两个,第一个命令 lvscan 只能看到系统中是否拥有逻辑卷,命令如下:
[root@localhost ~]# lvscan
ACTIVE '/dev/VG1/LV1' [2 GiB] inherit
#能够看到激活的逻辑卷,大小是2GB
调整逻辑卷大小
我们可以使用 lvresize 命令调整逻辑卷的大小,不过我们一般不推荐减少逻辑卷的空间,因为这非常容易导致逻辑卷中的文件系统的数据丟失。所以,除非我们已经备份了逻辑卷中的数据,否则不要减少逻辑卷的空间。
lvresize 命令格式如下:
[root@localhost ~]# lvresize [选项] 逻辑卷的设备文件名
选项:
-L 容量:安装容量调整大小,单位为 KB、GB、TB 等。使用 + 増加空间,- 代表减少空间。如果直接写容量,则代表设定逻辑卷大小为指定大小;
-l 个数:按照 PE 个数调整逻辑卷大小;
格式化新建的逻辑卷
[root@localhost ~]# mkfs.ext3 /dev/VG1/LV1
mkfs.ext3 #设置ext3文件系统
挂载使用
设置开机自动挂载
开机自动挂载配置文件/etc/fstab
设备文件 挂载点 文件类型 挂载参数 备份标记 检测顺序
逻辑卷在线扩容
分为两种情况:
第一种情况,需要扩展的pe数量,vg可以提供
resize2fs /dev/vgtest/lvtest #更新文件系统的大小,即激活
resize2fs -f /dev/vgtest/lvtest 500M #强制设置大小
dump2fs /dev/vgtest/lvtest #查看ext系列文件系统
第二种情况;
VG空间不够,需先扩展VG,扩展VG就是往VG中加PV
新建PV, 进行扩容,再查看
创建条带卷
# lvcreate -L 2G -i 2 -I 64 -n stripe1 VG1
-i 指定跨PV的个数为2
-I 指定条带单元的大小,对应于I/O中数据单元块的大小;数值必须为2的幂,单位KB 单个条带的大小
-n 制定卷的名称
-L 卷的大小
hdparm命令–显示与设定硬盘参数
常用参数:
-a | 设定读取文件时,预先存入块区的分区数 |
-f | 将内存缓冲区的数据写入硬盘,并清空缓冲区 |
-g | 显示硬盘的磁轨,磁头,磁区等参数 |
-I | 直接读取硬盘所提供的硬件规格信息 |
-X | 设定硬盘的传输模式 |
参考实例
显示硬盘的相关设置:
[root@localhost ~]# hdparm /dev/sda
/dev/sda:
IO_support = 0 (default 16-bit)
readonly = 0 (off)
readahead = 256 (on)
geometry = 19929[柱面数]/255[磁头数]/63[扇区数], sectors = 320173056[总扇区数], start = 0[起始扇区数]
显示硬盘的柱面、磁头、扇区数:
[root@localhost ~]# hdparm -g /dev/sda
评估硬盘的读取效率:
[root@localhost ~]# hdparm -t /dev/sda
直接读取硬盘所提供的硬件规格信息:
[root@localhost ~]# hdparm -X /dev/sda
使IDE硬盘进入睡眠模式:
[root@localhost ~]# hdparm -Y /dev/sda
磁盘冗余阵列 RAID
一、RAID5 (3块硬盘) + 热备(1块硬盘)
1. 准备4块硬盘
[root@maiya ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 48 Jan 13 16:07 /dev/sdd
brw-rw---- 1 root disk 8, 64 Jan 13 16:07 /dev/sde
brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdf
brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdg
2. 创建RAID
[root@maiya ~]# yum -y install mdadm //确保mdadm命令可用
[root@maiya ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{d,e,f,g}
mdadm: array /dev/md0 started.
-C #创建RAID
/dev/md0 #第一个RAID设备
-l5 #RAID5
-n #RAID成员的数量
-x #热备磁盘的数量
3. 格式化,挂载
[root@maiya ~]# mkfs.xfs /dev/md0
[root@maiya ~]# mkdir /mnt/raid5
[root@maiya ~]# mount /dev/md0 /mnt/raid5
[root@maiya ~]# cp -rf /etc /mnt/raid5/etc1