如何扩展aws主机上的磁盘空间

目的就是:在现有的EC2主机上磁盘空间不足,如何扩展aws主机上的磁盘空间

Overview of Logic Volume Manager(LVM)

其中看到了LVM(逻辑卷组管理)。使用逻辑卷可以很方便的扩展分区的大小。

LVM的分层结构

  • Physical Volume(PV):This can be created on a whole physical disk (think /dev/sda) or a Linux partition.(物理卷–磁盘分区)
  • Volume Group (VG): This is made up of at least one or more physical volumes.(逻辑卷组)
  • Logical Volume (LV): This is sometimes referred to as the partition, it sits within a volume group and has a file system written to it.(逻辑卷)
  • File System: A file system such as ext4 will be on the logical volume.(文件系统)

一块挂载的磁盘,应该就对应这一个 Physical Volume。

How to increase or expand LVM

首先我们从aws中的控制台准备好新的EBS卷(create Volume),并且挂载(attached)。然后进入终端。

ubuntu@ip-172-31-31-176:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0     7:0    0   91M  1 loop /snap/core/6350
loop1     7:1    0   18M  1 loop /snap/amazon-ssm-agent/930
loop2     7:2    0 89.3M  1 loop /snap/core/6673
loop3     7:3    0 17.9M  1 loop /snap/amazon-ssm-agent/1068
loop4     7:4    0 89.4M  1 loop /snap/core/6818
xvda    202:0    0    8G  0 disk
└─xvda1 202:1    0    8G  0 part /
#########底下的为新增加的两块EBS卷#########
xvdf    202:80   0    2G  0 disk
xvdg    202:96   0    2G  0 disk

其次,我们使用 pvcreate 命令将物理硬盘(disk)初始化为物理卷(Physical Volume)。

ubuntu@ip-172-31-31-176:~$ sudo  pvcreate /dev/xvdf /dev/xvdg
  Physical volume "/dev/xvdf" successfully created.
  Physical volume "/dev/xvdg" successfully created.

使用sudo pvscan -n可以查看到可用的物理卷

ubuntu@ip-172-31-31-176:~$ sudo pvscan -n
  WARNING: only considering physical volumes in no volume group
  PV /dev/xvdf                      lvm2 [2.00 GiB]
  PV /dev/xvdg                      lvm2 [2.00 GiB]

再次使用 pvdisplay 可以看到,新增的两个“/dev/xvdf”和“/dev/xvdg” 都还不属于任何一个 Volume Group。(VG Name 为空)

ubuntu@ip-172-31-31-176:~$ sudo pvdisplay
  "/dev/xvdf" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/xvdf
  VG Name
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               Cxcn22-4gxj-eJP1-E94R-MiPs-Rrm0-a4leFY

  "/dev/xvdg" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/xvdg
  VG Name
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               giplCK-pQjh-cN66-d8Vr-J2lN-dDyp-cHdCQa

pvscan、pvcreate、pvdisplay 都是以pv开头,表示对Physical Volume 的操作

使用 vgdisplay 可以显示所有的Volume Group 组的信息。(由于没有新建任何的逻辑卷组,所以为空)

ubuntu@ip-172-31-31-176:~$ sudo vgdisplay
ubuntu@ip-172-31-31-176:~$

使用 vgcreate命令来创建Volume Group。比如新建一个名为 vgdata 的逻辑卷组,并且将物理卷/dev/xvdf添加到卷组中。

ubuntu@ip-172-31-31-176:~$ sudo vgcreate vgdata /dev/xvdf
  Volume group "vgdata" successfully created
ubuntu@ip-172-31-31-176:~$ sudo vgdisplay
  --- Volume group ---
  VG Name               vgdata
  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.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       0 / 0
  Free  PE / Size       511 / <2.00 GiB
  VG UUID               gW1oil-0JwD-YD16-BO8m-oPo5-1Fe3-tLP2rr

如何我们想动态的添加物理卷到卷组中,可以使用命令vgextend。比如,我想把刚刚初始化好的物理卷/dev/xvdg也加入到刚新建的逻辑卷组(vgdata)中。

ubuntu@ip-172-31-31-176:~$ sudo vgextend vgdata /dev/xvdg
  Volume group "vgdata" successfully extended
ubuntu@ip-172-31-31-176:~$ sudo vgdisplay
  --- Volume group ---
  VG Name               vgdata
  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               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       0 / 0
  Free  PE / Size       1022 / 3.99 GiB
  VG UUID               gW1oil-0JwD-YD16-BO8m-oPo5-1Fe3-tLP2rr

可以看到VG Size 已经扩展了一半。但是现在整个路径

这样扩展最大的好处就是,在不中断应用程序对逻辑卷的访问。整个扩展过程,对应用程序来说,完全是透明的。

现在来到了logic Volume 的操作。需要在逻辑卷组的基础上生成逻辑卷。比如:

sudo lvcreate -n lvname1 -L 512M vgdata
sudo lvcreate -n lvname2 -l 100%FREE vgdata

其中:

  • -n 表示显示的指定logic volume name;
  • -L 表示分配的大小,用M、G等度量单位;
  • -l 也表示分配的大小,但是按照百分比;
  • vgdata 表示所属的逻辑卷组

查看logic Volume 的概要信息(同理的pvs、gvs、lvs)

ubuntu@ip-172-31-31-176:~$ sudo lvs
  LV      VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvname1 vgdata -wi-a----- 512.00m
  lvname2 vgdata -wi-a-----   3.49g

创建了Logic Volume 之后,还需要对其指定File System。比如,指定为ext4的文件格式。

ubuntu@ip-172-31-31-176:~$ sudo mkfs.ext4 /dev/vgdata/lvname1
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 131072 4k blocks and 32768 inodes
Filesystem UUID: 27ee34cc-d587-45a9-8e83-1c928ea8d532
Superblock backups stored on blocks:
	32768, 98304

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

Resizing Logical Volumes and Extending Volume Groups

减少或者增加logic Volume 的容量

sudo lvreduce -L -2.5G -r /dev/vgdata/lvname2
sudo lvextend -l +100%FREE -r /dev/vgdata/lvname1

执行结果

ubuntu@ip-172-31-31-176:~$ sudo lvreduce -L -2.5G -r /dev/vgdata/lvname2
fsck from util-linux 2.31.1
/dev/mapper/vgdata-lvname2: clean, 11/228928 files, 34338/915456 blocks
resize2fs 1.44.1 (24-Mar-2018)
Resizing the filesystem on /dev/mapper/vgdata-lvname2 to 260096 (4k) blocks.
The filesystem on /dev/mapper/vgdata-lvname2 is now 260096 (4k) blocks long.

  Size of logical volume vgdata/lvname2 changed from 3.49 GiB (894 extents) to 1016.00 MiB (254 extents).
  Logical volume vgdata/lvname2 successfully resized.
ubuntu@ip-172-31-31-176:~$ sudo lvextend -l +100%FREE -r /dev/vgdata/lvname1
fsck from util-linux 2.31.1
/dev/mapper/vgdata-lvname1: clean, 11/32768 files, 6353/131072 blocks
  Size of logical volume vgdata/lvname1 changed from 512.00 MiB (128 extents) to 3.00 GiB (768 extents).
  Logical volume vgdata/lvname1 successfully resized.
resize2fs 1.44.1 (24-Mar-2018)
Resizing the filesystem on /dev/mapper/vgdata-lvname1 to 786432 (4k) blocks.
The filesystem on /dev/mapper/vgdata-lvname1 is now 786432 (4k) blocks long.

Mounting Logical Volumes on Boot and on Demand

首先得到每个Logic Volume 的UUID。使用blkid命令,(在这里我发现会做一个映射,将/dev/vgdata/lvname1 → /dev/mapper/vgdata-lvname1)

ubuntu@ip-172-31-31-176:~$ sudo blkid /dev/vgdata/lvname1
/dev/vgdata/lvname1: UUID="27ee34cc-d587-45a9-8e83-1c928ea8d532" TYPE="ext4"
ubuntu@ip-172-31-31-176:~$ sudo blkid /dev/vgdata/lvname2
/dev/vgdata/lvname2: UUID="0dbc839f-a67a-4861-afe9-37b2e627f70e" TYPE="ext4"

为每个Logic Volume 创建挂载点(我这里只挂载一个)

sudo mkdir /padata

插入对应的条目到/etc/fstab中。

LABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 0
UUID=27ee34cc-d587-45a9-8e83-1c928ea8d532       /pgdata  ext4   defaults        0 0

保存上面的文件,并且开始挂载LV

ubuntu@ip-172-31-31-176:~$ sudo mount -a
ubuntu@ip-172-31-31-176:~$ sudo mount | grep pgdata
/dev/mapper/vgdata-lvname1 on /pgdata type ext4 (rw,relatime,data=ordered)

Deleting a Logic Volume

删除一个逻辑卷之前,我们需要先确保删除Volume已经被Unmounted。然后使用 lvremove

ubuntu@ip-172-31-31-176:~$ sudo lvremove /dev/vgdata/lvname2
Do you really want to remove and DISCARD active logical volume vgdata/lvname2? [y/n]: y
  Logical volume "lvname2" successfully removed

将删除掉的空间,加到逻辑卷 lvname1上。

ubuntu@ip-172-31-31-176:~$ sudo lvextend -l+100%FREE /dev/vgdata/lvname1
  Size of logical volume vgdata/lvname1 changed from 3.00 GiB (768 extents) to 3.99 GiB (1022 extents).
  Logical volume vgdata/lvname1 successfully resized.

参考资料:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值