1. 程式人生 > 其它 >多塊磁碟合併成卷組並建立LVM,掛載到同一目錄

多塊磁碟合併成卷組並建立LVM,掛載到同一目錄

LVM實現將2塊磁碟總空間“合二為一”並掛載到同一目錄

需求場景

將MySQL主機的218T的資料盤空間全部“合併”後掛載到/mysql_data目錄下,要求檔案系統格式化為xfs;已有關鍵資訊梳理如下:

  • 需要掛載的資料盤
    • /dev/sdb:18T
    • /dev/sdc:18T
  • 檔案系統:xfs
  • 掛載目錄:/mysql_data

作業系統環境

  • OS版本:CentOS 7.5
  • lvm版本:lvm2

實現方法

要想實現此需求,可使用LVM邏輯卷管理來做到。

實現步驟

磁碟分割槽--此步非必須

在將磁碟或者磁碟分割槽用作物理卷(PV)之前,需要對其進行初始化工作,即進行磁碟分割槽操作;因磁碟分割槽需求大於2T,所以fdisk

無法實現管理,需要使用parted命令來做磁碟分割槽管理;parted的詳細使用方法請參考博主之前的部落格:使用parted命令對磁碟進行分割槽

  • /dev/sdb
# 新建/dev/sdb的磁碟標籤型別為GPT
[root@MYSQL-SERVER ~]# parted /dev/sdb mklabel gpt 
# 將/dev/sdb整個空間分給同一個分割槽
[root@MYSQL-SERVER ~]# parted /dev/sdb mkpart primary 0 100%
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I                                                          
Information: You may need to update /etc/fstab.
  • /dev/sdc
# 新建/dev/sdc的磁碟標籤型別為GPT
[root@MYSQL-SERVER ~]# parted /dev/sdc mklabel gpt 
# 將/dev/sdc整個空間分給同一個分割槽
[root@MYSQL-SERVER ~]# parted /dev/sdc mkpart primary 0 100%
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I                                                          
Information: You may need to update /etc/fstab.

建立物理卷

建立物理卷的命令為pvcreate;利用該命令將希望新增到卷組的所有分割槽或磁碟建立為物理卷;
將分割槽/dev/sdb1/dev/sdc1分割槽建立為物理卷:

[root@MYSQL-SERVER ~]#  pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@MYSQL-SERVER ~]#  pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.

建立卷組

建立卷組的命令為vgcreate;用此命令將使用pvcreate建立的物理卷建立為一個完整的卷組;
將物理卷/dev/sdb1建立為一個名為vgmysql的卷組:

[root@MYSQL-SERVER ~]#  vgcreate vgmysql /dev/sdb1
  Volume group "vgmysql" successfully created

新增新的物理捲到卷組中

此步即為將2塊磁碟空間合二為一的關鍵步驟;當系統中新增了磁碟或新建了物理卷,而要將其新增到已有卷組時,就可使用vgextend命令;
將物理卷/dev/sdc1新增到vgmysql卷組中:

[root@MYSQL-SERVER ~]#  vgextend vgmysql /dev/sdc1
  Volume group "vgmysql" successfully extended

檢視卷組

檢視卷組用vgs

[root@MYSQL-SERVER ~]#  vgs
  VG      #PV #LV #SN Attr   VSize   VFree 
  vgmysql   2   0   0 wz--n-  32.74t 32.74t
  vgroot    1   4   0 wz--n- 264.00g  4.00m

從vgs命令的回顯結果來看,卷組vgmysql成功新增,並且其總空間為兩塊物理磁碟的總大小(因換算單位不同,所以不是精確的38T)。

建立邏輯卷

建立邏輯卷的命令為lvcreate;用此命令將在使用vgcreate建立的卷組上建立邏輯卷;
在卷組vgmysql上建立一個名為lvmysql的邏輯卷,起大小為32.7T

  • -n:指定邏輯卷名
  • -L:指定邏輯卷大小
[root@MYSQL-SERVER ~]#  lvcreate -L 32.7T -n lvmysql vgmysql 
  Rounding up size to full physical extent 32.70 TiB
  Logical volume "lvmysql" created.

格式化邏輯卷

將建立的lvmysql邏輯卷格式化為xfs

[root@MYSQL-SERVER ~]#  mkfs -t xfs /dev/vgmysql/lvmysql
meta-data=/dev/vgmysql/lvmysql   isize=512    agcount=33, agsize=268435328 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=8777839616, imaxpct=5
         =                       sunit=64     swidth=64 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

建立掛載目錄並掛載

  • 建立掛載目錄/mysql_data
[root@MYSQL-SERVER ~]#  mkdir /mysql_data
  • 掛載
[root@MYSQL-SERVER ~]#  mount /dev/vgmysql/lvmysql /mysql_data/
  • 做開機自動掛載
echo '
/dev/mapper/vgmysql-lvmysql /mysql_data xfs     defaults 0 0' >/etc/fstab

檢視是否掛載成功

[root@MYSQL-SERVER ~]#  df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vgroot-lv_root    40G  1.8G   36G   5% /
devtmpfs                     126G     0  126G   0% /dev
tmpfs                        126G     0  126G   0% /dev/shm
tmpfs                        126G  1.1M  126G   1% /run
tmpfs                        126G     0  126G   0% /sys/fs/cgroup
/dev/sda1                    976M  197M  713M  22% /boot
/dev/mapper/vgroot-lv_var     59G  197M   56G   1% /var
/dev/mapper/vgroot-lv_home    99G  5.6G   88G   6% /home
tmpfs                         26G     0   26G   0% /run/user/0
/dev/mapper/vgmysql-lvmysql   33T   34M   33T   1% /mysql_data
[root@MYSQL-SERVER ~]#  lsblk 
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                   8:0    0 446.1G  0 disk 
├─sda1                8:1    0     1G  0 part /boot
├─sda2                8:2    0   264G  0 part 
├─vgroot-lv_root  253:0    0    40G  0 lvm  /
├─vgroot-lv_swap  253:1    0    64G  0 lvm  [SWAP]
├─vgroot-lv_var   253:2    0    60G  0 lvm  /var
└─vgroot-lv_home  253:3    0   100G  0 lvm  /home
└─sda3                8:3    0    64M  0 part 
sdb                   8:16   0  16.4T  0 disk 
└─sdb1                8:17   0  16.4T  0 part 
  └─vgmysql-lvmysql 253:4    0  32.7T  0 lvm  /mysql_data
sdc                   8:32   0  16.4T  0 disk 
└─sdc1                8:33   0  16.4T  0 part 
  └─vgmysql-lvmysql 253:4    0  32.7T  0 lvm  /mysql_data
nvme0n1             259:0    0   1.5T  0 disk 
[root@MYSQL-SERVER ~]#  blkid 
/dev/sda1: UUID="5a350fc9-d3d2-44c7-9574-30bf9a9dd0d3" TYPE="ext4" 
/dev/sda2: UUID="Sum0Mm-6ShR-6ajh-cYQO-091c-r7QI-zfbDpm" TYPE="LVM2_member" 
/dev/sda3: UUID="2019-05-24-11-39-22-00" LABEL="config-2" TYPE="iso9660" 
/dev/mapper/vgroot-lv_root: UUID="df07731a-5e56-4cc3-95ab-b723b5979332" TYPE="ext4" 
/dev/mapper/vgroot-lv_swap: UUID="7b5cd64d-d316-430d-8a83-aca89c4708d2" TYPE="swap" 
/dev/mapper/vgroot-lv_var: UUID="025cb128-de8f-4bca-8206-5c1601e79715" TYPE="ext4" 
/dev/mapper/vgroot-lv_home: UUID="7bd155b6-9200-442a-a61a-32076c0e4b7e" TYPE="ext4" 
/dev/sdc1: UUID="rWbWuV-nt59-ba72-VJrL-RTM2-EJJt-VVkhZF" TYPE="LVM2_member" PARTLABEL="sdc1" PARTUUID="355eb343-f2c9-4f13-9477-52b0fb267d5f" 
/dev/sdb1: UUID="yfQk1G-nlN8-OOYu-nptl-cg2d-rD0L-uBFnhW" TYPE="LVM2_member" PARTLABEL="sdb1" PARTUUID="19db36ba-ec9c-4f35-9b29-b7bd2155f0dd" 
/dev/mapper/vgmysql-lvmysql: UUID="67cda45d-4282-4346-8be1-e4ec375c2892" TYPE="xfs" 
[root@MYSQL-SERVER ~]#  tail -1 /etc/fstab 
/dev/mapper/vgmysql-lvmysql /mysql_data xfs     defaults 0 0