概覽
這次是要給伺服器的安裝一個MySQL資料庫系統,需要一個比較大的空間,而且要能後期靈活增加空間,所以把已有的硬碟做成lvm是最好的選擇。邏輯卷是一個很好用的磁碟管理工具,就像它的名字,你操作的是邏輯卷而不是直接使用物理磁碟。我們可以方便的調整邏輯卷的大小而不會損壞資料,隨時把新磁碟加入邏輯卷管理來擴充儲存空間。lvm的結構如下圖所示
如圖所示,磁碟和磁碟的分割槽可以加入一個物理卷(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