磁盘逻辑卷管理(2016.1.17第四周linux课程笔记)

为什么要使用逻辑卷管理?
逻辑卷:
逻辑卷(LVM):是linux环境下对磁盘管理的一种方式,它是建立在物理存储之上的一个抽象层,最大特点是灵活管理。

特点:
1、动态扩容
2、在线扩容
3、离线裁剪
4、数据条带化
5、数据镜像

基本概念:
物理卷(pv):

物理卷是底层真正提供容量的一个磁盘设备或者是某个分区。【面粉】


卷组(vg):

卷组是建立在物理卷之上的,它是由一个或者多个物理卷组成。【面团】


逻辑卷(lv):

逻辑卷是建立在卷组之上的,是由卷组”切出“空间来给用户使用。【馒头】

物理区域(pe):
每个物理卷加入卷组后,pe大小是固定的。它是寻址的最小单位。默认一个PE的大小是4M.

磁盘逻辑卷管理

实例1:
创建一个大小为1.5g的逻辑卷挂载使用:
1、增加物理设备或者分区

# fdisk /dev/sdb

2、将物理设备或者某个分区做成一个pv
# pvcreate /dev/sdb1 将/dev/sdb1这个分区做成一个物理卷
或者:
# pvcreate /dev/sdb[1-4] /dev/sdc 将多个设备做成物理卷

# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

简单查看物理卷信息:

[root@node1 Desktop]# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda3  vg_clone lvm2 a--  47.80g    0
  /dev/sdb1           lvm2 a--   2.01g 2.01g
# pvdisplay  详细查看

3、创建卷组

# vgcreate vg01 /dev/sdb1  创建一个vg01的卷组,并且将/dev/sdb1物理卷加入到vg01卷组
# vgs
# vgdisplay

4、创建一个大小为1.5g的逻辑卷

# lvcreate -n lv01 -L 1.5g vg01
  Logical volume "lv01" created

 

-n:指定逻辑卷名
-L:指定逻辑卷大小  大小

-l:指定逻辑卷大小 多少个PE或者50%free

# lvcreate -n lv02 -l 50 vg01
  Logical volume "lv02" created

 

[root@node1 Desktop]# lvs
  LV       VG       Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv01     vg01     -wi-a-----   1.50g
  lv02     vg01     -wi-a----- 200.00m
  LogVol01 vg_clone -wi-ao----  33.15g
  vg_home  vg_clone -wi-ao----  14.65g
# lvcreate -n lv03 -l 50%free vg01
  Logical volume "lv03" created
[root@node1 Desktop]# lvs
  LV       VG       Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv01     vg01     -wi-a-----   1.50g
  lv02     vg01     -wi-a----- 200.00m
  lv03     vg01     -wi-a----- 156.00m
  LogVol01 vg_clone -wi-ao----  33.15g
  vg_home  vg_clone -wi-ao----  14.65g  

注意:创建好的逻辑卷会映射到操作系统两个地方

# ll /dev/vg01/lv01
lrwxrwxrwx. 1 root root 7 Jan 17 11:01 /dev/vg01/lv01 -> ../dm-2
[root@node1 Desktop]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx. 1 root root 7 Jan 17 11:01 /dev/mapper/vg01-lv01 -> ../dm-2

5、格式化

mkfs.ext4 /dev/mapper/vg01-lv01

6、挂载使用

mount /dev/vg01/lv01 /u01

实例2:在线扩容逻辑卷(扩容500M)
情况1:需要扩容的逻辑卷所在卷组剩余空间不够
1、扩容卷组

  No physical volume label read from /dev/sdb2
  Physical volume /dev/sdb2 not found
  Physical volume "/dev/sdb2" successfully created
  Volume group "vg01" successfully extended
# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  vg01       2   3   0 wz--n-  4.01g 2.16g

2、扩容逻辑卷

# lvextend -L +500M /dev/mapper/vg01-lv01  扩容逻辑卷
  Extending logical volume lv01 to 1.99 GiB
  Logical volume lv01 successfully resized

# resize2fs /dev/mapper/vg01-lv01  同步文件系统
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg01-lv01 is mounted on /u01; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg01-lv01 to 521216 (4k) blocks.
The filesystem on /dev/mapper/vg01-lv01 is now 521216 blocks long.

情况2:需要扩容的逻辑卷所在卷组剩余空间足够

# lvextend -L +500M /dev/mapper/vg01-lv01  扩容逻辑卷
# resize2fs /dev/mapper/vg01-lv01  同步文件系统
#df -h

实例3:离线裁剪
1、卸载逻辑卷

umount /u01

2、检测文件系统

# fsck -f /dev/mapper/vg01-lv01

3、先裁剪文件系统

# resize2fs /dev/mapper/vg01-lv01 1G

# fsck -f /dev/mapper/vg01-lv01

4、再裁剪逻辑卷

# lvreduce -L 1G /dev/mapper/vg01-lv01

# fsck -f /dev/mapper/vg01-lv01
5、挂载使用
mount /dev/mapper/vg01-lv01 /u01

实例4:逻辑卷相关命令

pvcreate /dev/sdb[1-3] 创建物理卷
vgcreate vg01 /dev/sdb 创建卷组
lvcreate -n lv01 -L/-l 2G/50(pe) vg01 创建逻辑卷
pvs/vgs/lvs  简单查看
pvdipaly/vgdipaly/lvdipaly 详细查看
lvremove /dev/vg01/lv01 删除逻辑卷(该逻辑卷没有被挂载),一旦删除逻辑卷数据就没有了
vgreduce vg01 /dev/sdb1  将物理卷从卷组里移除
vgremove vg01  删除卷组
pvremove /dev/sdb1  删除物理卷

实例5:逻辑卷实现条带化
条带化:把保存在逻辑卷上的数据分成n等分,同时保存到不同的物理设备中,可提高数据的读写速率;如果物理设备有一个损坏,那么数据就会有问题。
创建之前:

# pvs

  PV         VG       Fmt  Attr PSize  PFree
  /dev/sdb1  vg01     lvm2 a–   2.00g 2.00g
  /dev/sdb2  vg01     lvm2 a–   2.00g 2.00g

创建条带化的逻辑卷:

# lvcreate -n lv01 -L 1G vg01 -i 2 /dev/sdb1 /dev/sdb2
  Using default stripesize 64.00 KiB
  Logical volume "lv01" created

-i:条带化

创建后:
# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sdb1  vg01     lvm2 a–   2.00g 1.50g
  /dev/sdb2  vg01     lvm2 a–   2.00g 1.50g

格式化:

# mkfs.ext4 /dev/mapper/vg01-lv01

挂载使用:

# mount /dev/mapper/vg01-lv01 /u01

测试验证:
往/u01目录里写东西
# iostat -d -m /dev/sdb[12] 2

实例6:逻辑卷实现镜像备份
镜像:往逻辑卷上写数据,同时写到不同的物理设备上,并且两个设备上的数据是完全一致的。优点数据备份,缺点占用空间。

创建前:
# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sdb1  vg01     lvm2 a–   2.00g 1.50g
  /dev/sdb2  vg01     lvm2 a–   2.00g 1.50g
  /dev/sdb3  vg02     lvm2 a–   2.00g 2.00g
  /dev/sdb4  vg02     lvm2 a–   2.00g 2.00g
创建一个互为镜像的逻辑卷:
# lvcreate -n lv02 -L 1G -m 1 vg02 /dev/sdb[34]
# lvs
  LV       VG       Attr       LSize  Pool Origin Data%  Move Log       Cpy%Sync Convert
  lv01     vg01     -wi-ao—-  1.00g                                                   
  lv02     vg02     mwi-a-m—  1.00g                         lv02_mlog   100.00  
创建后:
# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sdb1  vg01     lvm2 a–   2.00g 1.50g
  /dev/sdb2  vg01     lvm2 a–   2.00g 1.50g
  /dev/sdb3  vg02     lvm2 a–   2.00g 1.00g
  /dev/sdb4  vg02     lvm2 a–   2.00g 1.00g

格式化:
mkfs -t ext4 /dev/vg02/lv02
挂载使用:
mkdir /u02
mount /dev/vg02/lv02 /u02

测试验证:
模拟破坏验证:
dd if=/dev/zero of=/dev/sdb3 bs=1M count=300

# pvs
  Couldn’t find device with uuid aUyUTK-IbQ5-1emF-irPC-ZQ92-NLEU-c0fkHT.
  PV             VG       Fmt  Attr PSize  PFree
  /dev/sda3      vg_clone lvm2 a–  47.80g    0
  /dev/sdb1      vg01     lvm2 a–   2.00g 1.50g
  /dev/sdb2      vg01     lvm2 a–   2.00g 1.50g
  /dev/sdb3      vg02     lvm2 a–   2.00g 1.00g
  unknown device vg02     lvm2 a-m   2.00g 1.00g

将原来的逻辑卷卸载,重新挂载:

[root@node1 ~]# umount /u02
[root@node1 ~]# mount /dev/vg02/lv02 /u02
mount: wrong fs type, bad option, bad superblock on /dev/mapper/vg02-lv02,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog – try
       dmesg | tail  or so
说明:当物理设备或者数据损坏时会出现这种错误。这个时候互为镜像的逻辑卷已经无法同步,赶紧将损坏的盘撤下来,让正常的盘正常使用。

将已经损坏的物理卷从卷组中移走
# vgreduce –removemissing vg02 –force
# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sdb1  vg01     lvm2 a–   2.00g 1.50g
  /dev/sdb2  vg01     lvm2 a–   2.00g 1.50g
  /dev/sdb3  vg02     lvm2 a–   2.00g 1.00g

再次将逻辑卷挂载继续使用:
mount /dev/vg02/lv02 /u02

后续工作:
将损坏的硬盘修复好再次使用。
pvcreate /dev/sdb4
vgextend vg02 /dev/sdb4
再次让逻辑卷互为镜像:
# lvconvert -m 1 –mirrorlog core /dev/vg02/lv02 /dev/sdb[34]
  vg02/lv02: Converted: 0.8%
  vg02/lv02: Converted: 83.2%
  vg02/lv02: Converted: 100.0%
# lvs
  LV       VG       Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv01     vg01     -wi-ao—-  1.00g                                             
  lv02     vg02     mwi-aom—  1.00g                               100.00        

练习:
1、添加一块新的10g硬盘到你的虚拟机中,并将其分为2个分区(大小自己决定)。如sdb1、sdb2
2、将sdb1做成大小为2G的逻辑卷lv01挂载到操作系统中的/u01目录下,并在/u01目录下创建5个文件file1~file5.
3、假设sdb1分区有坏块,现在需要将sdb1上的数据快速放到sdb2磁盘上,怎么做?
参考:pvmove

4、由于业务需要,/u01目录需要扩大到9G,怎么做?
5、新建一个卷组,名为vg02,PEsize的大小为8M,在该卷组中创建一个名为lv02的逻辑卷,大小为50个PE,格式化成ext3的文件系统,挂载到/u02目录下,需要每次开机自动挂载。
vgcreate -s 8M vg02 /dev/sdb2

扩展:
1、测试验证已有逻辑卷的硬盘,从一台服务器换到另一台服务器上面是否可以正常读取到数据?需要怎么做?
2、测试验证已有互为镜像的逻辑卷的硬盘,从一台服务器换到另一台服务器上面是否可以正常读取到数据?怎么做?

自动挂载

autofs:

实例1:自动挂载本地设备
# service autofs status
automount (pid  19728) is running…

需求:/dev/sdb1 /u01/test
vim /etc/auto.master
/u01    /etc/auto.test   定义子配置文件,以及上一级挂载点
注意:子配置文件必须是以auto.开头

cp /etc/auto.misc /etc/auto.test
vim /etc/auto.test
test             -fstype=ext4       :/dev/sdb1
  |                   |                  |
这个目录可以不存在    文件系统类型        需要自动挂载的设备

需要重启autofs服务
service autofs restart
测试:
cd /u01
ls  什么都没有,正常
cd test  

实例2:网络挂载
将192.168.0.254:/var/ftp/notes  挂载到你本地
vim /etc/auto.master  主配置文件
/u02    /etc/auto.note –timeout=60   
vim /etc/auto.note    子配置文件
ule    -ro,soft,intr  192.168.0.254:/var/ftp/notes

重启服务
service autofs restart

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇