目录

一、lvm的组成

1、物理卷-pv

2、卷组-vg

3、逻辑卷-lv

4、物理块-pe

二、lvm的优缺点

1、优点

2、缺点

三、创建和管理lvm

1、基于磁盘的方式创建LV

1)查看磁盘信息

2)使用数据盘创建磁盘的物理卷

3)创建创建的物理卷

4)创建卷组

5)查看卷组信息

6)添加新的物理卷

7)将新的物理卷添加到现有的卷组

8)再次查看卷组的信息

9)从现有的卷组中删除一个物理卷

10)创建逻辑卷

11)通过百分比的方式将卷组的空间分成想同大小的逻辑卷

12)常见文件系统

13)挂载文件系统

14)删除逻辑卷

15)删除卷组

16)删除物理卷

17)把磁盘还原为裸盘方式

2、基于分区的方式创建逻辑卷

1)创建分区

2)创建物理卷

3)创建卷组

4)创建逻辑卷

5)格式化并挂载逻辑卷

6)删除lv,vg,pv

7)删除磁盘分区


一、lvm的组成

1、物理卷-pv

物理卷就是指硬盘分区或从逻辑分区上与硬盘分区具有同样功能的设备(如RAID),是lvm的基本存储逻辑块,它是 LVM 构建的实际硬件或存储系统。

2、卷组-vg

lvm卷组类似于非lvm系统中的物理硬盘。其由物理卷组成,可以在卷组上创建一个或多个"lvm分区",由一个或者多个物理卷组成。设备文件系统中显示为 /dev/VG_NAME。

3、逻辑卷-lv

逻辑卷是可供系统使用的最终元设备,它们在卷组中创建和管理,由物理块组成,实际上就是一个虚拟分区,并显示为 /dev/VG_NAME/LV_NAME,通常在其上可以创建文件系统。

4、物理块-pe

一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。

注:

LE:逻辑卷也被划分为被称为LE的可被寻址的基本单位,在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

二、lvm的优缺点

1、优点

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

  • 将多块硬盘看作一块大硬盘

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

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

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

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

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

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

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

2、缺点

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

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

三、创建和管理lvm

创建LV有俩种方式,一种是基于磁盘的,另一种是基于分区的。如果是基于分区的需要通过fdisk或者parted方式划分好分区,但不要格式化来。然后使用pvcreate创建物理卷;如果基于磁盘的就不需要创建分区,直接通过pvcreate来创建物理卷,只有创建好了物理卷之后才能添加到卷组,并且卷组里面创建逻辑卷,后格式化才能存放数据。

1、基于磁盘的方式创建LV

依次为:disk ->-PV -> VG -> LV -> fs,也即磁盘->物理卷->卷组->逻辑卷->文件系统。

1)查看磁盘信息

[root@lvm ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 99.5G  0 part 
  ├─centos-root 253:0    0 97.5G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sr0              11:0    1  4.2G  0 rom  /mnt/cdrom
nvme0n1         259:0    0   50G  0 disk 
nvme0n2         259:1    0   50G  0 disk

或者

[root@lvm ~]# lvmdiskscan 
  /dev/nvme0n1     [      50.00 GiB] 
  /dev/centos/root [     <97.51 GiB] 
  /dev/nvme0n2     [      50.00 GiB] 
  /dev/sda1        [     500.00 MiB] 
  /dev/centos/swap [       2.00 GiB] 
  /dev/sda2        [      99.51 GiB] LVM physical volume
  2 disks
  3 partitions
  0 LVM physical volume whole disks
  1 LVM physical volume

从上面可以看到sda是系统分区,nvme0n1和nvme0n2是数据盘

2)使用数据盘创建磁盘的物理卷

[root@lvm ~]# pvcreate -f /dev/nvme0n1 
  Physical volume "/dev/nvme0n1" successfully created.

3)创建创建的物理卷

[root@lvm ~]# pvs
  PV           VG     Fmt  Attr PSize   PFree 
  /dev/nvme0n1        lvm2 ---   50.00g 50.00g
  /dev/sda2    centos lvm2 a--  <99.51g     0

/dev/sda2是安装系统是创建 的物理卷,50G的/dev/nvme0n1是通过lvm管理新创建的物理卷

4)创建卷组

[root@lvm ~]# vgcreate -f ocloud-vg /dev/nvme0n1 
  Volume group "ocloud-vg" successfully created

注意:

ocloud-vg是自己命令的便于识别的卷组标识名

要划分多个目录数小于物理卷数,可以将具体的单个磁盘作为一个卷组早划分一个逻辑卷提供给一个集体目录使用;

如果要划分的目录数大于物理卷数。比如俩个物理卷要划分3个目录使用的情况,可以将俩个物理卷分给同一个卷组:vgcreate -f ocloud-vg /dev/nvme0n1 /dev/nvme0n2 (以此类推),再在卷组上划分多个逻辑卷给多个目录使用

5)查看卷组信息

[root@lvm ~]# vgs
  VG        #PV #LV #SN Attr   VSize   VFree  
  centos      1   2   0 wz--n- <99.51g      0 
  ocloud-vg   1   0   0 wz--n- <50.00g <50.00g

6)添加新的物理卷

[root@lvm ~]# pvcreate -f /dev/nvme0n2 
  Physical volume "/dev/nvme0n2" successfully created.

7)将新的物理卷添加到现有的卷组

[root@lvm ~]# vgextend ocloud-vg /dev/nvme0n2 
  Volume group "ocloud-vg" successfully extended

8)再次查看卷组的信息

[root@lvm ~]# vgs
  VG        #PV #LV #SN Attr   VSize   VFree 
  centos      1   2   0 wz--n- <99.51g     0 
  ocloud-vg   2   0   0 wz--n-  99.99g 99.99g

可以发现2个大小50G的物理卷组成了一个大小100G的卷组

9)从现有的卷组中删除一个物理卷

要从一个卷组中删除一个物理卷,首先确认要删除的物理卷没有被任何逻辑卷正在使用,就要使用pvdisplay命名查看一个该物理卷的信息,如果某个物理卷正在被逻辑卷所使用,就需要将改物理卷的数据备份到其他地方,然后在删除。移除卷组中物理卷的命令为:vgreduce

# 首先需要查看vg中有哪些pv组成
[root@lvm ~]# pvs
  PV           VG        Fmt  Attr PSize   PFree  
  /dev/nvme0n1 ocloud-vg lvm2 a--  <50.00g <50.00g
  /dev/nvme0n2 ocloud-vg lvm2 a--  <50.00g <50.00g
  /dev/sda2    centos    lvm2 a--  <99.51g      0
  ## 可以发现ocloud-vg中有2个物理卷/dev/nvme0n1和/dev/nvme0n2
  
# 从ocloud-vg中移除/dev/nvme0n2
  [root@lvm ~]# vgreduce ocloud-vg /dev/nvme0n2 
  Removed "/dev/nvme0n2" from volume group "ocloud-vg"
  
# 查看卷组ocloud-vg的信息
  [root@lvm ~]# vgs 
  VG        #PV #LV #SN Attr   VSize   VFree  
  centos      1   2   0 wz--n- <99.51g      0 
  ocloud-vg   1   0   0 wz--n- <50.00g <50.00g
  ## 可以看到磁盘已经从卷组中移除,空间也由100G变为了50G

10)创建逻辑卷

# 创建指定大小的逻辑卷
[root@lvm ~]# lvcreate -L 10G -n data1-lv ocloud-vg
  Logical volume "data1-lv" created.
## data1-lv是自己命令的便于识别的逻辑卷标识名,大小是10G

# 查看逻辑卷信息
[root@lvm ~]# lvs
  LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root     centos    -wi-ao---- <97.51g                                                    
  swap     centos    -wi-ao----   2.00g                                                    
  data1-lv ocloud-vg -wi-a-----  10.00g
  
# 扩展逻辑卷(逻辑卷只能扩展不能缩)
[root@lvm ~]# lvextend -L +5G /dev/ocloud-vg/data1-lv 
  Size of logical volume ocloud-vg/data1-lv changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
  Logical volume ocloud-vg/data1-lv successfully resized.
  
# 查看逻辑信息
[root@lvm ~]# lvs
  LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root     centos    -wi-ao---- <97.51g                                                    
  swap     centos    -wi-ao----   2.00g                                                    
  data1-lv ocloud-vg -wi-a-----  15.00g

注意:

如果逻辑卷已经创建好文件系统后扩了逻辑卷,文件系统容量不能增加。需要执行如下命 令后文件系统容量才会显示正常:

xfs_growfs /dev/ocloud-vg/data1-lv

11)通过百分比的方式将卷组的空间分成想同大小的逻辑卷

[root@lvm ~]# lvcreate -l 50%Free -n data2-lv ocloud-vg
  Logical volume "data2-lv" created.
  
  [root@lvm ~]# lvcreate -l 100%Free -n data3-lv ocloud-vg
  Logical volume "data3-lv" created.

说明:

剩余空间分成相同的2份,第一次lvcreate时候应该写50%Free,第2次lvcreate的时候写成100%Free

同理剩余空间分成相同的3份,第一次lvcreate时候写33%Free,第二次执行lvcreate的时候写50%Free。第三次执行lvcreate的时候写100%Free。

# 查看创建的逻辑卷信息
[root@lvm ~]# lvs
  LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root     centos    -wi-ao---- <97.51g                                                    
  swap     centos    -wi-ao----   2.00g                                                    
  data1-lv ocloud-vg -wi-a-----  15.00g                                                    
  data2-lv ocloud-vg -wi-a----- <17.50g                                                    
  data3-lv ocloud-vg -wi-a-----  17.50g

可以看出data1-lv是指定大小创建的逻辑卷,data2-lv和data3-lv是通过百分比的方式创建的逻辑卷。

12)常见文件系统

# data1-lv
[root@lvm ~]# mkfs.xfs -n ftype=1 /dev/ocloud-vg/data1-lv 
meta-data=/dev/ocloud-vg/data1-lv isize=512    agcount=4, agsize=983040 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=3932160, 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

#data2-lv
[root@lvm ~]# mkfs.xfs -n ftype=1 /dev/ocloud-vg/data2-lv 
meta-data=/dev/ocloud-vg/data2-lv isize=512    agcount=4, agsize=1146624 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=4586496, 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

#data3-lv
[root@lvm ~]# mkfs.xfs -n ftype=1 /dev/ocloud-vg/data3-lv 
meta-data=/dev/ocloud-vg/data3-lv isize=512    agcount=4, agsize=1146880 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=4587520, 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

13)挂载文件系统

# 创建挂载目录
mkdir -p /{data1,data2,data3}

# 挂载
[root@lvm ~]# echo -e "/dev/ocloud-vg/data1-lv\t/data1\t\t\txfs\tdefaults\t0 0" >> /etc/fstab 
[root@lvm ~]# echo -e "/dev/ocloud-vg/data2-lv\t/data2\t\t\txfs\tdefaults\t0 0" >> /etc/fstab 
[root@lvm ~]# echo -e "/dev/ocloud-vg/data3-lv\t/data3\t\t\txfs\tdefaults\t0 0" >> /etc/fstab
# 生效
[root@lvm ~]# mount -a

# 查看磁盘信息
[root@lvm ~]# lsblk
NAME                   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                      8:0    0  100G  0 disk 
├─sda1                   8:1    0  500M  0 part /boot
└─sda2                   8:2    0 99.5G  0 part 
  ├─centos-root        253:0    0 97.5G  0 lvm  /
  └─centos-swap        253:1    0    2G  0 lvm  [SWAP]
sr0                     11:0    1  4.2G  0 rom  /mnt/cdrom
nvme0n1                259:0    0   50G  0 disk 
├─ocloud--vg-data1--lv 253:2    0   15G  0 lvm  /data1
├─ocloud--vg-data2--lv 253:3    0 17.5G  0 lvm  /data2
└─ocloud--vg-data3--lv 253:4    0 17.5G  0 lvm  /data3

或者

[root@lvm ~]# df -hT
Filesystem                       Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root          xfs        98G  1.1G   97G   2% /
devtmpfs                         devtmpfs  476M     0  476M   0% /dev
tmpfs                            tmpfs     488M     0  488M   0% /dev/shm
tmpfs                            tmpfs     488M  7.7M  480M   2% /run
tmpfs                            tmpfs     488M     0  488M   0% /sys/fs/cgroup
/dev/sr0                         iso9660   4.2G  4.2G     0 100% /mnt/cdrom
/dev/sda1                        xfs       497M  123M  375M  25% /boot
tmpfs                            tmpfs      98M     0   98M   0% /run/user/0
/dev/mapper/ocloud--vg-data1--lv xfs        15G   33M   15G   1% /data1
/dev/mapper/ocloud--vg-data2--lv xfs        18G   33M   18G   1% /data2
/dev/mapper/ocloud--vg-data3--lv xfs        18G   33M   18G   1% /data3
## 可以看到所有创建的逻辑卷均已经挂载成功

14)删除逻辑卷

# 先卸载挂载目录
[root@lvm ~]# umount /data1/
[root@lvm ~]# umount /data2/
[root@lvm ~]# umount /data3/

# 注释掉/etc/fatab中的/data1,data2.data3部分保存并退出
#/dev/ocloud-vg/data1-lv	/data1			xfs	defaults	0 0
#/dev/ocloud-vg/data2-lv	/data2			xfs	defaults	0 0
#/dev/ocloud-vg/data3-lv	/data3			xfs	defaults	0 0

## 查看磁盘信息
[root@lvm ~]# lsblk 
NAME                   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                      8:0    0  100G  0 disk 
├─sda1                   8:1    0  500M  0 part /boot
└─sda2                   8:2    0 99.5G  0 part 
  ├─centos-root        253:0    0 97.5G  0 lvm  /
  └─centos-swap        253:1    0    2G  0 lvm  [SWAP]
sr0                     11:0    1  4.2G  0 rom  /mnt/cdrom
nvme0n1                259:0    0   50G  0 disk 
├─ocloud--vg-data1--lv 253:2    0   15G  0 lvm  
├─ocloud--vg-data2--lv 253:3    0 17.5G  0 lvm  
└─ocloud--vg-data3--lv 253:4    0 17.5G  0 lvm  
nvme0n2                259:1    0   50G  0 disk
## 分区挂载已经卸载

# 删除逻辑卷
[root@lvm ~]# lvremove -f /dev/ocloud-vg/data1-lv 
  Logical volume "data1-lv" successfully removed
[root@lvm ~]# lvremove -f /dev/ocloud-vg/data2-lv 
  Logical volume "data2-lv" successfully removed
[root@lvm ~]# lvremove -f /dev/ocloud-vg/data3-lv 
  Logical volume "data3-lv" successfully removed
  
# 确认逻辑卷信息是否已经删除
[root@lvm ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <97.51g                                                    
  swap centos -wi-ao----   2.00g

15)删除卷组

# 查看卷组的信息
[root@lvm ~]# vgs
  VG        #PV #LV #SN Attr   VSize   VFree  
  centos      1   2   0 wz--n- <99.51g      0 
  ocloud-vg   1   0   0 wz--n- <50.00g <50.00g
  
# 删除卷组
[root@lvm ~]# vgremove -f /dev/ocloud-vg
Volume group "ocloud-vg" successfully removed

# 查看信息
[root@lvm ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <99.51g    0

16)删除物理卷

# 查看pv
[root@lvm ~]# pvs
  PV           VG     Fmt  Attr PSize   PFree 
  /dev/nvme0n1        lvm2 ---   50.00g 50.00g
  /dev/nvme0n2        lvm2 ---   50.00g 50.00g
  /dev/sda2    centos lvm2 a--  <99.51g     0

# 删除pv
[root@lvm ~]# pvremove -f /dev/nvme0n1 
  Labels on physical volume "/dev/nvme0n1" successfully wiped.
[root@lvm ~]# pvremove -f /dev/nvme0n2 
  Labels on physical volume "/dev/nvme0n2" successfully wiped.
  
  # 查看pv
  [root@lvm ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <99.51g    0

17)把磁盘还原为裸盘方式

dd if=/dev/zero of=/dev/nvme0n1 bs=50M count=1024
dd if=/dev/zero of=/dev/nvme0n2 bs=50M count=1024

2、基于分区的方式创建逻辑卷

依次为:disk -> partition -> PV -> VG -> LV -> fs,也即磁盘->分区->物理卷->卷组->逻辑卷->文件系统。

1)创建分区

使用fdisk或者parted工具进行,创建分区时注意分区类型的设置(类型为linux lvm):

  • 如果使用的是MBR,设置分区类型要为8e。

  • 如果使用的是GPT,设置分区类型要为E6D6D379-F507-44C2-A23C-238F2A3DF928

[root@lvm ~]# fdisk /dev/nvme0n1 
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xdd5ab741.

Command (m for help): h   # 显示帮助
h: unknown command
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
   
Command (m for help): n #添加新分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p #分区类型主分区
Partition number (1-4, default 1):  #默认回车
First sector (2048-104857599, default 2048):  #默认回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): +8G #大小8G
Partition 1 of type Linux and of size 8 GiB is set

Command (m for help): t # 更改系统分区的id
Selected partition 1
Hex code (type L to list all codes): L #列出所有id代码

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      
Hex code (type L to list all codes): 8e  # linux lvm类型
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p # 打印分区表

Disk /dev/nvme0n1: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xdd5ab741

        Device Boot      Start         End      Blocks   Id  System
/dev/nvme0n1p1            2048    16779263     8388608   8e  Linux LVM

Command (m for help): w # 保存并退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

查看分区信息

root@lvm ~]# fdisk -l
...
        Device Boot      Start         End      Blocks   Id  System
/dev/nvme0n1p1            2048    16779263     8388608   8e  Linux LVM

Disk /dev/nvme0n2: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

或者

[root@lvm ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 99.5G  0 part 
  ├─centos-root 253:0    0 97.5G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sr0              11:0    1  4.2G  0 rom  /mnt/cdrom
nvme0n1         259:0    0   50G  0 disk 
└─nvme0n1p1     259:2    0    8G  0 part 
nvme0n2         259:1    0   50G  0 disk

再创建一个大小为10G的linux lvm类型分区

过程略

2)创建物理卷

[root@lvm ~]# pvcreate -f /dev/nvme0n1p1 /dev/nvme0n1p2 
  Physical volume "/dev/nvme0n1p1" successfully created.
  Physical volume "/dev/nvme0n1p2" successfully created.
# 查看所有pv的信息
[root@lvm ~]# pvs
  PV             VG     Fmt  Attr PSize   PFree 
  /dev/nvme0n1p1        lvm2 ---    8.00g  8.00g
  /dev/nvme0n1p2        lvm2 ---   10.00g 10.00g
  /dev/sda2      centos lvm2 a--  <99.51g     0 

或者

[root@lvm ~]# pvscan 
  PV /dev/sda2        VG centos          lvm2 [<99.51 GiB / 0    free]
  PV /dev/nvme0n1p2                      lvm2 [10.00 GiB]
  PV /dev/nvme0n1p1                      lvm2 [8.00 GiB]
  Total: 3 [<117.51 GiB] / in use: 1 [<99.51 GiB] / in no VG: 2 [18.00 GiB]
  
或者

[root@lvm ~]# pvdisplay

3)创建卷组

[root@lvm ~]# vgcreate ocloud-vg /dev/nvme0n1p1 /dev/nvme0n1p2 
  Volume group "ocloud-vg" successfully created
  
# 查看卷组信息
[root@lvm ~]# vgs
  VG        #PV #LV #SN Attr   VSize   VFree 
  centos      1   2   0 wz--n- <99.51g     0 
  ocloud-vg   2   0   0 wz--n-  17.99g 17.99g
# 注:通过pvs查看物理卷所在卷组

4)创建逻辑卷

[root@lvm ~]# lvcreate -L 10G ocloud-vg -n data1-lv
  Logical volume "data1-lv" created.
[root@lvm ~]# lvcreate -l 100%Free ocloud-vg -n data2-lv
  Logical volume "data2-lv" created.

# 查看lv
[root@lvm ~]# lvs
  LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root     centos    -wi-ao---- <97.51g                                                    
  swap     centos    -wi-ao----   2.00g                                                    
  data1-lv ocloud-vg -wi-a-----  10.00g                                                    
  data2-lv ocloud-vg -wi-a-----   7.99g

5)格式化并挂载逻辑卷

上面逻辑卷LV创建之后,通常是已经可以在/dev/ocloud/或者/dev/vg_name/下面找到该逻辑卷了,如果找不到的话,可以执行如下命令:

# modprobe dm-mod
# vgscan
# vgchange -ay

格式化

# 格式化为xfs格式
[root@lvm ~]# mkfs.xfs /dev/ocloud-vg/data1-lv 
[root@lvm ~]# mkfs.xfs /dev/ocloud-vg/data2-lv

# 挂载
[root@lvm ~]# mount /dev/ocloud-vg/data1-lv /data1
[root@lvm ~]# mount /dev/ocloud-vg/data2-lv /data2

# 查看磁盘信息
[root@lvm ~]# df -hT
Filesystem                       Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root          xfs        98G  1.1G   97G   2% /
devtmpfs                         devtmpfs  476M     0  476M   0% /dev
tmpfs                            tmpfs     488M     0  488M   0% /dev/shm
tmpfs                            tmpfs     488M  7.7M  480M   2% /run
tmpfs                            tmpfs     488M     0  488M   0% /sys/fs/cgroup
/dev/sr0                         iso9660   4.2G  4.2G     0 100% /mnt/cdrom
/dev/sda1                        xfs       497M  123M  375M  25% /boot
tmpfs                            tmpfs      98M     0   98M   0% /run/user/0
/dev/mapper/ocloud--vg-data2--lv xfs       8.0G   33M  8.0G   1% /data2
/dev/mapper/ocloud--vg-data1--lv xfs        10G   33M   10G   1% /data1

6)删除lv,vg,pv

# 取消挂载
[root@lvm ~]# umount /data1
[root@lvm ~]# umount /data2

# 删除lv
[root@lvm ~]# lvremove -f /dev/ocloud-vg/data2-lv
  Logical volume "data2-lv" successfully removed
[root@lvm ~]# lvremove -f /dev/ocloud-vg/data1-lv 
  Logical volume "data1-lv" successfully removed


# 删除vg
[root@lvm ~]# vgremove -f ocloud-vg
  Volume group "ocloud-vg" successfully removed


# 删除pv
[root@lvm ~]# pvremove -f /dev/nvme0n1p2
  Labels on physical volume "/dev/nvme0n1p2" successfully wiped.
[root@lvm ~]# pvremove -f /dev/nvme0n1p1 
  Labels on physical volume "/dev/nvme0n1p1" successfully wiped.

7)删除磁盘分区

[root@lvm ~]# fdisk /dev/nvme0n1   # 选择操作的磁盘
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d # 删除分区
Partition number (1,2, default 2): 1 # 删除的分区
Partition 1 is deleted

Command (m for help): d # 删除分区
Selected partition 2
Command (m for help): w       # 保存并退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

查看分区信息

# 查看磁盘信息
[root@lvm ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 99.5G  0 part 
  ├─centos-root 253:0    0 97.5G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sr0              11:0    1  4.2G  0 rom  /mnt/cdrom
nvme0n1         259:0    0   50G  0 disk 
nvme0n2         259:3    0   50G  0 disk

如果对你有用,麻烦点赞支持一下,发帖新人。谢谢大家!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐