Ubuntu学习笔记之分区详解之LVM

本文是Ubuntu学习笔记的一部分,专注于LVM(逻辑卷管理)的详细讲解。LVM允许管理员灵活地扩展或缩减逻辑卷,无需重启系统,且不影响已有数据。通过parted和fdisk进行分区,接着创建物理卷、卷组,然后创建和管理逻辑卷,包括扩展和缩减操作。这一系列步骤使得硬盘管理变得更加便捷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu学习笔记之分区详解之LVM

0、 前言

逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。
传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使
用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将
新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。

         disk A                    disk B
      ↓----------↓            ↓-------↓------↓
    分区1       分区2         分区1   分区2  分区3
      ↓          ↓            ↓       ↓      ↓
     pv1        pv2          pv1     pv2    pv3
      ↓          ↓            ↓       ↓      ↓
volume group1    volume group 2, volume group 2,
     ↓                    ↓              ↓
logical volume1    logical volume2    logical volume3
    ↓                    ↓ 
 文件系统ext4         文件系统zfs

图中顶部,首先是实际的物理磁盘及其划分的分区和其上的物理卷(PV)。
一个或多个物理卷可以用来创建卷组(VG)。然后基于卷组可以创建逻辑卷(LV)。
只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。
文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。

1、首先使用分区工具进行分区,parted、fdisk命令。


root@fs-share:/# fdisk -l /dev/sdb
Disk /dev/sdb: 8.9 TiB, 9796283531264 bytes, 19133366272 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
Disklabel type: gpt
Disk identifier: 2C9EDAFE-B39C-4DFA-8BD4-A6C74FC02CE6

Device           Start         End    Sectors   Size Type
/dev/sdb1         2048   195311615  195309568  93.1G Linux LVM
/dev/sdb2    195311616  4687499263 4492187648   2.1T Linux LVM
/dev/sdb3   4687499264  5859375103 1171875840 558.8G Linux filesystem
/dev/sdb4   5859375104  7812499455 1953124352 931.3G Linux filesystem
/dev/sdb5   7812499456 11718750207 3906250752   1.8T Linux filesystem
/dev/sdb6  11718750208 13671874559 1953124352 931.3G Linux filesystem
/dev/sdb7  13671874560 14648436735  976562176 465.7G Linux filesystem
/dev/sdb8  14648436736 17578125311 2929688576   1.4T Linux filesystem
/dev/sdb9  17578125312 18554687487  976562176 465.7G Linux filesystem


2、使用命令pvcreate创建物理卷(PV)

root@fs-share:/# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.

# 使用下列命令检查物理卷的创建情况。
root@fs-share:/# pvdisplay
  "/dev/sdb1" is a new physical volume of "93.13 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               93.13 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               fNiq1L-rCZC-y1DQ-YoNk-ufr8-Ddz3-RRwknx


# pvremove /dev/sdb1 使用下列命令可以删除物理卷。
root@fs-share:/# pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped.


# 也可以同时新建多个pv的
root@fs-share:/# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.


 

3、准备卷组

#下列命令用来创建名为'data1'的卷组
root@fs-share:/# vgcreate data1 /dev/sdb1 /dev/sdb3
  Volume group "data1" successfully created

root@fs-share:/# vgcreate vg-data1 /dev/sdb1 /dev/sdb3
  Volume group "vg-data1" successfully created

# 使用下列命令可以来验证卷组。
root@fs-share:/# vgdisplay
  --- Volume group ---
  VG Name               vg-data1
  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               651.92 GiB
  PE Size               4.00 MiB
  Total PE              166892
  Alloc PE / Size       0 / 0
  Free  PE / Size       166892 / 651.92 GiB
  VG UUID               vLRQGk-Ml8H-mupG-ITKN-KWYm-jRyl-nI9aBY


#使用下列命令删除卷组。
vgremove vg-data1

# 如果再次新建之前的一个分区到vg中会提示报错的
root@fs-share:/# vgcreate vg-root /dev/sdb1
  Physical volume '/dev/sdb1' is already in volume group 'vg-data1'
  Unable to add physical volume '/dev/sdb1' to volume group 'vg-data1'
  /dev/sdb1: physical volume not initialized.
  
# 再单独建个vg-root
root@fs-share:/# vgcreate vg-root /dev/sdb2
  Volume group "vg-root" successfully created
root@fs-share:/# vgdisplay
  --- Volume group ---
  VG Name               vg-data1
  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               651.92 GiB
  PE Size               4.00 MiB
  Total PE              166892
  Alloc PE / Size       0 / 0
  Free  PE / Size       166892 / 651.92 GiB
  VG UUID               vLRQGk-Ml8H-mupG-ITKN-KWYm-jRyl-nI9aBY

  --- Volume group ---
  VG Name               vg-root
  System ID
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               2.09 TiB
  PE Size               4.00 MiB
  Total PE              548362
  Alloc PE / Size       0 / 0
  Free  PE / Size       548362 / 2.09 TiB
  VG UUID               EL9l4y-b1qo-9LWx-oxiQ-u5J4-2vS9-ejP6FL

root@fs-share:/#

4、准备逻辑卷

下列命令创建一个名为'1v1'、大小为100MB的逻辑卷。我们使用小分区减少执行时间
lvcreate -L 100M -n vg-data1_lv1 vg-data1 


root@fs-share:/# lvcreate -L 100M -n vg-data1_lv1 vg-data1
  Logical volume "vg-data1_lv1" created.

root@fs-share:/# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg-data1/vg-data1_lv1
  LV Name                vg-data1_lv1
  VG Name                vg-data1
  LV UUID                JUIugv-IOpL-sJEU-kwb9-q8gt-T0ct-wDSoBL
  LV Write Access        read/write
  LV Creation host, time fs-share, 2019-06-04 17:25:17 +0800
  LV Status              available
  # open                 0
  LV Size                100.00 MiB
  Current LE             25
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0



现在逻辑卷已经准备好了,我们可以格式化和挂载逻辑卷,就像其它ext2/3/4分区一样!
root@fs-share:/# mkfs.ext4 /dev/vg-data1/vg-data1_lv1
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 102400 1k blocks and 25688 inodes
Filesystem UUID: 64ae11e6-5650-42b4-a8f9-150f055d372c
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

root@fs-share:/# mount /dev/vg-data1/vg-data1_lv1 /mnt/
root@fs-share:/# df -ah
Filesystem                           Size  Used Avail Use% Mounted on
/dev/sda1                            256G  2.1G  241G   1% /
/dev/mapper/vg--data1-vg--data1_lv1   93M  1.6M   85M   2% /mnt

一旦逻辑卷挂载,我们就可以到挂载点 /lvm-mount/ 上读写了。要创建和挂载其它的逻辑卷,我们重复这个过程。
最后,使用lvremove我们可以删除逻辑卷。
umount /lvm-mount/
lvremove /dev/volume-group1/lv1 

5、扩展一个LVM卷


调整逻辑卷大小的功能是LVM最有用的功能,调整逻辑卷大小之后也需要对文件系统调整大小进行匹配。

首先,我们卸载掉lv1卷
root@fs-share:~# umount /dev/vg-data1/vg-data1_lv1 

然后,设置卷的大小为200M
root@fs-share:~# lvresize -L 200M /dev/vg-data1/vg-data1_lv1
  Size of logical volume vg-data1/vg-data1_lv1 changed from 100.00 MiB (25 extents) to 200.00 MiB (50 extents).
  Logical volume vg-data1/vg-data1_lv1 successfully resized.


检查磁盘错误
root@fs-share:~# e2fsck -f /dev/vg-data1/vg-data1_lv1
e2fsck 1.44.1 (24-Mar-2018)
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/vg-data1/vg-data1_lv1: 297/25688 files (3.0% non-contiguous), 100351/102400 blocks

扩展文件系统
root@fs-share:~# resize2fs /dev/vg-data1/vg-data1_lv1
resize2fs 1.44.1 (24-Mar-2018)
Resizing the filesystem on /dev/vg-data1/vg-data1_lv1 to 204800 (1k) blocks.
The filesystem on /dev/vg-data1/vg-data1_lv1 is now 204800 (1k) blocks long.


检查LV的状态来验证
root@fs-share:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg-data1/vg-data1_lv1
  LV Name                vg-data1_lv1
  VG Name                vg-data1
  LV UUID                JUIugv-IOpL-sJEU-kwb9-q8gt-T0ct-wDSoBL
  LV Write Access        read/write
  LV Creation host, time fs-share, 2019-06-04 17:25:17 +0800
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

 
root@fs-share:~# mount /dev/vg-data1/vg-data1_lv1 /mnt/
root@fs-share:~# df -h
Filesystem                           Size  Used Avail Use% Mounted on
udev                                  16G     0   16G   0% /dev
tmpfs                                3.2G  2.9M  3.2G   1% /run
/dev/sda1                            256G  2.4G  240G   1% /
tmpfs                                 16G     0   16G   0% /dev/shm
tmpfs                                5.0M     0  5.0M   0% /run/lock
tmpfs                                 16G     0   16G   0% /sys/fs/cgroup
tmpfs                                3.2G     0  3.2G   0% /run/user/1000
/dev/mapper/vg--data1-vg--data1_lv1  190M   91M   86M  52% /mnt


6、缩减一个LVM卷,扩展一个LVM卷


注意减少逻辑卷的大小值若小于储存的数据大小,存储在后面的数据会丢失。

卸载掉卷。
root@fs-share:~# umount /dev/vg-data1/vg-data1_lv1


检测磁盘错误
root@fs-share:~# e2fsck /dev/vg-data1/vg-data1_lv1
e2fsck 1.44.1 (24-Mar-2018)
/dev/vg-data1/vg-data1_lv1: clean, 13/49400 files, 177515/204800 blocks


缩小文件系统
root@fs-share:~# resize2fs /dev/vg-data1/vg-data1_lv1 100M
resize2fs 1.44.1 (24-Mar-2018)
resize2fs: New size smaller than minimum (204800)

减少逻辑卷大小
root@fs-share:~# lvresize -L 100M /dev/vg-data1/vg-data1_lv1
  WARNING: Reducing active logical volume to 100.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg-data1/vg-data1_lv1? [y/n]: y
  Size of logical volume vg-data1/vg-data1_lv1 changed from 200.00 MiB (50 extents) to 100.00 MiB (25 extents).
  Logical volume vg-data1/vg-data1_lv1 successfully resized.


验证调整后的逻辑卷大小
root@fs-share:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg-data1/vg-data1_lv1
  LV Name                vg-data1_lv1
  VG Name                vg-data1
  LV UUID                JUIugv-IOpL-sJEU-kwb9-q8gt-T0ct-wDSoBL
  LV Write Access        read/write
  LV Creation host, time fs-share, 2019-06-04 17:25:17 +0800
  LV Status              available
  # open                 0
  LV Size                100.00 MiB
  Current LE             25
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

 

7、扩展一个卷组


root@fs-share:~#
root@fs-share:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg-data
  PV Size               <8.91 TiB / not usable 2.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              2335615
  Free PE               2335615
  Allocated PE          0
  PV UUID               hwqYDk-BANT-TRjl-E816-XflZ-5tox-NZzzlf

  "/dev/sdc1" is a new physical volume of "<8.91 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name
  PV Size               <8.91 TiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               MTNKpf-fwWc-s090-frxQ-engb-eGwQ-ArQmX6

检测现在卷组状态
root@fs-share:~# vgdisplay
  --- Volume group ---
  VG Name               vg-data
  System ID
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               <8.91 TiB
  PE Size               4.00 MiB
  Total PE              2335615
  Alloc PE / Size       0 / 0
  Free  PE / Size       2335615 / <8.91 TiB
  VG UUID               8biipv-Yx0F-OVRW-1ADL-dvEu-pFpL-Z4g9pu

root@fs-share:~#
 



扩增一个卷组
root@fs-share:~# vgextend vg-data /dev/sdc1
  Volume group "vg-data" successfully extended
root@fs-share:~#


# 扩展一个卷组之后大小已经变化了
root@fs-share:~# vgdisplay
  --- Volume group ---
  VG Name               vg-data
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  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               <17.82 TiB
  PE Size               4.00 MiB
  Total PE              4671230
  Alloc PE / Size       0 / 0
  Free  PE / Size       4671230 / <17.82 TiB
  VG UUID               8biipv-Yx0F-OVRW-1ADL-dvEu-pFpL-Z4g9pu

root@fs-share:~#

从一个卷组中移除一个pv
vgreduce - Remove physical volume(s) from a volume group






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值