加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

磁盘管理 -- LVM

发布时间:2020-12-14 02:11:20 所属栏目:Linux 来源:网络整理
导读:? LVM 概念 创建操作 分区监控 扩容与缩容 将数据快速转移到相同的卷组 删除整个逻辑卷 LVM ? LVM (Logical Volume Manage),逻辑卷管理 作用: 整合分散的空间,动态调整磁盘容量,从而提高磁盘管理的灵活性; WARN: /boot 分区存放引导文件,不能使用 LVM 创建,
  • ?LVM
  • 概念
  • 创建操作
  • 分区监控
  • 扩容与缩容
  • 将数据快速转移到相同的卷组
  • 删除整个逻辑卷

LVM


?

LVM (Logical Volume Manage),逻辑卷管理

  • 作用: 整合分散的空间,动态调整磁盘容量,从而提高磁盘管理的灵活性;
  • WARN: /boot 分区存放引导文件,不能使用 LVM 创建,必须独立出来;

?

概念


将众多的物理卷 (PV) 组成 卷组 (VG),再从卷组中划分出逻辑卷(LV)

?零散空间存储 --> 整合的虚拟磁盘 --> 虚拟分区

?? 物理卷(PV)?????????? 卷组(VG)????????? 逻辑卷(LV)

  • PV (Physical Volume),物理卷

    整个硬盘,或使用fdisk 等工具简历的普通分区,包括许多默认 4M 大小的 PE (Physical Extent,基本单元/物理单元);

  ??????????   

  • VG (Volume Group),卷组

     ? ? ? ? ? ?

  • LV (Logical Volume),逻辑卷

    从卷组中分割出一块空间,用于建立分区

?

创建操作


?

常用的命令

  • 扫描 scan
    • pvscan????? vgscan????? lvscan
  • 建立 create
    • pvcreate????? vgcreate????? lvcreate
  • 显示 display
    • pvdisplay????? vgdisplay????? lvdisplay
  • 删除 remove
    • pvremove????? vgremove????? lvremove
  • 扩展 extend
    • vgextend????? lvextend
  • 减少 reduce
    • vgreduce????? lvreduce
      ?

创建物理卷 ( 物理卷可以不用建立 ) 

// 可以跟多个分区,连贯的话可以使用 /dev/sdb[1234]
pvcreate /dev/sdb5 
  Physical volume "/dev/sdb5" successfully created

?

?创建卷组 VG

// 创建卷组,-s 指定PE的大小,默认 4M; 下面使用的是四个分区;
vgcreate -s 8 vg0 /dev/sdb[1234]
  Volume group "vg0" successfully created

// 查看卷组
vgdisplay /dev/vg0
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        4
  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                4
  Act PV                4
  VG Size               99.99 GiB
  PE Size               8.00 MiB
  Total PE              25597
  Alloc PE / Size       0 / 0   
  Free  PE / Size       25597 / 99.99 GiB
  VG UUID               fYBKCi-YraR-7ABL-NkBR-hpii-lTIC-jGDD0y

?

?

?

?

创建逻辑卷

// 创建逻辑卷 -L 给的大小 -n 逻辑卷名称
lvcreate -L 10G -n tian vg0
  Logical volume "tian" created

// 或者可以使用 -l 指定 PE 个数
lvcreate -l 2500 -n tian vg0

// 查看逻辑卷
lvdisplay /dev/vg0/tian 
  --- Logical volume ---
  LV Path                /dev/vg0/tian
  LV Name                tian
  VG Name                vg0
  LV UUID                kcJcqI-E2xU-phrt-c0RM-cBLa-p1h9-gmI1rx
  LV Write Access        read/write
  LV Creation host,time localhost.localdomain,2019-03-25 21:57:43 -0400
  LV Status              available
  # open                 0
  LV Size                19.53 GiB
  Current LE             2500
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3

?

?

?

?

格式化逻辑卷

// 格式化(创建)文件系统;
mkfs.ext4 /dev/vg0/tian 
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks,Stripe width=0 blocks
    1281120 inodes,5120000 blocks
    256000 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=4294967296
    157 block groups
    32768 blocks per group,32768 fragments per group
    8160 inodes per group
    Superblock backups stored on blocks: 
        32768,98304,163840,229376,294912,819200,884736,1605632,2654208,4096000

    Writing inode tables: done                            
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 30 mounts or
    180 days,whichever comes first.  Use tune2fs -c or -i to override.

?

?

挂载分区

// 挂载到需要的目录,或者创建挂载点进行挂载
mkdir /tian
mount /dev/vg0/tian /tian/

// 配置开机自动挂载,查看 UUID,使用 UUID进行挂载,防止重启后盘符变化导致加载不了磁盘错误;
blkid /dev/vg0/tian 
    /dev/vg0/tian: UUID="dd0ca91d-aefb-46fd-97d9-7158f9668b20" TYPE="ext4" 
vim /etc/fstab
    ... ...
    UUID="dd0ca91d-aefb-46fd-97d9-7158f9668b20" /tian     ext4    defaults        1 2

?

?

分区监控


?

查看命令

// 查看物理卷
pvs                    // 查看所有
pvs /dev/sdb1        // 指定分区
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb1  vg0  lvm2 a--  10.00g 10.00g
pvs /dev/sdb*        // 通配符匹配

// 查看物理卷组
vgs                    // 查看所有卷组
vgs /dev/vg0        // 指定卷组查看
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    4   1   0 wz--n- 99.99g 80.46g
  
// 查看逻辑卷        
lvs                    // 查看所有逻辑卷
lvs /dev/vg0/tian     // 查看指定的逻辑卷
  LV   VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  tian vg0  -wi-ao---- 19.53g 
 
// 查看pv,vg,lv 及指定挂载点
 pvs ; echo ------------------------;vgs ; echo ------------------------;lvs ; echo ------------------------;df -hT /tian
  PV         VG         Fmt  Attr PSize   PFree  
  /dev/sda3  vg_centos6 lvm2 a--  147.80g      0 
  /dev/sdb1  vg0        lvm2 a--   10.00g  10.00g
  /dev/sdb2  vg0        lvm2 a--   20.01g 488.00m
  /dev/sdb3  vg0        lvm2 a--   30.00g  30.00g
  /dev/sdb4  vg0        lvm2 a--   39.98g  39.98g
------------------------
  VG         #PV #LV #SN Attr   VSize   VFree 
  vg0          4   1   0 wz--n-  99.99g 80.46g
  vg_centos6   1   3   0 wz--n- 147.80g     0 
------------------------
  LV       VG         Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  tian     vg0        -wi-ao---- 19.53g                                             
  LogVol00 vg_centos6 -wi-ao---- 40.00g                                             
  LogVol01 vg_centos6 -wi-ao---- 40.00g                                             
  LogVol02 vg_centos6 -wi-ao---- 67.80g                                             
------------------------
Filesystem           Type  Size  Used Avail Use% Mounted on
/dev/mapper/vg0-tian ext4   20G  201M   19G   2% /tian

?

?

?

?

实时监控

// 动态实时查看,用于监控; watch -n 选项表示多少秒刷新一次;
watch -n 1  pvs ; echo ------------------------;vgs ; echo ------------------------;lvs ; echo ------------------------;df -hT /tian

// 动态查看只针对与挂载点
watch -n 1 df -h /tian
    Every 10.0s: df -h /tian                                                           Mon Mar 25 23:02:01 2019                        // 实时时间

    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-tian   20G  352M   18G   2% /tian            // 存储空间使用

?

?

?

?

扩容与缩容


?

  xfs 类型的设备只能扩容,不能缩容 !!

VG容量够,扩容 逻辑卷

// 查看文件系统本来大小
df -hT
    Filesystem                      Type   Size  Used Avail Use% Mounted on
    ... ...
    /dev/mapper/vg0-tian            ext4    20G  172M   19G   1% /tian

// 扩容 20个 G
lvextend -L +20G /dev/vg0/tian 
  Extending logical volume tian to 39.53 GiB
  Logical volume tian successfully resized
// 扩容到 50G
lvextend -L 50G /dev/vg0/tian

// 调整(刷新)逻辑卷分区大小
resize2fs /dev/vg0/tian 
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/vg0/tian is mounted on /tian; on-line resizing required
    old desc_blocks = 2,new_desc_blocks = 3
    Performing an on-line resize of /dev/vg0/tian to 10362880 (4k) blocks.
    The filesystem on /dev/vg0/tian is now 10362880 blocks long.
// 再次查看扩容后的大小    
df -hT
    Filesystem                      Type   Size  Used Avail Use% Mounted on
    ... ...
    /dev/mapper/vg0-tian            ext4    39G  176M   37G   1% /tian
    
// CentOS 7 上的xfs文件系统调整大小
xfs_growfs /dev/vg0/tian

?

?

?

?

逻辑卷缩小

// xfs 格式的文件系统不能缩小 // 查看没有缩小的时候的大小
df -hT
    Filesystem                      Type  Size  Used Avail Use% Mounted on
    ... ...
    /dev/mapper/vg0-tian            ext4   30G  233M   28G   1% /tian

// 首先,需要卸载文件系统的挂载
umount /tian

// 使用 e2fsck 强制检查逻辑卷,并关注使用空间,默认块是 4 K;
e2fsck -f /dev/vg0/tian 
    e2fsck 1.41.12 (17-May-2010)
    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/vg0/tian: 13/1966080 files (15.4% non-contiguous),182818/7864320 blocks

// 使用resize2fs 将文件系统减小到 10 G;
resize2fs /dev/vg0/tian 10G
    resize2fs 1.41.12 (17-May-2010)
    Resizing the filesystem on /dev/vg0/tian to 2621440 (4k) blocks.
    The filesystem on /dev/vg0/tian is now 2621440 blocks long.
    
// 根据使用的大小缩小,可以预留出足够使用的大小; 两种方式缩小到 10 G;
lvreduce -L -20G /dev/vg0/tian
lvreduce -L 10G /dev/vg0/tian

// 挂载
mount /dev/vg0/tian /tian

// 查看挂在后的大小
df -hT
    Filesystem                      Type  Size  Used Avail Use% Mounted on
    ... ...
    /dev/mapper/vg0-tian            ext4  9.9G  225M  9.2G   3% /tian

?

?

?

?

扩大卷组 (VG)

// 环境: 硬盘分区sdb[1234],123做卷组,逻辑卷使用满,卷组空间不足,需要使用sdb4 进行扩容;
vgextend vg0 /dev/sdb4 
  Volume group "vg0" successfully extended

// 查看sdb[1234]各个分区的大小
lsblk /dev/sdb
    NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb                   8:16   0  100G  0 disk 
    ├─sdb1                8:17   0   10G  0 part 
    │ └─vg0-tian (dm-3) 253:3    0   60G  0 lvm  /tian
    ├─sdb2                8:18   0   20G  0 part 
    │ └─vg0-tian (dm-3) 253:3    0   60G  0 lvm  /tian
    ├─sdb3                8:19   0   30G  0 part 
    │ └─vg0-tian (dm-3) 253:3    0   60G  0 lvm  /tian
    └─sdb4                8:20   0   40G  0 part

// 查看扩容后的卷组; 大小 100 GiB;    
vgdisplay /dev/vg0
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               99.99 GiB
  PE Size               4.00 MiB
  Total PE              25597
  Alloc PE / Size       15360 / 60.00 GiB
  Free  PE / Size       10237 / 39.99 GiB
  VG UUID               5DtUCI-dMDj-FVjX-dPZH-wCgf-o5Y1-e04kG5
  
// 再扩容逻辑卷正常按上面扩容就好

?

?

?

?

将数据快速转移到相同的卷组


?

// 将一个新的分区扩容卷组,sdb4 扩容 sdb[123] 的 vg0 卷组;
// 通过 pvmove 命令转移空间数据 sdb1 --> sdb4
// 使用 vgreduce 将损坏的磁盘或者分区从卷组中移除 --> sdb1
// 使用 pvremove 将坏的磁盘或者分区从系统中删除(可选) --> sdb1
// 使用一些工具修复磁盘或者手动更换损坏磁盘
vgextend vg0 /dev/sdb4
pvs
  PV         VG         Fmt  Attr PSize   PFree 
  /dev/sda3  vg_centos6 lvm2 a--  147.80g     0 
  /dev/sdb1  vg0        lvm2 a--   10.00g 12.00m
  /dev/sdb2  vg0        lvm2 a--   20.01g     0 
  /dev/sdb3  vg0        lvm2 a--   30.00g     0 
  /dev/sdb4  vg0        lvm2 a--   39.98g 39.98g
pvmove /dev/sdb1 /dev/sdb4
vgreduce vg0 /dev/sdb1
  Removed "/dev/sdb1" from volume group "vg0"
pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped
pvs
  PV         VG         Fmt  Attr PSize   PFree 
  /dev/sda3  vg_centos6 lvm2 a--  147.80g     0 
  /dev/sdb2  vg0        lvm2 a--   20.01g     0 
  /dev/sdb3  vg0        lvm2 a--   30.00g     0 
  /dev/sdb4  vg0        lvm2 a--   39.98g 29.99g
  
// 挂载逻辑卷,并查看内容,没有问题

?

?

删除整个逻辑卷


?

// 先卸载mount挂载
// 删除 /etc/fstab 中配置的开机自动挂载
// lvremove 删除逻辑卷
// vgremove 删除卷组
// pvremove 删除物理卷
// 使用fdisk更改硬盘物理分区

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读