lvcreate 创建逻辑卷、vgcreate 创建卷组、pvcreate 创建物理卷、vgextend 扩容卷组、lv缩容

lvcreate 创建逻辑卷、vgcreate 创建卷组、pvcreate 创建物理卷、vgextend 扩容卷组、lv缩容lvcreate 命令用于创建逻辑卷 这是 lvm 技术中最常用的命令 其语法格式如下 lvcreate 参数 卷组名常用参数 n 指定逻辑卷名称 如 ndata L 指定逻辑卷的大小 如 L

大家好,欢迎来到IT知识分享网。

pvcreate 创建物理卷

pvcreate 命令用于创建物理卷,即创建PV,这是lvm技术里常用的一个命令,其语法格式如下:

#可以直接将一块磁盘或磁盘分区进行格式为pv,直接将磁盘格式化为pv没必要分区 pvcreate [option] /dev/sdb /dev/sdc1 

演示示例:

[root@localhost ~]# pvcreate /dev/sdb /dev/sdc #直接将磁盘或某个分区转化为物理卷, Physical volume "/dev/sdb" successfully created. Physical volume "/dev/sdc" successfully created. [root@localhost ~]# pvs #查看有哪些物理卷 PV VG Fmt Attr PSize PFree /dev/sda2 cl lvm2 a-- 11.00g 4.00m /dev/sdb lvm2 --- 8.00g 8.00g /dev/sdc lvm2 --- 6.00g 6.00g 

vgcreate 创建卷组

vgcreate 命令用于创建卷组,这是lvm技术中最常用的一个命令,语法格式如下:

vgcreate [参数] 卷组名 物理卷1 物理卷2 ..... 

常用参数:

-s 指定物理卷中PE的大小,PE可取值 4M(默认值)、8M、16M、32M、64M 

演示示例:

[root@localhost ~]# vgcreate my_data /dev/sdb /dev/sdc #创建一个名为my_data的卷组并将sdb和sdc物理卷加入其中,PE的大小默认为4M 

lvcreate 创建逻辑卷

lvcreate 命令用于创建逻辑卷,这是lvm技术中最常用的命令,其语法格式如下:

lvcreate [参数] 卷组名 

ps:lvcreate创建一个逻辑卷需要指定卷组,表示在哪个卷组之上创建逻辑卷;

常用参数:

-n :指定逻辑卷名称,如 -n lv_data ; -L :指定逻辑卷的大小,如 -L 10G,单位可以是bBsSkKmMgGtTpPeE; -l :使用LE个数来指定逻辑卷的大小,如 -l 200,表示使用200个LE来创建逻辑卷,一般的我们最常用的是-L 来直接指定逻辑卷大小即可。这里重点 说明LE是什么,PE是在卷组中的叫法,而LE是在逻辑卷中的叫法,两者是一一对应的。 -l参数还有一种直接使用剩余空间的百分比的形式来给定大小,如 -l +100%FREE 

演示示例:

[root@localhost ~]# vgs #先查看有哪些卷组,如下,系统有两个卷组,已经在cl上创建了2个lv,my_data卷组还没创建lv VG #PV #LV #SN Attr VSize VFree  cl 1 2 0 wz--n- 11.00g 4.00m my_data 2 0 0 wz--n- 13.99g 13.99g [root@localhost ~]# lvcreate -n lv_data -L 6G my_data #在my_data卷组上创建一个名称叫lv_data的10G的逻辑卷 Logical volume "lv_data" created. [root@localhost ~]#  

下面我们来看一下安装Linux系统时默认创建的逻辑卷,如下:

ot@my_data ~]# df -h | grep mapper Filesystem Size Used Avail Use% Mounted on /dev/mapper/cl-root 57G 34G 23G 60% / #根分区就是逻辑卷 [root@my_data ~]# ll /dev/cl/root #发现该逻辑卷实际就是dm-0块设备文件 lrwxrwxrwx 1 root root 7 2022-01-29 21:12 /dev/cl/root -> ../dm-0 [root@my_data ~]# ll /dev/mapper/cl-root #发现该逻辑卷实际就是dm-0块设备文件 lrwxrwxrwx 1 root root 7 2022-01-29 21:12 /dev/mapper/cl-root -> ../dm-0 [root@my_data ~]#  

mkfs 格式化分区并创建文件系统

mkfs 命令用于格式化分区并创建文件系统,mkfs是make filesystem的缩写,其语法格式如下:

 mkfs [options] [-t <type>] [fs-options] <device> [<size>] 

主要参数:

-t, --type= 指定文件系统的类型; -V 可视化,输出详细过程; 

演示示例:

mkfs -t ext4 /dev/sda1 #格式化磁盘分区为ext4文件系统 mkfs -t xfs /dev/my_data/lv_data #对上面刚才创建的lv进行格式化并创建xfs类型的文件系统 

注意:mkfs命令只是一个综合命令,它会调用正确的文件系统格式化工具,也就是说当你输入mkfs [tab][tab] ,会发现有很多类似的格式化命令。如mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix kfs.vfat
不同的文件系统类型需使用不同的命令,如xfs类型的使用mkfs.xfs,ext4的使用mkfs.ext4,这要根据根分区的文件系统类型决定,其实,mkfs -t [文件系统格式名]===>等同于mkfs.文件系统格式名,即mkfs -t xfs 与 mkfs.xfs相同。这里就不在讲解其他类似的命令了。

mount挂载

#使用mkfs创建好文件系统后就可以挂载使用了 mkdir /data mount /dev/my_data/lv_data /data 

pvs、pvdisplay、pvscan 查看物理卷信息

pvs、pvdisplay、pvscan 这三个命令都可以查看系统中有哪些物理卷PV,其输入的信息详细情况有所不同而已,语法格式如下:

pvs [参数] pvdisplay [参数] pvscan [参数] 

一般都不用写参数;

演示示例:

[root@localhost ~]# pvs #pvs查看物理卷信息 PV VG Fmt Attr PSize PFree /dev/sda2 cl lvm2 a-- 11.00g 4.00m /dev/sdb lvm2 --- 8.00g 8.00g /dev/sdc lvm2 --- 6.00g 6.00g [root@localhost ~]# pvdisplay #pvdisplay更加详细查看物理卷信息 --- Physical volume --- PV Name /dev/sda2 VG Name cl PV Size 11.00 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 2815 Free PE 1 Allocated PE 2814 PV UUID oYhjES-MvEK-hfi1-cmno-INK2-vTtz-O80PNJ "/dev/sdb" is a new physical volume of "8.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 8.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID mn3meS-mPlJ-nQoA-hdEs-3kdl-85zO-f72vQO "/dev/sdc" is a new physical volume of "6.00 GiB" --- NEW Physical volume --- PV Name /dev/sdc VG Name PV Size 6.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 3u6yis-jF6t-czmS-Rj2i-ghlt-ntP8-IR0T2t [root@localhost ~]# pvscan #pvscan较为详细的查看物理卷信息 PV /dev/sda2 VG cl lvm2 [11.00 GiB / 4.00 MiB free] PV /dev/sdb lvm2 [8.00 GiB] PV /dev/sdc lvm2 [6.00 GiB] Total: 3 [25.00 GiB] / in use: 1 [11.00 GiB] / in no VG: 2 [14.00 GiB] [root@localhost ~]#  

vgs、vgdisplay、vgscan 查看卷组

vgs、vgdisplay、vgscan 这3个命令都可以查看卷组的信息,输出内容有详细简略之分而已,其语法格式如下:

vgs [参数] vgdisplay [参数] vgscan [参数] 

演示示例:

root@localhost ~]# vgs #查看卷组信息,输出信息较为简单 VG #PV #LV #SN Attr VSize VFree  cl 1 2 0 wz--n- 11.00g 4.00m mydb 2 0 0 wz--n- 13.99g 13.99g [root@localhost ~]# vgdisplay #查看卷组信息,输出信息最详细 --- Volume group --- VG Name mydb 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 13.99 GiB PE Size 4.00 MiB Total PE 3582 Alloc PE / Size 0 / 0 Free PE / Size 3582 / 13.99 GiB VG UUID wj0tKh-yRKD-dtPd-2JHI-R5X6-vf4r-G2t4R2 --- Volume group --- VG Name cl System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 11.00 GiB PE Size 4.00 MiB Total PE 2815 Alloc PE / Size 2814 / 10.99 GiB Free PE / Size 1 / 4.00 MiB VG UUID z8fFwU-5ZTc-mAN4-C3Mj-U1Ty-sYxp-40aKSF [root@localhost ~]# vgscan #查看卷组信息,输出信息最简单 Reading volume groups from cache. Found volume group "mydb" using metadata type lvm2 Found volume group "cl" using metadata type lvm2 [root@localhost ~]#  

lvs、lvdisplay、lvscan 查看逻辑卷

lvs、lvdisplay、lvscan 命令用于查看逻辑卷信息,语法格式如下:

lvs [参数] lvdisplay [参数] lvscan [参数] 

演示示例:

[root@localhost ~]# lvs #查看系统中全部逻辑卷信息,输出信息较为详细 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root cl -wi-ao---- 9.79g swap cl -wi-ao---- 1.20g lv_data my_data -wi-a----- 6.00g [root@localhost ~]# lvdisplay #查看系统中全部逻辑卷信息,输出信息最为详细 --- Logical volume --- LV Path /dev/my_data/lv_data #当创建一个lv时,系统会自动在/dev/下以vg名字和lv名字创建一个文件 LV Name lv_data VG Name my_data LV UUID 5NG9C1-O5GU-oLEf-Dxok-lMdZ-klfA-JpSBN6 LV Write Access read/write LV Creation host, time localhost.localdomain, 2021-09-25 16:25:12 +0800 LV Status available # open 0 LV Size 6.00 GiB Current LE 1536 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 --- Logical volume --- LV Path /dev/cl/swap LV Name swap VG Name cl LV UUID y5kxXD-75vw-amAS-2Doe-u1SI-FQ30-scHOfD LV Write Access read/write LV Creation host, time localhost.localdomain, 2021-09-25 14:02:19 +0800 LV Status available # open 2 LV Size 1.20 GiB Current LE 307 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/cl/root LV Name root VG Name cl LV UUID mQuBmu-3HVs-Fb04-A1YA-2gHN-4t10-mPTlPF LV Write Access read/write LV Creation host, time localhost.localdomain, 2021-09-25 14:02:19 +0800 LV Status available # open 1 LV Size 9.79 GiB Current LE 2507 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 [root@localhost ~]# lvscan #查看系统中全部逻辑卷信息,输出信息最为简单 ACTIVE '/dev/my_data/lv_data' [6.00 GiB] inherit ACTIVE '/dev/cl/swap' [1.20 GiB] inherit ACTIVE '/dev/cl/root' [9.79 GiB] inherit [root@localhost ~]#  

注意:当我们创建一个lv时,系统会自动在/dev/下以vg名字和lv名字创建一个文件,如/dev/my_data/lv_data,这就是为什么我们在dev下会看到有一个/dev/cl/root文件的缘由了,然后实际上,/dev/cl/root是一个软链接,链接到/dev/dm-Xdm-X才真正是一个块文件。

vgextend 扩容卷组,即把物理卷加入卷组

vgextend 命令用于扩容卷组大小,其语法格式如下:

vgextend [参数] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath ...] 

演示示例:

#vgextend 命令把sdd1物理卷加入my_data卷组(sdd1已经是物理卷了,my_data是卷组名称) [root@localhost /]# vgextend my_data /dev/sdd1  

lvextend 逻辑卷扩容(xfs_growfs、resize2fs配合扩展文件系统)

查看另一篇:《lvextend 逻辑卷扩容(xfs_growfs、resize2fs配合扩展文件系统)》https://editor.csdn.net/md/?articleId= 

lv缩容

缩容lv一般是腾出空间给同vg的其他lv,这并不是一种安全的做法,一般情况下没有人会这么干,一般当lv卷磁盘空间满的时候,会加磁盘来扩容,而不是从同vg下的其他lv腾空间出来,这里仅做出示例:

umount /dev/mapper/my_data-lv_data #卸载lv e2fsck -f /dev/mapper/my_data-lv_data #先扫描、检查磁盘在执行resize2fs,不然它会提示你先执行e2fsck -f命令的 resize2fs /dev/mapper/my_data-lv_data 100G #缩容文件系统到100G lvreduce -L 100G /dev/mapper/my_data-lv_data #缩容,lv到100G,此时vg就空闲了很多PE出来了,可以通过vgdisplay命令查看 lvreduce -L -100G /dev/mapper/my_data-lv_data #缩容,lv缩减100G,此时vg就空闲了很多PE出来了,可以通过vgdisplay命令查看 mount /dev/mapper/my_data-lv_data /my_data/ #重新挂载,此时文件系统就是100G大小 #以上缩容发现,一个是需要卸载,这点可以影响业务,其次缩容后重新挂载,原来的文件仍存在,没有丢失。 #下面是一个例子 /dev/mapper/vg--data-lv1T 1008G 77M 957G 1% /gpt1 /dev/mapper/vg--data-lv2 2.0T 81M 1.9T 1% /gpt2 [root@kubernetes ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 vg-data 1 2 0 wz--n- <3.00t 0 [root@kubernetes ~]# lvdisplay /dev/vg-data/lv1T /dev/vg-data/lv2 --- Logical volume --- LV Path /dev/vg-data/lv1T LV Name lv1T VG Name vg-data LV UUID oYtQ0a-hUQA-pVkK-e8iy-NFam-eRs4-PrMsZW LV Write Access read/write LV Creation host, time kubernetes, 2023-03-29 10:20:33 +0800 LV Status available # open 1 LV Size 1.00 TiB Current LE  Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 --- Logical volume --- LV Path /dev/vg-data/lv2 LV Name lv2 VG Name vg-data LV UUID APJ81S-hOEC-LCfp-Oamo-5OTk-C8pA-GLhN2L LV Write Access read/write LV Creation host, time kubernetes, 2023-03-29 10:21:08 +0800 LV Status available # open 1 LV Size <2.00 TiB Current LE  Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:3 [root@kubernetes ~]#  #打算对/gpt1缩减100G,腾出空间给/gpt2: umount /gpt1 e2fsck -f /dev/mapper/vg--data-lv1T #注意这条命令是缩减文件系统到多少G,957-100=857 resize2fs /dev/mapper/vg--data-lv1T 857G #重新挂载,现在是844G mount /dev/mapper/vg--data-lv1T /gpt1/ [root@kubernetes ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg--data-lv1T 844G 77M 801G 1% /gpt1 # 文件系统缩减了但是lv没有缩减呀,你看看: [root@kubernetes ~]# lvdisplay /dev/mapper/vg--data-lv1T --- Logical volume --- LV Path /dev/vg-data/lv1T LV Name lv1T VG Name vg-data LV UUID oYtQ0a-hUQA-pVkK-e8iy-NFam-eRs4-PrMsZW LV Write Access read/write LV Creation host, time kubernetes, 2023-03-29 10:20:33 +0800 LV Status available # open 1 LV Size 1.00 TiB #和没缩减文件系统时一模一样 Current LE  #和没缩减文件系统时一模一样 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 # 所以现在开始缩减lv,这里我们写-100G lvresize -L -100G /dev/vg-data/lv1T #缩减成功,但是好像不对,lv显示924G,挂载之后的文件系统怎么才844G [root@kubernetes ~]# lvdisplay /dev/mapper/vg--data-lv1T --- Logical volume --- LV Path /dev/vg-data/lv1T LV Name lv1T VG Name vg-data LV UUID oYtQ0a-hUQA-pVkK-e8iy-NFam-eRs4-PrMsZW LV Write Access read/write LV Creation host, time kubernetes, 2023-03-29 10:20:33 +0800 LV Status available # open 1 LV Size 924.00 GiB Current LE  Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 [root@kubernetes ~]# vgs #vg多了100G VG #PV #LV #SN Attr VSize VFree  vg-data 1 2 0 wz--n- <3.00t 100.00g [root@kubernetes ~]# df -h /dev/vg-data/lv1T Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg--data-lv1T 844G 77M 801G 1% /gpt1 [root@kubernetes ~]# 重新卸载重新挂载也是一样的,怎么回事? 

lvremove 删除逻辑卷

lvremove 命令用于删除逻辑卷,当一个逻辑卷不再需要之后,可以把它删除,其语法格式如下:

lvremove [参数] lv名或lv路径 

演示示例:

[root@localhost ~]# umount /dev/mapper/my_data-lv_data #删除一个lv之前必须先卸载文件系统 [root@localhost ~]# lvremove /dev/my_data/lv_data #删除逻辑卷,如果不知道lv的路径,可以通过lvdisplay命令查看 Do you really want to remove active logical volume my_data/lv_data? [y/n]: y Logical volume "lv_data" successfully removed 

vgremove 删除卷组

vgremove 命令用于删除卷组,当不再不需要某个卷组之后,可以删除卷组,语法格式如下;

vgremove [参数] VolumeGroupName 

常用参数:

无,一般不需要参数; 

演示示例:

[root@localhost ~]# vgremove my_data #删除整个卷组 Do you really want to remove volume group "my_data" containing 1 logical volumes? [y/n]: y Volume group "my_data" is removed 

pvremove删除物理卷

pvremove 命令用于删除物理卷,当不再不需要某个物理卷之后,可以删除物理卷,语法格式如下;

pvremove [参数] PhysicalVolume 

演示示例:

#删除物理卷,该物理卷必须从vg中卸载下来,使用vgreduce my_data /dev/sdd1卸载即可 [root@localhost ~]# pvremove /dev/sdd1 Removed "/dev/sdd1" from volume group "my_data" 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/110924.html

(0)
上一篇 2026-01-28 12:33
下一篇 2026-01-28 13:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信