lvm

lvm优缺点

优点

比起传统的硬盘分区管理方式,LVM更富于灵活性:

1.将多块硬盘看作一块大硬盘

2.使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。

3.可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小。

4.在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。

5.可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。不过LVM上的文件系统也需要重新调整大小,好在某些文件系统(例如ext4)也支持在线操作。

6.无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。

7.允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。

8.支持各种设备映射目标(device-mapper targets),包括透明文件系统加密和缓存常用数据(caching of frequently used data)。这将允许你创建一个包含一个或多个磁盘、并用LUKS加密的系统,使用LVM on top 可轻松地管理和调整这些独立的加密卷 (例如. /, /home, /backup等) 并免去开机时多次输入密钥的麻烦。

缺点

1.在系统设置时需要更复杂的额外步骤。

2.Windows系统并不支持LVM,若使用双系统,你将无法在Windows上访问LVM分区。

图解lvm工作流程

null

流程解释

普通磁盘
↓
格式化文件系统、block=4KB ,有N个block
↓
挂载分区使用


lvm磁盘
↓
磁盘、格式化为PV(磁盘的容量被分为N个PE) ,PE默认单位是4MB,等于1024个block
↓
PV加入卷组VG(动态伸缩的大磁盘)
↓
创建逻辑卷LV(等于创建了分区)
↓
格式化文件系统xfs (sdb sdc sdd),逻辑卷
↓
挂载使用

lvm常用命令

pv命令

前提是需要安装lvm命令
yum install lvm2 -y
安装该工具后,方可使用lvm的命令

创建pv
pvcreate /dev/sdb /dev/sdc
  Device /dev/sdb excluded by a filter.
  Physical volume "/dev/sdc" successfully created.

查看pv
pvs
  PV         VG Fmt  Attr PSize  PFree
  /dev/sdb      lvm2 ---  20.00g 20.00g
  /dev/sdc      lvm2 ---  20.00g 20.00g

pvscan
  PV /dev/sdb                      lvm2 [20.00 GiB]
  PV /dev/sdc                      lvm2 [20.00 GiB]
  Total: 2 [40.00 GiB] / in use: 0 [0   ] / in no VG: 2 [40.00 GiB]

pvdisplay
  "/dev/sdb" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               2TNNkN-nrwY-4B1o-Riz9-JeXV-ec75-vdSU35

  "/dev/sdc" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               8XqTIn-1KNA-dFcS-0rYj-XnBx-Z7Dr-AQfLN6 

删除pv
pvremove /dev/sdb /dev/sdc
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.

vg命令

第一件事 pv化
pvcreate  /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.


创建(加入)卷组
vgcreate vg-02241  /dev/sdb /dev/sdc
  Volume group "vg-0224" successfully created

查看卷组
vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  vg-02241   2   0   0 wz--n- 39.99g 39.99g

vgscan
  Reading volume groups from cache.
  Found volume group "vg-02241" using metadata type lvm2

vgdisplay
  --- Volume group ---
  VG Name               vg-02241
  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               39.99 GiB
  PE Size               4.00 MiB
  Total PE              10238
  Alloc PE / Size       0 / 0
  Free  PE / Size       10238 / 39.99 GiB
  VG UUID               5q13EV-p02d-m2iM-FrLS-s6kN-StJo-St0eJ0


扩容
vgextend vg1-0224  /dev/sdd
  Volume group "vg1-0224" successfully extended


删除vg
vgremove vg-0224
  Volume group "vg-0224" successfully removed

lv命令

创建lv
lvcreate 
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(PE个数)
-n 后面跟逻辑卷名 
-s 创建快照
创建lv,设定为卷组容量的一半
lvcreate -n 0224lv1 -l 50%VG vg-02241
  Logical volume "0224lv1" created.
指定逻辑卷大小
lvcreate -n lv1-0224 -L 10G vg-02241
  Logical volume "lv1-0224" created.

查看逻辑卷信息
lvs
  LV       VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  0224lv1  vg-02241 -wi-a----- <20.00g
  lv1-0224 vg-02241 -wi-a-----  10.00g

扩容
给lv2增加10G
lvextend -L +10G  /dev/vg1-0224/lv2
调整到25G大小
lvextend -L 25G /dev/vg1-0224/lv2
虽然你调整了 lv2逻辑卷的大小,但是文件系统它不知道,你得告诉文件系统,也跟着调整分区的容量,以及重新设置block的数量
ext4文件系统,使用resize2fs命令
xfs文件系统,使用xfs_growfs调整大小


删除逻辑卷
lvremove    /dev/vg-02241/lv1-0224
Do you really want to remove active logical volume vg-02241/lv1-0224? [y/n]: Y
  Logical volume "lv1-0224" successfully removed

lvm创建实战

1.安装lvm
yum install lvm2 -y

2.查看pv
pvs

3.创建pv
pvcreate /dev/sdb /dev/sdc

4.查看创建后的pv
pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   40.00g 40.00g
  /dev/sdc          lvm2 ---   20.00g 20.00g

5.查看vg
vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 

6.创建vg sdb sdc创建为卷组,名字是 vg1-0224
注意语法
vgcreate vg1-0224  /dev/sdb /dev/sdc
  Volume group "vg1-0224" successfully created

7.查看创建后的vg
vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  vg1-0224   2   0   0 wz--n-  59.99g 59.99g

8.查看lv
lvs


9.创建lv(创建分区)
一个lv1  20G
lv2  15G 

lvcreate -n lv1  -L 20G  vg1-0224
  Logical volume "lv1" created.
lvcreate -n lv2  -L 10G  vg1-0224
  Logical volume "lv2" created.
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  vg1-0224 -wi-a-----  20.00g                                                    
  lv2  vg1-0224 -wi-a-----  10.00g                                                    
ls /dev/vg1-0224/
lv1  lv2

10.查看磁盘设备信息
通过如下命令,查看lvm设备的信息
blkid |grep 'sd[bc]'
/dev/sdb: UUID="O5ueJC-Tbd2-qab2-kx6U-Z2dD-y4od-tjosy3" TYPE="LVM2_member" 
/dev/sdc: UUID="uygL2d-owAr-NCoC-j6Ml-dHrT-QbSh-DjABxZ" TYPE="LVM2_member" 

查看/dev/卷组/
ls /dev/vg1-0224/

11.给lv格式化文件系统
lv1  20G ---xfs
lv2  15G  ----ext4
mkfs.xfs /dev/vg1-0224/lv1
mkfs.ext4 /dev/vg1-0224/lv2


12.挂载lv
mount 设备名   挂载点
mount /dev/vg1-0224/lv1 /t1
mount /dev/vg1-0224/lv2 /t2

13.查看挂载
mount -l |grep t1
/dev/mapper/vg1--0224-lv1 on /t1 type xfs (rw,relatime,attr2,inode64,noquota)
mount -l |grep t2
/dev/mapper/vg1--0224-lv2 on /t2 type ext4 (rw,relatime,data=ordered)

df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/centos-root     17G  1.5G   16G   9% /
devtmpfs                   899M     0  899M   0% /dev
tmpfs                      911M     0  911M   0% /dev/shm
tmpfs                      911M  9.6M  902M   2% /run
tmpfs                      911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                 1014M  142M  873M  14% /boot
tmpfs                      183M     0  183M   0% /run/user/0
/dev/mapper/vg1--0224-lv1   20G   33M   20G   1% /t1
/dev/mapper/vg1--0224-lv2  9.8G   37M  9.2G   1% /t2

lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   40G  0 disk 
├─vg1--0224-lv1 253:2    0   20G  0 lvm  /t1
└─vg1--0224-lv2 253:3    0   10G  0 lvm  /t2
sdc               8:32   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  

14.开机自动挂载
一定切记,如果你的设备发生了变化,一定要去修改/etc/fstab
否则系统开机,读取该fstab文件,找不到设备,无法正确挂载就会报错
进入紧急模式,直到你再次修复fstab文件
重启即可
把t1 t2设置为开机自动挂载
tail -2 /etc/fstab 
UUID="04fda700-511c-43d4-ae9a-d87d72ee7175"  /t1  xfs  defaults 0 0 
/dev/mapper/vg1--0224-lv2 /t2  ext4  defaults 0 0

lvm扩容

先查看当前机器的lv情况,确定你要扩容的设备
df -h |grep t2
/dev/mapper/vg1--0224-lv2  9.8G   37M  9.2G   1% /t2

扩容到20G需求
1. 你的卷组,容量还够不够
2. 卷组容量不够,加新硬盘,再次pv化,加入卷组就好了

方案1,卷组容量够

1.确认vg够不够
vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  vg1-0224   2   2   0 wz--n-  59.99g 29.99g


2.确认够用,直接lvextend扩容lv逻辑卷即可
给lv2增加10G
lvextend -L +10G  /dev/vg1-0224/lv2
  Size of logical volume vg1-0224/lv2 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
  Logical volume vg1-0224/lv2 successfully resized.

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  vg1-0224 -wi-ao----  20.00g                                                    
  lv2  vg1-0224 -wi-ao----  20.00g      

用法2,直接,调整到25G大小
lvextend -L 25G /dev/vg1-0224/lv2
  Size of logical volume vg1-0224/lv2 changed from 20.00 GiB (5120 extents) to 25.00 GiB (6400 extents).
  Logical volume vg1-0224/lv2 successfully resized.

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  vg1-0224 -wi-ao----  20.00g                                                    
  lv2  vg1-0224 -wi-ao----  25.00g      

3.虽然你调整了 lv2逻辑卷的大小,但是文件系统它不知道,你得告诉文件系统,也跟着调整分区的容量,以及重新设置block的数量
ext4文件系统,使用resize2fs命令
xfs文件系统,使用xfs_growfs调整大小

4.调整lv ext4文件系统的大小
resize2fs /dev/mapper/vg1--0224-lv2
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1--0224-lv2 is mounted on /t2; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/mapper/vg1--0224-lv2 is now 6553600 blocks long.



df -hT
Filesystem                Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   xfs        17G  1.6G   16G   9% /
devtmpfs                  devtmpfs  899M     0  899M   0% /dev
tmpfs                     tmpfs     911M     0  911M   0% /dev/shm
tmpfs                     tmpfs     911M  9.6M  902M   2% /run
tmpfs                     tmpfs     911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                 xfs      1014M  142M  873M  14% /boot
/dev/mapper/vg1--0224-lv1 xfs        20G   33M   20G   1% /t1
/dev/mapper/vg1--0224-lv2 ext4       25G   44M   24G   1% /t2
tmpfs                     tmpfs     183M     0  183M   0% /run/user/0



5.调整lv1的文件系统,调整到50G
看看卷组还剩下多少,不够用了,就得扩大卷组了
vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  vg1-0224   2   2   0 wz--n-  59.99g 14.99g

情况2,卷组容量不够了

1.创建新物理卷,pv
步骤
关机、添加硬盘,开机
添加一个50G硬盘
ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc  /dev/sdd

给硬盘pv化
pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created.

2.查看pv
pvs


3.查看vg
vgs

pvs
  PV         VG       Fmt  Attr PSize   PFree 
  /dev/sda2  centos   lvm2 a--  <19.00g     0 
  /dev/sdb   vg1-0224 lvm2 a--  <40.00g     0 
  /dev/sdc   vg1-0224 lvm2 a--  <20.00g 14.99g
  /dev/sdd            lvm2 ---   50.00g 50.00g

vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  vg1-0224   2   2   0 wz--n-  59.99g 14.99g


4.vg扩容
vgextend vg1-0224  /dev/sdd
  Volume group "vg1-0224" successfully extended

vgs
  VG       #PV #LV #SN Attr   VSize    VFree  
  centos     1   2   0 wz--n-  <19.00g      0 
  vg1-0224   3   2   0 wz--n- <109.99g <64.99g


5.再次查看vg
vgs
  VG       #PV #LV #SN Attr   VSize    VFree  
  centos     1   2   0 wz--n-  <19.00g      0 
  vg1-0224   3   2   0 wz--n- <109.99g <64.99g


6.扩容lv
lvextend -L 50G /dev/vg1-0224/lv1
  Size of logical volume vg1-0224/lv1 changed from 20.00 GiB (5120 extents) to 50.00 GiB (12800 extents).
  Logical volume vg1-0224/lv1 successfully resized.


7.再次查看lv
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  vg1-0224 -wi-ao----  50.00g                                                    
  lv2  vg1-0224 -wi-ao----  25.00g                                                    



8.调整xfs文件系统
xfs_growfs /t1
meta-data=/dev/mapper/vg1--0224-lv1 isize=512    agcount=4, agsize=1310720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=5242880, 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 5242880 to 13107200

9.查看磁盘挂载容量情况
df -hT
Filesystem                Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   xfs        17G  1.6G   16G   9% /
devtmpfs                  devtmpfs  899M     0  899M   0% /dev
tmpfs                     tmpfs     911M     0  911M   0% /dev/shm
tmpfs                     tmpfs     911M  9.6M  902M   2% /run
tmpfs                     tmpfs     911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                 xfs      1014M  142M  873M  14% /boot
/dev/mapper/vg1--0224-lv1 xfs        50G   33M   50G   1% /t1
/dev/mapper/vg1--0224-lv2 ext4       25G   44M   24G   1% /t2
tmpfs                     tmpfs     183M     0  183M   0% /run/user/0

删除lvm

1./etc/fstab,清除开机自动挂载的配置

2.取消挂载
umount /t1
umount /t2

3.依次删除lvm的组件
lvremove /dev/vg1-0224/lv1
Do you really want to remove active logical volume vg1-0224/lv1? [y/n]: y
  Logical volume "lv1" successfully removed

lvremove /dev/vg1-0224/lv2
Do you really want to remove active logical volume vg1-0224/lv2? [y/n]: y
  Logical volume "lv2" successfully removed


4. 删除vg
vgremove vg1-0224
  Volume group "vg1-0224" successfully removed


vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 


5. 删除pv,还原磁盘原本类型
pvremove /dev/sdb /dev/sdc /dev/sdd
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.
  Labels on physical volume "/dev/sdd" successfully wiped.



6. 最后,磁盘就还原为了不可动态调整的磁盘了,你可以格式化后,挂载使用该设备
mount /dev/sdd /t1

df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        17G  1.6G   16G   9% /
devtmpfs                devtmpfs  899M     0  899M   0% /dev
tmpfs                   tmpfs     911M     0  911M   0% /dev/shm
tmpfs                   tmpfs     911M  9.6M  902M   2% /run
tmpfs                   tmpfs     911M     0  911M   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  142M  873M  14% /boot
tmpfs                   tmpfs     183M     0  183M   0% /run/user/0
/dev/sdd                xfs        50G   33M   50G   1% /t1

raid

RAID 0

RAID0 俗称“条带”,它将两个或者多个硬盘组成一个逻辑硬盘,容量是所有硬盘之和。 Raid0最低需要两块硬盘,它把数据分散到每块硬盘上进行存储,所以raid0拥有所有 raid种类中最强的存储性能。 而raid0的总可用空间容量就是硬盘数量乘以最低容量硬盘的容量,连续读写性能就是单盘的倍数。

null

特点:数据条带化,无校验,不提供数据保护; 数据并发写入多个硬盘。

优点:RAID读写性能最高,100%的磁盘空间利用率。

缺点:此方式硬盘数据没有冗余,没有容错,一旦一个物理硬盘损坏,则所有数据均丢失。

适用:RAID0 适合于对数据量大,但安全性要求不高的场景,比如音像、视频文件的存储等。

RAID 1

RAID1俗称“镜像”,它最少由两个硬盘组成,而且两个硬盘上存储的数据均相同,以实现数据冗余。 容错性是所有组合中方式里最好的,只要有一块硬盘正常,则能继续保持正常工作。 但它对磁盘利用率只有50%。 RAID1只支持两块硬盘组RAID阵列,而实际容量只有最小的那块硬盘的容量,原因是RAID1只提高了数据的安全性。 但是RAID1不等于数据备份。

null

特点:数据镜像,无校验(检查)。 一半的空间存储冗余数据,但是在所有的RAID中数据安全性 最高。

优点:所有的RAID中安全性能最高,即使一块磁盘发生故障,仍能正常运转。 镜像磁盘没有完全 故障,数据就不会丢失。

缺点:一半的磁盘空间用于存储冗余数据,磁盘空间利用率50%

适用:数据安全性要求比较高的场景,如邮件系统,数据库等。

RAID 5

RAID5采用硬盘分割的技术,最少需要三块硬盘才可以组建RAID5阵列,它没有数据冗余,而是把数据奇偶校验的方式存储到每块硬盘上,它将数据分散储存在阵列的每个磁盘,并且还伴有一个数据校验位,数据位与校验位通过算法能相互验证,当丢失其中的一位时,RAID控制器能通过算法,利用其它两位数据将丢失的数据进行计算还原。 因而RAID5最多只允许一个硬盘损坏,有容错性。

null

特点:数据条带化,校验数据均匀分布在每个物理磁盘上。 当某个物理磁盘发生故障十五,可根 据同一条带的其他数据块和对应的校验数据来重建损坏的数据。

优点:允许1个物理磁盘发生故障,而不丢失数据。 读取性能相对较高,磁盘空间利用率大于 RAID1+0。

缺点:写入性能相对低。 重建数据时,性能会受到较大的影响。

适用:RAID5可理解为RAID0和RAID1折中方案,兼顾储存性能,数据安全和存储成本等因素。

RAID 10

RAID10是先将数据进行镜像操作,然后再对数据进行分组。 RAID 1 在这里就是一个冗余的 备份阵列,而 RAID 0 则负责数据的读写阵列。 至少要四块盘,两块做 raid0,另两块 做 raid1,RAID 10 对存储容量的利用率和 RAID 1 一样低,只有 50%.。 Raid1+0 方 案造成了 50%的磁盘浪费,但是它提供了 200%的速度和单磁盘损坏的数据安全性, 并且当同时损坏的磁盘不在同一 Raid1 中,就能保证数据安全性。

null

特点:RAID1与RAID0的结合,先创建RAID1,再创建RAID0

优点:读取性能仅次于RAID0。 镜像中的磁盘没有全部故障,数据就不会丢失。 一半的物理磁盘 发生故障时,仍可以运转。

缺点:成本高。 磁盘利用率50%,一半的空间用于冗余数据。

适用:适用于读写性能要求高,数据安全大于磁盘成本的场景。 如银行、数据库等。

results matching ""

    No results matching ""