一. 前言
在试运行期间,实际拿到的数据远大于预估值,文件存储服务器无法满足工程导入。而磁盘扩容方案,是得到两个更大的不同的磁盘,而系统原本设计上并未针对此情况有过专门的应对(会拆分文件夹单独存储),现需要将两个磁盘合并挂载到同一个目录下。
至于其中的技术,在之前并不是特别了解,在网上查阅了一些资料,尝试了各种方案,都不是很理想,特别是新的磁盘都大于2T。
直到我看到这篇文章,解决了当下问题,转载留存,对内容进行了视觉上加工处理,便于日后查看。
原文链接:
二. 使用parted方式格式化磁盘并且创建LVM
0)准备
查看磁盘情况:
fdisk -l
先格式化磁盘
/dev/vdb
使用parted开始分区:
运行命令 parted /dev/vdb
GNU Parted 3.1
使用 /dev/vdb
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted)
mklabel gpt
将MBR分区形式转为GPT分区形式
运行命令 mkpart primary ext4
划分一个采用ext4文件系统的主分区,并设置分区的开始位置和结束位置。如果一个数据盘只分一个分区,则
运行命令 mkpart primary ext4 0 -1
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? i
(parted)
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5906GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 17.4kB 5906GB 5906GB primary
(parted)
使用toggle 更改硬盘类型
toggle 1 lvm
运行命令 quit,退出 parted 操作。
运行命令 partprobe,使系统重读分区表安装LVM,及创建
yum -y install lvm2
1)创建PV
运行命令
pvcreate /dev/vdb1
pvscan
显示PV信息,因为只创建一个PV,所以只有一个
运行命令 pvdisplay
“/dev/vdb1” is a new physical volume of “5.37 TiB”
— NEW Physical volume —
PV Name /dev/vdb1
VG Name
PV Size 5.37 TiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID fFQn0B-u43M-0cHI-NW7C-v04j-GgIc-jANPzh
好了,现在将一块普通磁盘改变成LVM里最基本物理磁盘。下面我们来创建VG(磁盘管理组)。
2)创建VG(卷组),来管理PV
运行命令 vgscan
因为之前没有创建过VG,所以扫描没有显示。
运行命令 vgcreate vgdata /dev/vdb1
创建vgdata并将/dev/vdb1加入
运行命令 vgcreate vgdata /dev/vdb1 -s 8M
-s 是指定PE大小,默认是4M (这里成功的来报道,我的未成功!)
运行命令 vgdisplay
显示VG信息
— 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 5.37 TiB
PE Size 4.00 MiB
Total PE 1407999
Alloc PE / Size 0 / 0
Free PE / Size 1407999 / 5.37 TiB
VG UUID ZvCXQI-CgCN-9cal-SHLm-zGsy-2Jpk-LvTI89
再次扫描,发现上面创建的“vgdata”卷组VG了。
3)创建LV
有了卷组我们就可以创建LV,LV是我们真正用来写数据的,比如新建一个文本等。
运行命令 lvscan
扫描LV,之前没有建立过LV,什么也没显示
运行命令 lvcreate -L 5500G -n lvData vgdata
创建LV,-L 指定LV大小为5500G,-n LV名字方便区分,vgdata 加入到vgdata组,上面创建的。
PS:这里需要注意,在实际执行中,磁盘大小可能会有出入,这里根据实际情况稍作调整即可。
运行命令 lvdisplay
— Logical volume —
LV Path /dev/vgdata/lvData
LV Name lvData
VG Name vgdata
LV UUID sxF9Tc-4RHe-wRXl-AtI5-qYYK-wGMj-QX5KTo
LV Write Access read/write
LV Creation host, time iZj6c6y9bsrhe25j0wi24mZ, 2019-01-02 20:36:28 +0800
LV Status available
# open 0
LV Size 5.37 TiB
Current LE 1407744
Segments 1
Allocation inherit
Read ahead sectors auto
currently set to 8192
Block device 252:0
4)格式化LV及挂载
格式化lvData为ext4格式
运行命令 mkfs.ext4 /dev/vgdata/lvData
创建挂载点
运行命令 mkdir
挂载到LVM下
运行命令 mount /dev/vgdata/lvData /LVM
运行命令 df -h
显示挂载成功
开机自动挂载
echo "/dev/vgdata/lvData /LVM ext4 defaults 0 0" >> /etc/fstab
三、两块磁盘挂载指向一个文件夹LVM
1)扩展VG卷组
刚才我们已经把磁盘/dev/vdb格式化了,现在我们需要格式化磁盘/dev/vdc
前面的操作和上面一样,先使用parted方式格式化磁盘并且创建LVM,这里就不跟上面一样那么详细了。
执行命令:
parted /dev/vdc
mklabel gpt
mkpart primary ext4 0 -1
toggle 1 lvm
quit
partprobe
pvcreate /dev/vdc1 //普通磁盘转换成PV
pvs
vgextend vgdata /dev/vdc1 //加入VG组,vgdata要加入VG组名,/dev/sdc1新PV
vgdisplay //查看VG卷组详细信息
— Volume group —
VG Name vgdata
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 10.74 TiB
PE Size 4.00 MiB
Total PE 2815998
Alloc PE / Size 1407744 / 5.37 TiB
Free PE / Size 1408254 / 5.37 TiB
VG UUID ZvCXQI-CgCN-9cal-SHLm-zGsy-2Jpk-LvTI89
2)扩展LV、缩小LV逻辑卷
扩展LV
lvextend -L +5500G /dev/vgdata/lvData
缩小LV
lvextend --size +1781G /dev/vgdata/lvData
LV扩容完系统还没有识别,需要用resize2fs来更新,系统才能识别到。
执行命令
resize2fs /dev/vgdata/lvData
df -h
至此合并多块大于2T的磁盘到一个分区的操作已经完成。