Linux 下使用 LVM 快速合并磁盘进行扩容操作

前言

这两天给公司搭建素材管理系统,根据公司现有业务量,还不需要使用到非常专业的服务器,就使用一台普通机器来做素材管理,平时也作为公司内部开发部门的测试服务器,系统采用CentOS 7,采购硬盘的时候采购了2块2T的机械盘作为存储盘,根据业务划分,开发部门并不需要2T这么大的空间,而素材管理2T又有些不够,所以这里就打算使用LVM将两块数据盘进行合并,之后划分三分之一给开发部门,剩下的给素材管理做存储。

配置

还是说一说现在的机器配置吧

主板使用的是 七彩虹iH110-HD Pro V20 mini-itx (17x17)

内存使用 威刚8G DDR4 2400

系统盘使用的使用 联想 SL700 NGFF MSATA 250G 插主板上的M.2接口

数据盘 希捷 酷鱼2T 硬盘2块

CPU使用 G4560

机箱使用Tt Core V1

电源 tt Smart 500W

这里选择小机箱是方便放进机柜里面,装好之后的图

server.jpg - 大小: 987.64 KB - 尺寸: 1300 x 1064 - 点击打开新窗口浏览全图

操作

一切准备就绪之后就开始进行磁盘的合并了,LVM的使用非常简单,这里根据我司的业务需要,需要对两块磁盘进行合并,然后再进行划分,我们按照步骤一步步操作,只要按照顺序来就行了。

首先切换到root账户下面,我这里在根目录创建两个文件夹方便后面进行挂载,目录名称为 Development 和 MediaFiles

[root@localhost /]# mkdir Development MediaFiles
[root@localhost /]# ll
总用量 20
lrwxrwxrwx.   1 root root    7 Nov 26 17:38 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Nov 26 18:00 boot
drwxr-xr-x.  20 root root 3280 Nov 27 11:59 dev
drwxr-xr-x.   2 root root    6 Nov 27 14:35 Development
drwxr-xr-x.  83 root root 8192 Nov 26 19:14 etc
drwxr-xr-x.   2 root root    6 Apr 11  2018 home
lrwxrwxrwx.   1 root root    7 Nov 26 17:38 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Nov 26 17:38 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Apr 11  2018 media
drwxr-xr-x.   2 root root    6 Nov 27 14:35 MediaFiles
drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
drwxr-xr-x.   3 root root   16 Nov 26 17:39 opt
dr-xr-xr-x. 147 root root    0 Nov 26 19:01 proc
dr-xr-x---.   4 root root  180 Nov 26 19:04 root
drwxr-xr-x.  27 root root  860 Nov 27 10:55 run
lrwxrwxrwx.   1 root root    8 Nov 26 17:38 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root    0 Nov 26 19:01 sys
drwxrwxrwt.  10 root root 4096 Nov 27 14:35 tmp
drwxr-xr-x.  13 root root  155 Nov 26 17:38 usr
drwxr-xr-x.  20 root root  282 Nov 26 18:00 var
[root@localhost /]# 
执行fdisk -l 查看磁盘信息
[root@localhost /]# fdisk -l

磁盘 /dev/sda:2000.4 GB, 2000398934016 字节,3907029168 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节


磁盘 /dev/sdb:2000.4 GB, 2000398934016 字节,3907029168 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节


磁盘 /dev/sdc:240.1 GB, 240057409536 字节,468862128 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009fc44

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1   *        2048     2099199     1048576   83  Linux
/dev/sdc2         2099200   468860927   233380864   8e  Linux LVM

磁盘 /dev/mapper/centos-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:8321 MB, 8321499136 字节,16252928 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-home:177.0 GB, 176966074368 字节,345636864 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@localhost /]# 
我这里的数据盘是 /dev/sda 和 /dev/sdb, 也就是即将合并的两个磁盘,使用pvcreate命令创建物理卷,pvscan命令查看创建之后的列表信息
[root@localhost /]# pvcreate /dev/sda
  Physical volume "/dev/sda" successfully created.
[root@localhost /]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
[root@localhost /]# pvscan 
  PV /dev/sdc2   VG centos          lvm2 [<222.57 GiB / 4.00 MiB free]
  PV /dev/sdb                       lvm2 [<1.82 TiB]
  PV /dev/sda                       lvm2 [<1.82 TiB]
  Total: 3 [<3.86 TiB] / in use: 1 [<222.57 GiB] / in no VG: 2 [<3.64 TiB]
[root@localhost /]# 
可以看到创建的物理卷实际大小为1.8T,并不是2.0T,其中 /dev/sdc2是安装系统的时候自行选择的lvm模式,这个不用管,如果想对系统盘进行扩容也可以使用类似方法。

接着创建卷组,如果不知道什么叫卷组,可以去找找LVM的资料,介绍的很详细。创建组的命令是vgcreate,我这里给卷组命名为 MYLVM,使用/dev/sda 创建卷组(格式 vgcreate [自定义LVM名称] [设备]),然后使用vgextend 命令把 /dev/sdb扩展上去(格式 vgextend [自定义vg名称] [设备])

[root@localhost /]# vgcreate MYLVM /dev/sda
  Volume group "MYLVM" successfully created
[root@localhost /]# vgextend MYLVM /dev/sdb
  Volume group "MYLVM" successfully extended
[root@localhost /]#
这个使用可以用vgscan查看创建的卷组信息
[root@localhost /]# vgscan 
  Reading volume groups from cache.
  Found volume group "MYLVM" using metadata type lvm2
  Found volume group "centos" using metadata type lvm2
[root@localhost /]#
接下来创建逻辑卷,使用 lvcreate 命令,可以理解为分区,根据业务需要,我这里把卷组分为两个区,一个是给开发部门,一个给设计部门做素材存储,命令的使用方法是 lvcreate -L[自定义分区大小] -n[自定义分区名称] [vg名称]
[root@localhost /]# lvcreate -L800G -n DEV_DATA MYLVM
  Wiping ext4 signature on /dev/MYLVM/DEV_DATA.
  Logical volume "DEV_DATA" created.
[root@localhost /]#
这里首先创建了一个800G的分区出来,这个时候我们不要着急创建另外一个分区,使用 pvscan 命令先查看一下剩下的空间还有多少,以便充分利用空间
[root@localhost /]# pvscan 
  PV /dev/sda    VG MYLVM           lvm2 [<1.82 TiB / <1.04 TiB free]
  PV /dev/sdb    VG MYLVM           lvm2 [<1.82 TiB / <1.82 TiB free]
  PV /dev/sdc2   VG centos          lvm2 [<222.57 GiB / 4.00 MiB free]
  Total: 3 [<3.86 TiB] / in use: 3 [<3.86 TiB] / in no VG: 0 [0   ]
[root@localhost /]#
可以看到两块磁盘剩余空间总和为2.86T,但是实际上空间并没有2.86T那么大,如果万一创建错了,可以使用 lvremove 进行删除操作
[root@localhost /]# lvremove /dev/MYLVM/MEDIA_DATA 
Do you really want to remove active logical volume MYLVM/MEDIA_DATA? [y/n]: y
  Logical volume "MEDIA_DATA" successfully removed
[root@localhost /]# 
创建分区会占用一些空间,所以创建2.85T空间差不多,如果实在需要精确可以换算成G
[root@localhost /]# lvcreate -L2.85T -n MEDIA_DATA MYLVM
  Rounding up size to full physical extent 2.85 TiB
  Logical volume "MEDIA_DATA" created.
[root@localhost /]# pvscan 
  PV /dev/sda    VG MYLVM           lvm2 [<1.82 TiB / <7.63 GiB free]
  PV /dev/sdb    VG MYLVM           lvm2 [<1.82 TiB / 0    free]
  PV /dev/sdc2   VG centos          lvm2 [<222.57 GiB / 4.00 MiB free]
  Total: 3 [<3.86 TiB] / in use: 3 [<3.86 TiB] / in no VG: 0 [0   ]
[root@localhost /]#
创建完后使用lvscan查看一下分区信息
[root@localhost /]# lvscan 
  ACTIVE            '/dev/MYLVM/DEV_DATA' [800.00 GiB] inherit
  ACTIVE            '/dev/MYLVM/MEDIA_DATA' [2.85 TiB] inherit
  ACTIVE            '/dev/centos/swap' [7.75 GiB] inherit
  ACTIVE            '/dev/centos/home' [164.81 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit
[root@localhost /]# 
然后需要对分区进行格式化,我这里使用ext4格式
[root@localhost /]# mkfs.ext4 /dev/MYLVM/DEV_DATA 
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成                            
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
52428800 inodes, 209715200 blocks
10485760 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2357198848
6400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成     

[root@localhost /]# mkfs.ext4 /dev/MYLVM/MEDIA_DATA 
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成                            
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
191266816 inodes, 765041664 blocks
38252083 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2912944128
23348 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成       

[root@localhost /]#
这个时候就可以进行挂载了
[root@localhost /]# mount /dev/MYLVM/DEV_DATA /Development/
[root@localhost /]# mount /dev/MYLVM/MEDIA_DATA /MediaFiles/
使用 df -lh 命令可以查看详细信息
[root@localhost /]# df -lh
文件系统                      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root        50G  1.3G   49G    3% /
devtmpfs                      3.8G     0  3.8G    0% /dev
tmpfs                         3.8G     0  3.8G    0% /dev/shm
tmpfs                         3.8G  9.1M  3.8G    1% /run
tmpfs                         3.8G     0  3.8G    0% /sys/fs/cgroup
/dev/sdc1                    1014M  146M  869M   15% /boot
/dev/mapper/centos-home       165G   33M  165G    1% /home
tmpfs                         771M     0  771M    0% /run/user/0
/dev/mapper/MYLVM-DEV_DATA    788G   73M  748G    1% /Development
/dev/mapper/MYLVM-MEDIA_DATA  2.9T   89M  2.7T    1% /MediaFiles
[root@localhost /]#
可以看到分区已经挂载成功,如果需要删除,只需要倒叙执行对应的删除操作就可以了,顺序如下

umount (卸载)

lvremove (删除逻辑卷)

vgremove (删除卷组)

pvremove (删除物理卷)

为了让系统在启动的时候能够自动挂载分区,需要在 /etc/fstab 写入如下配置

/dev/MYLVM/DEV_DATA /Development                ext4    defaults        0 0
/dev/MYLVM/MEDIA_DATA /MediaFiles               ext4    defaults        0 0

最后

LVM实际上有很多实用的命令,比如修改调整卷组和逻辑盘的容量,重命名等操作都比较简单。

本文链接:https://www.92ez.com/?action=show&id=23475
!!! 转载请先联系non3gov@gmail.com授权并在显著位置注明作者和原文链接 !!! 小黑屋
提示:技术文章有一定的时效性,请先确认是否适用你当前的系统环境。

上一篇: 手指肌腱断裂无法修复是一种怎样的体验

访客评论
目前还没有人评论,您发表点看法?
发表评论

评论内容 (必填):