阅读 359

使用Linux lvm

概览

这次是要给服务器的安装一个MySQL数据库系统,需要一个比较大的空间,而且要能后期灵活增加空间,所以把已有的硬盘做成lvm是最好的选择。逻辑卷是一个很好用的磁盘管理工具,就像它的名字,你操作的是逻辑卷而不是直接使用物理磁盘。我们可以方便的调整逻辑卷的大小而不会损坏数据,随时把新磁盘加入逻辑卷管理来拓展存储空间。lvm的结构如下图所示

iamge
如图所示,磁盘和磁盘的分区可以加入一个物理卷(PV),一个或者多个物理卷组成一个卷组(VG),在卷组的基础上可以创建逻辑卷(LV)。 本例中有12块4T大小的硬盘,我们把这12块硬盘都加入lvm,切分出其中的一部分创建lv并挂在到/app。大致过程是:

  • 给每个硬盘分一个区
  • 把所有的分区创建为物理卷
  • 把物理卷加入卷组
  • 在卷组的基础上创建逻辑卷
  • 格式化逻辑卷
  • 挂载逻辑卷

操作过程

安装parted

使用parted给硬盘分区,因为是大于2T的硬盘,所以我们采用parted划分硬盘而不是传统的fdisk。大部分Linux系统会有parted的安装,如果没有请使用各自的方法安装,此处仅示范centos和Ubuntu的安装

$ sudo apt install parted
复制代码
$ sudo yum install parted
复制代码

给硬盘分区

我们这次把整块硬盘作一个分区全部加入一个物理卷中(或许物理磁盘不分区也能直接加入物理卷,但我没有试验成功,所以这次我把整个磁盘分到一个分区中),使用parted进行分区

$ sudo parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)  
复制代码

查看已有的分区信息

(parted) print                                                            
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  4001GB  4001GB               sdb1
复制代码

这是一个分好的硬盘分区信息一共4T,分区表类型是的gpt,把所有空间分到一个分区里了。如果是一个新硬盘需要创建分区表和分区:

(parted) mkpart
Partition name?  []? sdb1                                                   
File system type?  [ext2]? xfs                                           
Start? 0                                                                  
End? 4001G
Warning: The resulting partition is not properly aligned for best performance.  
Ignore/Cancel? i  
(parted) quit
复制代码

退出保存分区信息,我们这里应为业务需要把整个盘放到一个分区里了,当然你也可以分多个区,计算好开始和结束的区间就行。后面11块硬盘相同的操作方式做好分区准备,盘符大致:sdb1, sdc1,sdd1...sdm1

把分区加入物理卷

把12个分区都加入物理卷

$ sudo pvcreate /dev/sdb1
$ sudo pvcreate /dev/sdc1
...
$ sudo pvcreate /dev/sdm1
复制代码

创建完物理卷后,运行pvdisplay查看一下建好的物理卷,执行完pvdisplay后显示的结果大致如下,我只显示了一个pv的。

$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               <3.64 TiB / not usable 3.80 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              953861
  Free PE               0
  Allocated PE          953861
  PV UUID               70p52P-TafB-YkwL-YG8P-Bo0x-3C0i-coKJMu
复制代码

当然如果有问题,也可以使用 pvremove删除物理卷

$ sudo pvremove /dev/sdb1
复制代码

加入卷组

把建好的12个物理卷加入一个卷组,这是我们的业务需求,把12个物理卷加到一个卷组中,你也可以根据自己的需求灵活配置。下列命令就是把12个物理卷加入一个名称为vgapp的卷组里。

$ sudo vgcreate vgapp /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1 /dev/sdm1
复制代码

使用vgdisplay查看已建的卷组

$ sudo vgdisplay
  --- Volume group ---
  VG Name               vgapp
  System ID             
  Format                lvm2
  Metadata Areas        12
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                12
  Act PV                12
  VG Size               43.66 TiB
  PE Size               4.00 MiB
  Total PE              11446332
  Alloc PE / Size       0 / 0
  Free  PE / Size       6203452 / 23.66 TiB
  VG UUID               Kc9ybM-8ZTw-OOPY-opX5-Azgc-dbgB-HMCeIs
复制代码

从输出中,我们可以看见卷组的使用量/总量。只要在这个卷组中还有可用空间,我们就可以随意创建逻辑卷。 如果卷组分配不合理也可以使用vgremove删除卷组重新建

$ sudo vgremove vgapp
复制代码

创建逻辑卷

上一步我们已经建好了一个名称为vgapp的卷组,现在我们就可以在这个卷则上建一个逻辑卷了。我们需要用到大概20T空间在名为vgapp的卷组上建立一个名为lvapp的逻辑卷.

sudo lvcreate -L 20T -n lvapp  vgapp
复制代码

这里的是创建了一个默认的Linear逻辑卷,其实还支持其他的方式建立逻辑卷,比如条带化卷(类似raid0),镜像卷(类似raid1)或者它们的集中组合,这些我以后再研究。创建完成后使用lvdisplay查看刚建好的逻辑卷

$ sudo lvdisplay
复制代码

结果如下

$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/vgapp/lvapp
  LV Name                lvapp
  VG Name                vgapp
  LV UUID                1CpWwd-b4Wf-fdqP-gMPO-1Jb8-0w0h-idvXBo
  LV Write Access        read/write
  LV Creation host, time xjwlmq-16f-c07-sev-hw2288v3-02u10, 2019-02-28 13:25:34 +0800
  LV Status              available
  # open                 1
  LV Size                20.00 TiB
  Current LE             5242880
  Segments               6
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
复制代码

使用逻辑卷

逻辑卷建好了就可以把它格式化并挂在到系统的某个目录开始使用了

$ sudo mkfs.xfs /dev/vgapp/lvapp
$ sudo mkdir /app
$ sudo mount /dev/vgapp/lvapp /app/
复制代码

挂载完成后就可以看看我们的劳动成果

$ sudo df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/sda2                1.0T  1.2G 1023G   1% /
devtmpfs                  63G     0   63G   0% /dev
tmpfs                     63G     0   63G   0% /dev/shm
tmpfs                     63G  553M   63G   1% /run
tmpfs                     63G     0   63G   0% /sys/fs/cgroup
/dev/sda1                509M  128M  381M  26% /boot
/dev/mapper/vgapp-lvapp   20T   33M   20T   1% /app
tmpfs                     13G     0   13G   0% /run/user/1001

复制代码

其中20T那个/app目录挂载的就是我们刚建的逻辑卷。最后别忘记把这放到/etc/fstab中实现开机挂载

$ sudo cat /etc/fatab

#
# /etc/fstab
# Created by anaconda on Sun Oct 14 10:36:44 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=a7f90806-f11c-41ca-8210-2a758d38aed8 /                       xfs     defaults        0 0
UUID=ca13fb4a-64a6-4a2b-9847-c309145ae3b4 /boot                   xfs     defaults        0 0
/dev/vgapp/lvapp			  /app		   	  xfs	  defaults	  1 2
复制代码

后记

lvm的功能强大的很,以后可以多研究一下,除了支持类似raid的逻辑卷外,还有快照等功能。

参考文档

  • https://linux.cn/article-3218-1.html
  • https://linux.cn/article-9536-1.html
  • https://www.computerhope.com/unix/parted.htm
  • https://blog.csdn.net/Man_In_The_Night/article/details/86575198
  • http://www.cnblogs.com/onlybobby/p/7018788.html
关注下面的标签,发现更多相似文章
评论