资讯详情

8. LVM逻辑卷

对于普通分区,扩展度不高。一旦分区格式化完成,就很难灵活增加 或者减少分区的大小。可以用来解决这个问题。LVM(逻辑卷)。基本 过程是把物理磁盘或者分区初始化称为物理卷(PV),然后把PV加入 VG(卷组),最后在VG逻辑分区上划分(LVM),LVM可视为普通 格式化和挂载分区。 LVM: 可动态调整分区大小。 PV:(physical volume)物理卷 VG:(volume Group)卷组 LV:(logical volume)逻辑卷 实验: 环境准备 1.使用4个分区,每个分区的容量为1GB,且system ID 为8e. 2.整合所有分区成为一个 VG,VG 名称设置为 vgbdqn;且 PE 的 大小为 16MB; 创建一个名字 lvyjs 的 LV,容量大约 2G 4、最终这个 LV 格式化为 xfs 文件系统,挂载在 /bdqn/yjs 中 准备:查看所需物理卷的要求,创建相应的分区。 1、创建PV pvcreate :将实体 partition 创建成为 PV ; pvscan :在目前的系统中搜索任何系统 PV 的磁盘; pvdisplay :显示当前系统上的显示 PV 状态; pvremove :将 PV 移除属性,让这个 partition 不具有 PV 属性 //直接就是pvcreate分区可以转化为PV,注意本指令的大括号和..用 途。 [root@localhost ~]# fdisk /dev/sdb Device Boot Start End Blocks Id System /dev/sdb1 2048 4196351 2097152 83 Linux /dev/sdb2 4196352 41943039 18873344 5 Extended /dev/sdb5 4198400 6295551 1048576 8e Linux LVM /dev/sdb6 6297600 8394751 1048576 8e Linux LVM /dev/sdb7 8396800 10493951 1048576 8e Linux LVM /dev/sdb8 10496000 12593151 1048576 8e Linux LVM /dev/sdb9 12595200 14692351 1048576 8e Linux LVM [root@localhost ~]# partprobe [root@localhost ~]# partprobe /dev/sdb [root@localhost ~]# pvcreate /dev/sdb{5..8} Physical volume "/dev/sdb5" successfully created. Physical volume "/dev/sdb6" successfully created. Physical volume "/dev/sdb7" successfully created. Physical volume "/dev/sdb8" successfully created. 分别显示每一个 PV 所有信息和系统 PV 信息。尤其是最后一行, 显示的是: 整体 PV 的量 / 已使用 VG 的 PV 量 / 剩余的 PV 量 2、创建VG vgcreate :创建 VG 的 vgscan :上面是否有搜索系统 VG 存在? vgdisplay :显示当前系统 VG 状态; vgextend :在 VG 额外的内部增加 PV ; vgreduce :在 VG 内移除 PV; [root@localhost ~]# pvscan PV /dev/sda2 VG cl lvm2 [19.00 GiB / 0 free] PV /dev/sdb7 lvm2 [1.00 GiB] PV /dev/sdb5 lvm2 [1.00 GiB] PV /dev/sdb8 lvm2 [1.00 GiB] PV /dev/sdb6 lvm2 [1.00 GiB] Total: 5 [23.00 GiB] / in use: 1 [19.00 GiB] / in no VG: 4 [4.00 GiB] [root@localhost ~]# pvdisplay /dev/sdb5 "/dev/sdb5" is a new physical volume of "1.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb5 ##实际的 partition 设备名称 VG Name ##所在VG组,还没有 分配 PV Size 1.00 GiB ###容量大小 Allocatable NO ##是否分配 PE Size 0 ##PE大小 Total PE 0 ##PE数量 Free PE 0 ##没被LV用到的PE Allocated PE 0 ##还可以分配PE PV UUID 7tG5Mp-eK7X-GANz-Q9cF-Pjsd-rARzYuPy50 vgchange :设置 VG 是否启动 (active); vgremove :删除一个 VG //VG创建格式 vgcreate [-s N[mgt]] VG名称 PV名称 选项及参数: -s :后面接 PE 的大小 (size) ,单位可以是 m, g, t (大小写均 可) 与 PV 不同的是, VG 名字是自定的!我们知道 PV 的名称其实就是 partition 设备文件名, 但是这个 VG 名字可以自己取 //将新创建的四个PV中3个PV创建成一个VG,并且指定PE为16MB. ////你可以在这里看到刚刚创建的东西PV /dev/sdb8尚未使用。 [root@localhost ~]# vgcreate -s 16M vgbdqn /dev/sdb{5..7} Volume group "vgbdqn" successfully created [root@localhost ~]# vgscan Reading volume groups from cache. Found volume group "vgbdqn" using metadata type lvm2 Found volume group "cl" using metadata type lvm2 [root@localhost ~]# pvscan PV /dev/sdb5 VG vgbdqn lvm2 [1008.00 MiB / 1008.00 MiB free] PV /dev/sdb6 VG vgbdqn lvm2 [1008.00 MiB / 1008.00 MiB free] PV /dev/sdb7 VG vgbdqn lvm2 [1008.00 MiB / 1008.00 MiB free] PV /dev/sda2 VG cl lvm2 [19.00 GiB / 0 free] PV /dev/sdb8 lvm2 [1.00 GiB] [root@localhost ~]# vgdisplay vgbdqn --- Volume group --- VG Name vgbdqn System ID Format lvm2 Metadata Areas 3 //我们刚才说过,我们要做四个PV所以在这里,我们将不再使用它 的/dev/sdb8添加进去。 3、创建LV lvcreate :创建 LV lvscan :以上查询系统 LV ; lvdisplay :显示系统上方 LV 状态 lvextend :在 LV 增加容量! lvreduce :在 LV 减少内部容量; lvremove :删除一个 LV ! lvresize :对 LV 调整容量大小! //创建LV格式 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 3 Act PV 3 VG Size 2.95 GiB ###整个VG容量 PE Size 16.00 MiB ####内部每一个PE大 小 Total PE 189 ###总共PE数量 Alloc PE / Size 0 / 0 Free PE / Size 189 / 2.95 GiB #####配置给LV的PE数 量/总容量 VG UUID tWk6OC-Y1Xs-LmkX-SepL-9SdV-pLLugqwiys [root@localhost ~]# vgextend vgbdqn /dev/sdb8 Volume group "vgbdqn" successfully extended lvcreate [-L N[mgt]] [-n LV名称] VG名称 lvcreate [-l N] [-n LV名称] VG名称 选项及参数: -L :接收容量后,容量单位可以 M,G,T 等等,最重要的是要注意 小单位为 PE, 所以这个数量必须是 PE 如果倍数不一致,系统会自行计算最多 容量相似。 -l :后面可以接 PE 数量,而不是数量。如果你想这样做,你必须自己做 行计算 PE 数。 -n :后面是 LV 的名称 ///因为本实验中的每个实验 PE 为 16M ,如果要用 PE 如果处理数量,则使用 下面的指令也是 可以! 4、格式化 //格式化LV,这里注意一点,LV平成必须使用全名。dev/vg/lv [root@localhost ~]# lvcreate -L 2G -n lvbdqn vgbdqn Logical volume "lvbdqn" created. [root@localhost ~]# lvscan ACTIVE '/dev/vgbdqn/lvbdqn' [2.00 GiB] inherit ACTIVE '/devcl/swap' [2.00 GiB] inherit ACTIVE '/dev/cl/root' [17.00 GiB] inherit [root@localhost ~]# lvdisplay 5、挂载 [root@localhost ~]# mkfs.xfs /dev/vgbdqn/lvbdqn meta-data=/dev/vgbdqn/lvbdqn isize=512 agcount=4, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=524288, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@localhost ~]# mkdir /bdqn/yjs -p [root@localhost ~]# mount /dev/vgbdqn/lvbdqn /bdqn/yjs [root@localhost ~]# df -Th /bdqn/yjs Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vgbdqn-lvbdqn xfs 2.0G 33M 2.0G 2% /bdqn/yjs [root@localhost ~]# vim /etc/fstab /dev/vgbdqn/lvbdqn /bdqn/yjs xfs defaults 0 0 [root@localhost ~]# mount -a LVM扩展 XFS格式的扩容 LVM最大的特点就是弹性调整磁盘容量大小,那么我们就来先分析一下, 如果我们要扩展LV的容量的话,需要怎么做。 首先,如果VG空间还足够的话,直接LVextend就可以了,我们暂且不说, 我们要考虑的是,如果VG空间不够的话,我们应该怎么做。我们都知道,VG 那是用物理卷来组成的,也就是说,想要扩展你的VG容量,前提就是有足 够的物理卷,物理卷我们这里是虚拟机,直接添加,那么到公司以后就是 购买了,当物理磁盘添加成功之后,就是转化成PV,然后那,用VGextend 把创建好的PV加进来。 那么VG空间足够,想要扩展LV,直接就是LVextend,然后lvresize直接添加 还有一种那是关于文件系统的增大与缩小,比如说ext2,3,4这个家族,还有 xfs,那么这里不是重点,而且一般也不会去改,大家就是知道一下就行 了。 那么接上面的实验,我们想要把刚才的LV /dev/vgbdqn/lvbdqn 挂载目录 是 /bdqn/yjs空间增加500M,应该怎么做那? //首先我们要考虑VG空间是否够用。 //确定了VG空间够用,那么我们直接来扩展。 [root@localhost ~]# vgdisplay vgbdqn --- Volume group --- VG Name vgbdqn ...... Alloc PE / Size 128 / 2.00 GiB Free PE / Size 124 / 1.94 GiB VG UUID tWk6OC-Y1Xs-LmkX-SepL-9SdV-pLLugqwiys //注意的是大写的L 后面直接跟容量大小,也可以用小l后面跟PE的倍数。 //LV是扩大了,但我们再看,挂载目录下文件系统的容量并没有增加,那么 我们需要一条命令,让系统重新加载一下文件系统的大小。 [root@localhost ~]# lvresize -L +500M /dev/vgbdqn/lvbdqn Rounding size to boundary between physical extents: 512.00 MiB. Size of logical volume vgbdqn/lvbdqn changed from 2.00 GiB (128 extents) to 2.50 GiB (160 extents). Logical volume vgbdqn/lvbdqn successfully resized. [root@localhost ~]# lvscan ACTIVE '/dev/vgbdqn/lvbdqn' [2.50 GiB] inherit [root@localhost ~]# df -hT /bdqn/yjs Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vgbdqn-lvbdqn xfs 2.0G 33M 2.0G 2% /bdqn/yjs [root@localhost ~]# xfs_info /bdqn/yjs meta-data=/dev/mapper/vgbdqn-lvbdqn isize=512 agcount=4, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=524288, 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 [root@localhost ~]# xfs_growfs /bdqn/yjs meta-data=/dev/mapper/vgbdqn-lvbdqn isize=512 agcount=4, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=524288, 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 524288 to 655360 [root@localhost ~]# xfs_info /bdqn/yjs meta-data=/dev/mapper/vgbdqn-lvbdqn isize=512 agcount=5, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=655360, 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 [root@localhost ~]# df -hT /bdqn/yjs Filesystem Type Size Used Avail Use% Mounted on 在上表中,注意看两次 xfs_info 的结果,你会发现到 1)整个 block group (agcount) 的数量增加一个!那个 blockgroup 就是纪录新的设备容量之 文件系统所在! 而你也会 2)发现整体的 block 数量增加了!这样整个文 件系统就给他放大了!同时,使用 df 去查阅时,就真的看到增加的量了! 最后,请注意!目前的 XFS 文件系统中,并没有缩小文件系统容量的设 计!也就是说,文件系统只能放大不能缩小喔!如果你想要保有放大、缩 小的本事, 那还请回去使用 EXT 家族最新的 EXT4 文件系统啰!XFS 目前 是办不到的! 好的,到这里你们先做一下练习,文件系统格式先用xfs的,然后练习一下 扩容,做一个PV,一个VG,然后做成LV,待会我找同学来做一下。 ext4格式的扩容 /dev/mapper/vgbdqn-lvbdqn xfs 2.5G 33M 2.5G 2% /bdqn/yjs [root@localhost ~]# partprobe /dev/sdb [root@localhost ~]# pvcreate /dev/sdb9 [root@localhost ~]# vgcreate testvg /dev/sdb9 [root@localhost ~]# lvcreate -L 500M -n testlv testvg [root@localhost ~]# mkfs.xfs /dev/testvg/testlv [root@localhost ~]# mkdir /TestLvm [root@localhost ~]# mount /dev/testvg/testlv /TestLvm [root@localhost ~]# lvextend -L +200M /dev/testlv/testvg [root@localhost ~]# lvscan [root@localhost ~]# df -hT /TestLvm [root@localhost ~]# xfs_growfs /TestLvm [root@localhost ~]# df -hT /TestLvm PS: 从上边步骤中发现,ext4格式和xfs格式一样,如果LV扩容之后,挂载 的目录仍没办法直接识别到新的空间大小,在ext4格式扩容之后,磁盘中 源存储的文件不受影响。 [root@base ~]# mkfs.ext4 /dev/testvg/testlv [root@base ~]# mount /dev/testvg/testlv /mnt/lvtest/ [root@base ~]# df -h /mnt/lvtest/ -T Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/testvg-testlv ext4 8.3G 37M 7.8G 1% /mnt/lvtest [root@base ~]# lvresize -L +500M /dev/testvg/testlv Rounding size to boundary between physical extents: 512.00 MiB. Size of logical volume testvg/testlv changed from 8.50 GiB (544 extents) to 9.00 GiB (576 extents). Logical volume testvg/testlv successfully resized. [root@base ~]# df -h /mnt/lvtest/ -T Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/testvg-testlv ext4 8.3G 37M 7.8G 1% /mnt/lvtest [root@base ~]# lvresize -L +200M /dev/testvg/testlv //执行之前需要umount [root@base ~]# umount /mnt/lvtest [root@base ~]# e2fsck -f /dev/testvg/testlv [root@base ~]# resize2fs /dev/testvg/testlv [root@base ~]# mount /dev/testvg/testlv /mnt/lvtest/ [root@base ~]# df -hT /mnt/lvtest/ Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/testvg-testlv ext4 9.0G 37M 8.5G 1% /mnt/lvtest ext4格式缩容 (必须先缩减逻辑卷的逻辑边界,再缩减物理边界) 注意:1、不能在线缩减,得先卸载;  2、确保缩减后的空间大小依然能存储原有的所有数据;  3、在缩减之前应该先强行检查文件,以确保文件系统处于一致性状 态。 现在,将上述LV空间缩容至8G //对lv强制执行文件系统检测 //使用resize2fs对lv逻辑卷的逻辑边界空间大小调整为缩减后的大小 [root@base ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert bdqnlv bdqnvg -wi-a----- 9.00g [root@base ~]# umount /mnt/bdqn/ [root@base ~]# e2fsck -f /dev/vgbdqn/lvbdqn 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/vgbdqn/lvbdqn: 11/557056 files (0.0% non-contiguous), 76969/2228224 blocks [root@base ~]# resize2fs /dev/vgbdqn/lvbdqn 7G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vgbdqn/lvbdqn to 1835008 (4k) blocks. The filesystem on /dev/vgbdqn/lvbdqn is now 1835008 blocks long. //使用lvreduce对lv逻辑卷的物理边界进行缩减 //然后继续对lv进行挂载操作 [root@base ~]# lvreduce -L 7G /dev/vgbdqn/lvbdqn WARNING: Reducing active logical volume to 7.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vgbdqn/lvbdqn? [y/n]: y Size of logical volume vgbdqn/lvbdqn changed from 8.50 GiB (544 extents) to 7.00 GiB (448 extents). Logical volume vgbdqn/lvbdqn successfully resized. [root@base ~]# mount /dev/vgbdqn/lvbdqn /mnt/LVM2/ [root@base ~]# df -hT /mnt/LVM2/ Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vgbdqn-lvbdqn ext4 6.8G 37M 6.4G 1% /mnt/LVM2

标签: twk拉线式传感器swf

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台