【Linux基础】- lvm逻辑卷设置

2020-12-02  本文已影响0人  醉红尘丶

环境

[root@initnode ~]# fdisk -l|grep "Disk /dev/sd*"
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdc: 3221 MB, 3221225472 bytes, 6291456 sectors
Disk /dev/sde: 1073 MB, 1073741824 bytes, 2097152 sectors
Disk /dev/sdd: 1073 MB, 1073741824 bytes, 2097152 sectors

1 创建并挂载lvm卷

1.1 创建PV

# 创建物理卷
[root@initnode ~]# pvcreate /dev/sdb /dev/sde /dev/sdd
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sde" successfully created.
  Physical volume "/dev/sdd" successfully created.

# 检查,创建了一个2G的和2个1G的
[root@initnode ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
  /dev/sdb          lvm2 ---    2.00g 2.00g
  /dev/sdd          lvm2 ---    1.00g 1.00g
  /dev/sde          lvm2 ---    1.00g 1.00g

可以使用 pvdisplaypvdisplay -v 查看详细信息

1.2 创建VG

# 创建vg
[root@initnode ~]# vgcreate mytestvg /dev/sdb /dev/sde /dev/sdd
  Volume group "mytestvg" successfully created

# 查看
[root@initnode ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  mytestvg   3   0   0 wz--n-  <3.99g <3.99g

可以使用 vgdisplayvgdisplay -v 查看详细信息

1.3 创建LV

# 从mytestvg中创建一个名称为lvtest的lvm卷,大小为2G
[root@initnode ~]# lvcreate -n lvtest -L 2G mytestvg
  Logical volume "lvtest" created.

# 查看
[root@initnode ~]# lvs
  LV     VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos   -wi-ao---- <15.05g
  swap   centos   -wi-ao----  <3.95g
  lvtest mytestvg -wi-a-----   2.00g

可以使用 lvdisplaylvdisplay -v 查看详细信息

1.4 格式化

# 格式化新建的卷
[root@initnode ~]# mkfs.xfs /dev/mytestvg/lvtest
meta-data=/dev/mytestvg/lvtest   isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524288, 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

1.5 挂载

# 挂载
[root@initnode ~]# mount /dev/mytestvg/lvtest /u01

# 查看
[root@initnode ~]# df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/centos-root       16G  4.2G   11G  28% /
devtmpfs                     475M     0  475M   0% /dev
tmpfs                        487M     0  487M   0% /dev/shm
tmpfs                        487M  7.5M  479M   2% /run
tmpfs                        487M     0  487M   0% /sys/fs/cgroup
/dev/sda1                   1014M  133M  882M  14% /boot
tmpfs                         98M     0   98M   0% /run/user/0
/dev/mapper/mytestvg-lvtest  2.0G   33M  2.0G   2% /u01

1.6 设置开机启动

# 注意边的地址是 /dev/mytestvg/lvtest,而不是 /dev/mapper/mytestvg-lvtest
echo "/dev/mytestvg/lvtest /u01                   xfs     defaults        0 0" >> /etc/fstab

2.在线扩容与缩容

在线扩容与缩容并不会影响到已有文件

2.1 扩容

假设还需要添加3G空间上去

2.1.1 查看当前剩余空间

[root@initnode ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  mytestvg   3   1   0 wz--n-  <3.99g <1.99g # 当前剩余 1.99g
[root@initnode ~]# pvs
  PV         VG       Fmt  Attr PSize    PFree   
  /dev/sda2  centos   lvm2 a--   <19.00g       0 
  /dev/sdb   mytestvg lvm2 a--    <2.00g       0 
  /dev/sdd   mytestvg lvm2 a--  1020.00m 1020.00m
  /dev/sde   mytestvg lvm2 a--  1020.00m 1016.00m

2.1.2 创建pv

# 创建pv
[root@initnode ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
[root@initnode ~]# pvs
  PV         VG       Fmt  Attr PSize    PFree   
  /dev/sda2  centos   lvm2 a--   <19.00g       0 
  /dev/sdb   mytestvg lvm2 a--    <2.00g       0 
  /dev/sdc            lvm2 ---     3.00g    3.00g # 新添加,但并不在 vg组内
  /dev/sdd   mytestvg lvm2 a--  1020.00m 1020.00m
  /dev/sde   mytestvg lvm2 a--  1020.00m 1016.00m

2.1.2 添加进vg

[root@initnode ~]# vgextend mytestvg /dev/sdc
  Volume group "mytestvg" successfully extended
[root@initnode ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree
  centos     1   2   0 wz--n- <19.00g    0 
  mytestvg   4   1   0 wz--n-   6.98g 4.98g # 当前剩余 4.98g了

2.1.3 扩lv

# 源lv大小为2g
[root@initnode ~]# lvs
  LV     VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos   -wi-ao---- <15.05g
  swap   centos   -wi-ao----  <3.95g
  lvtest mytestvg -wi-ao----   2.00g

# 对原lv扩大3g
[root@initnode ~]# lvextend -L +3G /dev/mytestvg/lvtest
  Size of logical volume mytestvg/lvtest changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
  Logical volume mytestvg/lvtest successfully resized.

# lv已扩为5g
[root@initnode ~]# lvs
  LV     VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos   -wi-ao---- <15.05g
  swap   centos   -wi-ao----  <3.95g
  lvtest mytestvg -wi-ao----   5.00g

# 文件系统还没有扩
[root@initnode ~]# df -h
/dev/mapper/mytestvg-lvtest  2.0G   33M  2.0G   2% /u01

2.1.4 扩文件系统

[root@initnode ~]# xfs_growfs /dev/mytestvg/lvtest
meta-data=/dev/mapper/mytestvg-lvtest isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 524288 to 1310720

# 当前已变为5g
[root@initnode ~]# df -h
/dev/mapper/mytestvg-lvtest  5.0G   33M  5.0G   1% /u01

ext4 文件扩容使用 resize2fs /dev/mytestvg/lvtest

2.2 缩容

缩容一般都有一定风险,且缩容需要 umount,假设当前缩小到2G
xfs不支持直接缩容,ext4可如下操作

resize2fs /dev/mytestvg/lvtest 2G #可能需要执行下提示的检查

lvreduce -L -3G /dev/mytestvg/lvtest

mount /u01

2.2.1 vg缩容

[root@initnode ~]# umount /u01

[root@initnode ~]# vgreduce mytestvg /dev/sdd
  Removed "/dev/sdd" from volume group "mytestvg"

[root@initnode ~]# pvs
  PV         VG       Fmt  Attr PSize    PFree
  /dev/sda2  centos   lvm2 a--   <19.00g       0
  /dev/sdb   mytestvg lvm2 a--    <2.00g       0
  /dev/sdc   mytestvg lvm2 a--    <3.00g 1012.00m
  /dev/sdd            lvm2 ---     1.00g    1.00g # 这能看出
  /dev/sde   mytestvg lvm2 a--  1020.00m       0

[root@initnode ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree
  centos     1   2   0 wz--n- <19.00g       0
  mytestvg   3   1   0 wz--n-  <5.99g 1012.00m # 只有1G

2.2.2 pv清楚不再vg内的盘

[root@initnode ~]# pvremove /dev/sdd
  Labels on physical volume "/dev/sdd" successfully wiped.

2.2.2 盘挂载回去

不影响当前文件

mount /u01

3.删除pv、vg、lv

# 卸载挂载
[root@initnode ~]# umount /u01
[root@initnode ~]# lvremove /dev/mytestvg/lvtest
Do you really want to remove active logical volume mytestvg/lvtest? [y/n]: y
  Logical volume "lvtest" successfully removed

# 卸载vg
[root@initnode ~]# vgremove mytestvg
  Volume group "mytestvg" successfully removed

# 卸载pv
[root@initnode ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
  /dev/sdb          lvm2 ---    2.00g 2.00g
  /dev/sdc          lvm2 ---    3.00g 3.00g
  /dev/sde          lvm2 ---    1.00g 1.00g
[root@initnode ~]# pvremove /dev/sdb /dev/sdc /dev/sde
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.
  Labels on physical volume "/dev/sde" successfully wiped.

# 因为已删除,再次挂载就不成功了
[root@initnode ~]# mount /u01
mount: special device /dev/mytestvg/lvtest does not exist
上一篇 下一篇

猜你喜欢

热点阅读