LVM命令示例

时间:2019-04-29 03:17:37  来源:igfitidea点击:

显示物理卷(PV和PVDisplay)

要在系统上显示物理卷(PV),可以执行pvs命令:

[root@rhel01a ~]# pvs
  PV         VG        Fmt  Attr PSize PFree
  /dev/sda2  vg_rhel01 lvm2 a--  7.51g    0 
  /dev/sdb1  vg_rhel01 lvm2 a--  4.99g    0

要显示有关PV的更多详细信息,可以执行pvdisplay命令:

[root@rhel01a ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_rhel01
  PV Size               7.51 GiB/not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1922
  Free PE               0
  Allocated PE          1922
  PV UUID               2fkPz2-8os0-4kJN-3moF-2prj-Z37s-cMC6Rh
   
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg_rhel01
  PV Size               4.99 GiB/not usable 2.41 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1278
  Free PE               0
  Allocated PE          1278
  PV UUID               Q3lBfV-tDi9-LJOw-nZKj-fge1-pqSQ-l0Cute

显示卷组(vgs和vgdisplay)

要显示有关Linux系统上的卷组的基本信息,可以执行vgs命令:

[root@rhel01a ~]# vgs
  VG        #PV #LV #SN Attr   VSize  VFree
  vg_rhel01   2   2   0 wz--n- 12.50g    0 

从上面的输出中,我们可以看到有两个物理卷(PV)分配给了卷组(VG)vg_rhel01

要在Linux系统上更详细地查看卷组,可以使用命令vgdisplay

[root@rhel01a ~]# vgdisplay vg_rhel01
  --- Volume group ---
  VG Name               vg_rhel01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               12.50 GiB
  PE Size               4.00 MiB
  Total PE              3200
  Alloc PE/Size       3200/12.50 GiB
  Free  PE/Size       0/0   
  VG UUID               ttO0aF-RgCq-OZM7-dKcj-sDr0-vfg1-TDFzj0

显示逻辑卷信息(lvs和lvdisplay)

要在Linux系统上显示逻辑卷(LV)信息,可以执行lvs命令:

[root@rhel01a ~]# lvs
  LV      VG        Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
  lv_root vg_rhel01 -wi-ao-- 10.53g                                           
  lv_swap vg_rhel01 -wi-ao--  1.97g

要在Linux系统上更详细地显示逻辑卷,可以使用命令lvdisplay:

[root@rhel01a ~]# lvdisplay /dev/vg_rhel01/lv_root
  --- Logical volume ---
  LV Path                /dev/vg_rhel01/lv_root
  LV Name                lv_root
  VG Name                vg_rhel01
  LV UUID                2LwbRo-KMuD-DQne-3NMI-Jndp-gClY-Zj3uL0
  LV Write Access        read/write
  LV Creation host, time rhel01, 2014-02-19 19:54:06 +0000
  LV Status              available
  # open                 1
  LV Size                10.53 GiB
  Current LE             2696
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

如果在未指定特定逻辑卷的情况下执行lvdisplay命令,则将显示系统上的所有逻辑卷。在上面的示例中,参数/dev/vg_rhel01/lv_root已传递到lvdisplay命令。

列出Linux系统上的分区类型

尽管此命令不是LVM命令,但它对于显示分区信息很有用。要在Linux系统上显示分区类型和磁盘信息,可以使用lsblk命令:

[root@rhel01a ~]# lsblk
NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0                           11:0    1  1024M  0 rom  
sda                            8:0    0     8G  0 disk 
├─sda1                         8:1    0   500M  0 part /boot
└─sda2                         8:2    0   7.5G  0 part 
  ├─vg_rhel01-lv_root (dm-0) 253:0    0  10.5G  0 lvm  /
  └─vg_rhel01-lv_swap (dm-1) 253:1    0     2G  0 lvm  [SWAP]
sdb                            8:16   0     5G  0 disk 
└─sdb1                         8:17   0     5G  0 part 
  └─vg_rhel01-lv_root (dm-0) 253:0    0  10.5G  0 lvm  /
sdc                            8:32   0     2G  0 disk 

列出Linux系统上的分区-fdisk

要在Linux系统上显示分区信息,可以执行fdisk -l命令:

[root@rhel01a ~]# fdisk -l /dev/sda

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes
Disk identifier: 0x00029be4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1045     7875584   8e  Linux LVM               8:32   0     2G  0 disk 

如果在不指定磁盘的情况下执行命令fdisk -l,则会显示所有磁盘信息。

有时将命令与grep结合使用以限制显示的输出很有用:

[root@rhel01a ~]# fdisk -l | grep /dev/sd
Disk /dev/sda: 8589 MB, 8589934592 bytes
/dev/sda1   *           1          64      512000   83  Linux
/dev/sda2              64        1045     7875584   8e  Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
/dev/sdb1               1         652     5237158+  8e  Linux LVM
Disk /dev/sdc: 2147 MB, 2147483648 bytes

从上面我们可以看到,我们的Red Hat系统/dev/sdc上有一个备用磁盘。此命令有助于识别刚刚添加到系统中的磁盘。

创建物理卷(pvcreate)

要将新磁盘添加到要由LVM管理的系统中,必须使用命令pvcreate

[root@rhel01a ~]# pvcreate /dev/sdc
  Writing physical volume data to disk "/dev/sdc"
  Physical volume "/dev/sdc" successfully created

删除物理卷(pvremove)

要从系统中删除物理卷,请使用pvremove命令:

[root@rhel01a ~]# pvremove /dev/sdc
  Labels on physical volume "/dev/sdc" successfully wiped

创建一个新的卷组(vgcreate)

要创建新的卷组(VG),必须使用vgcreate命令。您还需要指定要将哪个物理卷(PV)与新的卷组关联。

在下面的示例中,我们使用新添加的磁盘/dev/sdc。在使用新添加的磁盘之前,请使用pvcreate命令。命令pvs用于显示它与任何现有的卷组都不相关。

[root@rhel01a ~]# pvcreate /dev/sdc
  Writing physical volume data to disk "/dev/sdc"
  Physical volume "/dev/sdc" successfully created

[root@rhel01a ~]# pvs
  PV         VG        Fmt  Attr PSize PFree
  /dev/sda2  vg_rhel01 lvm2 a--  7.51g    0 
  /dev/sdb1  vg_rhel01 lvm2 a--  4.99g    0 
  /dev/sdc             lvm2 a--  2.00g 2.00g

[root@rhel01a ~]# vgcreate vg01 /dev/sdc
  Volume group "vg01" successfully created

现在,执行pvs命令时,我们可以看到该存储现在与新的卷组vg01相关联。

[root@rhel01a ~]# pvs
  PV         VG        Fmt  Attr PSize PFree
  /dev/sda2  vg_rhel01 lvm2 a--  7.51g    0 
  /dev/sdb1  vg_rhel01 lvm2 a--  4.99g    0 
  /dev/sdc   vg01      lvm2 a--  2.00g 2.00g

重命名卷组(vgrename)

要重命名现有的卷组,请使用vgrename命令:

[root@rhel01a ~]# vgs
  VG        #PV #LV #SN Attr   VSize  VFree
  vg01        1   0   0 wz--n-  2.00g 2.00g
  vg_rhel01   2   2   0 wz--n- 12.50g    0 

[root@rhel01a ~]# vgrename vg01 test_vg01
  Volume group "vg01" successfully renamed to "test_vg01"

[root@rhel01a ~]# vgs
  VG        #PV #LV #SN Attr   VSize  VFree
  test_vg01   1   0   0 wz--n-  2.00g 2.00g
  vg_rhel01   2   2   0 wz--n- 12.50g    0 

在上面的示例中,我们使用vgrename命令将现有的卷组vg01重命名为test_vg01。命令vgs用于显示之前和之后的结果。

删除卷组

要删除卷组,请使用命令vgremove:

[root@rhel01a ~]# vgremove test_vg01
  Volume group "test_vg01" successfully removed

扩展卷组(vgextend)

要向现有的卷组添加额外的空间,请使用命令vgextend。您还需要提供要添加的物理卷(磁盘)的名称。在以下示例中,我们将向现有的卷组vg_rhel01添加2GB的空间

[root@rhel01a ~]# vgdisplay vg_rhel01
  --- Volume group ---
  VG Name               vg_rhel01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               12.50 GiB
  PE Size               4.00 MiB
  Total PE              3200
  Alloc PE/Size       3200/12.50 GiB
  Free  PE/Size       0/0   
  VG UUID               ttO0aF-RgCq-OZM7-dKcj-sDr0-vfg1-TDFzj0
   
[root@rhel01a ~]# vgextend vg_rhel01 /dev/sdc
  Volume group "vg_rhel01" successfully extended
[root@rhel01a ~]# vgdisplay vg_rhel01
  --- Volume group ---
  VG Name               vg_rhel01
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               14.50 GiB
  PE Size               4.00 MiB
  Total PE              3711
  Alloc PE/Size       3200/12.50 GiB
  Free  PE/Size       511/2.00 GiB
  VG UUID               ttO0aF-RgCq-OZM7-dKcj-sDr0-vfg1-TDFzj0

在上面的示例中,我们使用vgdisplay命令显示当前大小以及与卷组vg_rhel01相关联的物理卷。

接下来,执行vgextend命令以及要使用的指定物理卷。执行命令后,使用vgdisplay命令显示指定卷组的新属性。从输出中,您可以看到大小和关联的PV计数已增加。

从卷组中删除物理卷(vgreduce)

要从卷组中删除存储,请使用命令vgreduce。此命令与vgextend命令相反。在以下示例中,我们将从卷组中删除指定的PV:

[root@rhel01a ~]# pvs
  PV         VG        Fmt  Attr PSize PFree
  /dev/sda2  vg_rhel01 lvm2 a--  7.51g    0 
  /dev/sdb1  vg_rhel01 lvm2 a--  4.99g    0 
  /dev/sdc   vg_rhel01 lvm2 a--  2.00g 2.00g

[root@rhel01a ~]# vgreduce vg_rhel01 /dev/sdc
  Removed "/dev/sdc" from volume group "vg_rhel01"

[root@rhel01a ~]# pvs
  PV         VG        Fmt  Attr PSize PFree
  /dev/sda2  vg_rhel01 lvm2 a--  7.51g    0 
  /dev/sdb1  vg_rhel01 lvm2 a--  4.99g    0 
  /dev/sdc             lvm2 a--  2.00g 2.00g

所述PVS命令最初用于显示物理卷和卷组之间的关系。执行vgreduce命令后,我们使用pvs命令验证物理卷/dev/sdc是否不再附加到卷组vg_rhel01

创建逻辑卷(lvcreate)

要在现有卷组上创建逻辑卷,请使用命令lvcreate。

[root@rhel01a ~]# lvcreate -n lv01 -l 100%VG vg01
  Logical volume "lv01" created

上面的示例将在卷组(VG)vg01上创建一个名为lv01的逻辑卷(LV)。我们还指定了逻辑卷应利用卷组(100%VG)中的 所有可用空间

创建具有指定大小的逻辑卷(lvcreate)

在以下示例中,命令lvcreate用于创建新的逻辑卷。这次,我们将从卷组中指定要使用的空间量。在该示例中,我们将从卷组中分配1GB的空间。

[root@rhel01a ~]# pvs
  PV         VG        Fmt  Attr PSize PFree
  /dev/sda2  vg_rhel01 lvm2 a--  7.51g    0 
  /dev/sdb1  vg_rhel01 lvm2 a--  4.99g    0 
  /dev/sdc   vg01      lvm2 a--  2.00g 2.00g

[root@rhel01a ~]# lvcreate -n lv01 -L1G vg01
  Logical volume "lv01" created

[root@rhel01a ~]# pvs
  PV         VG        Fmt  Attr PSize PFree   
  /dev/sda2  vg_rhel01 lvm2 a--  7.51g       0 
  /dev/sdb1  vg_rhel01 lvm2 a--  4.99g       0 
  /dev/sdc   vg01      lvm2 a--  2.00g 1020.00m

在上面的示例中,我们可以看到最初有2GB的空间分配给卷组vg01。然后,我们执行的命令:

使用lvcreate -n lv01上-L1G VG01 该命令将创建一个名为逻辑卷(LV)lv01上,拥有1GB的卷组(VG)的分配VG01

使用lvextend向文件系统添加空间

要为现有文件系统增加空间,请使用命令lvextend。在下面的示例中,我们可以看到存在一个名为testfs的文件系统,当前具有924MB的可用空间。在添加空间之前,您必须验证逻辑卷可用的空间。要查看文件系统当前的空间分配,我们使用df命令。要查看可用空间,我们可以执行命令pvs。在下面的示例中,我们可以看到卷组vg01中有1020MB的可用空间。

[root@rhel01a /]# df -h /testfs
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv01
                     1008M   34M  924M   4% /testfs

[root@rhel01a /]# pvs
  PV         VG        Fmt  Attr PSize PFree   
  /dev/sda2  vg_rhel01 lvm2 a--  7.51g       0 
  /dev/sdb1  vg_rhel01 lvm2 a--  4.99g       0 
  /dev/sdc   vg01      lvm2 a--  2.00g 1020.00m

[root@rhel01a /]# lvextend /dev/vg01/lv01 -L+1000M -r
  Extending logical volume lv01 to 1.98 GiB
  Logical volume lv01 successfully resized
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg01-lv01 is mounted on /testfs; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg01-lv01 to 518144 (4k) blocks.
The filesystem on /dev/mapper/vg01-lv01 is now 518144 blocks long.

命令lvextend在的/dev/VG01/lv01上-L + 1000M -r用于增加由1000MB逻辑卷的大小。该-r选项被指定,因为这将在网上进行文件系统的大小调整。

现在,当我们使用df命令时,我们可以看到文件系统的大小已增加。

[root@rhel01a /]# df -h testfs/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv01
                      2.0G   34M  1.9G   2% /testfs

使用lvextend指定文件系统的大小

如果您想指定文件系统的大小,我们可以使用选项-L。然后,我们可以在此处指定所需的大小(MB/GB)。在下面的示例中,我们将指定文件系统应使用的大小为1.5GB。当前只有435MB的空间可用于文件系统testfs

[root@rhel01a /]# df -h /testfs/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv01
                      492M   33M  435M   8% /testfs

[root@rhel01a /]# lvextend /dev/vg01/lv01 -L1.5GB -r
  Extending logical volume lv01 to 1.50 GiB
  Logical volume lv01 successfully resized
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg01-lv01 is mounted on /testfs; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg01-lv01 to 393216 (4k) blocks.
The filesystem on /dev/mapper/vg01-lv01 is now 393216 blocks long.

减少文件系统的大小(lvreduce)

为了减小文件系统的大小,可以使用lvreduce命令来更改基础逻辑卷的大小。 警告请谨慎使用此命令,因为如果收缩文件系统,可能会丢失数据。

在下面的示例中,我们将使用命令lvreduce /dev/vg01/lv01 -L500M -r

[root@rhel01a /]# df -h /testfs/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv01
                      1.5G   34M  1.4G   3% /testfs
[root@rhel01a /]# lvreduce /dev/vg01/lv01 -L500M -r
Do you want to unmount "/testfs"? [Y|n] y
fsck from util-linux-ng 2.17.2
/dev/mapper/vg01-lv01: 11/98304 files (9.1% non-contiguous), 14756/393216 blocks
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg01-lv01 to 128000 (4k) blocks.
The filesystem on /dev/mapper/vg01-lv01 is now 128000 blocks long.

  Reducing logical volume lv01 to 500.00 MiB
  Logical volume lv01 successfully resized
[root@rhel01a /]# df -h testfs/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv01
                      492M   33M  435M   8% /testfs

将文件系统减少指定数量

在以下示例中,我们将通过以下方式指定减小文件系统大小的大小:

[root@rhel01a /]# df -h /testfs/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv01
                      492M   33M  435M   8% /testfs

[root@rhel01a /]# lvreduce /dev/vg01/lv01 -L-235M -r
  Rounding size to boundary between physical extents: 232.00 MiB
Do you want to unmount "/testfs"? [Y|n] y
fsck from util-linux-ng 2.17.2
/dev/mapper/vg01-lv01: 11/32768 files (9.1% non-contiguous), 10449/128000 blocks
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg01-lv01 to 68608 (4k) blocks.
The filesystem on /dev/mapper/vg01-lv01 is now 68608 blocks long.

  Reducing logical volume lv01 to 268.00 MiB
  Logical volume lv01 successfully resized

[root@rhel01a /]# df -h /testfs/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv01
                      262M   33M  217M  14% /testfs