使用Linux lvm

概覽

此次是要給服務器的安裝一個MySQL數據庫系統,須要一個比較大的空間,並且要能後期靈活增長空間,因此把已有的硬盤作成lvm是最好的選擇。邏輯卷是一個很好用的磁盤管理工具,就像它的名字,你操做的是邏輯卷而不是直接使用物理磁盤。咱們能夠方便的調整邏輯卷的大小而不會損壞數據,隨時把新磁盤加入邏輯卷管理來拓展存儲空間。lvm的結構以下圖所示 html

iamge
如圖所示,磁盤和磁盤的分區能夠加入一個物理卷(PV),一個或者多個物理卷組成一個卷組(VG),在卷組的基礎上能夠建立邏輯卷(LV)。 本例中有12塊4T大小的硬盤,咱們把這12塊硬盤都加入lvm,切分出其中的一部分建立lv並掛在到/app。大體過程是:

  • 給每一個硬盤分一個區
  • 把全部的分區建立爲物理卷
  • 把物理卷加入卷組
  • 在卷組的基礎上建立邏輯卷
  • 格式化邏輯卷
  • 掛載邏輯卷

操做過程

安裝parted

使用parted給硬盤分區,由於是大於2T的硬盤,因此咱們採用parted劃分硬盤而不是傳統的fdisk。大部分Linux系統會有parted的安裝,若是沒有請使用各自的方法安裝,此處僅示範centos和Ubuntu的安裝linux

$ 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)  
複製代碼

查看已有的分區信息centos

(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,把全部空間分到一個分區裏了。若是是一個新硬盤須要建立分區表和分區:bash

(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個分區都加入物理卷app

$ 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刪除物理卷ui

$ sudo pvremove /dev/sdb1
複製代碼

加入卷組

把建好的12個物理卷加入一個卷組,這是咱們的業務需求,把12個物理卷加到一個卷組中,你也能夠根據本身的需求靈活配置。下列命令就是把12個物理卷加入一個名稱爲vgapp的卷組裏。spa

$ 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
相關文章
相關標籤/搜索