Centos 7.5利用LVM實現動態擴容大小
Centos 7.5 利用LVM實現動態擴容大小
作業系統:Centos 7.5 64位
說明:當有在作業系統時發現磁碟空間不足時,可以通過增加磁碟空間大小來滿足,但是以哪種方式來增加可能有不同方法,現在針對作業系統在安裝採用LVM方式來動態調整磁碟空間大小,
知識點解釋:
LVM是邏輯盤卷管理(Logical VolumeManager)的簡稱,它是Linux環境下對磁碟分割槽進行管理的一種機制,LVM是建立在硬碟和分割槽之上的一個邏輯層,來提高磁碟分割槽管理的靈活性。通過LVM系統管理員可以輕鬆管理磁碟分割槽,如:將若干個磁碟分割槽連線為一個整塊的卷組(volumegroup),形成一個儲存池。管理員可以在卷組上隨意建立邏輯卷組(logicalvolumes),並進一步在邏輯卷組上建立檔案系統。管理員通過LVM可以方便的調整儲存卷組的大小,並且可以對磁碟儲存按照組的方式進行命名、管理和分配
Linux的LVM非常強大,可以在生產執行系統上面直接線上擴充套件硬碟分割槽,可以把分割槽umount以後收縮分割槽大小,還可以在系統執行過程中把一個分割槽從一塊硬碟搬到另一塊硬碟上面去等等,簡直就像變魔術,而且這一切都可以在一個繁忙執行的系統上面直接操作,不會對你的系統執行產生任何影響,很安全。
LVM使用有侷限性。雖然能很方便的擴容和縮容磁碟的空間(擴容磁碟大小,檔案不丟失),但是一旦出現問題,資料丟失,想要恢復資料就有點困難!
三步:
①建立一個物理分割槽-搞成物理卷②製作成一個卷組③劃分成邏輯卷
1.如果在安裝系統時選擇是以LVM方式安裝的話,可以通過已經安裝好後系統磁碟查詢
[root@localhost ~]# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root 70G 9.4G 61G 14% /
devtmpfs 4.8G 0 4.8G 0% /dev
tmpfs 4.9G 0 4.9G 0% /dev/shm
tmpfs 4.9G 9.5M 4.8G 1% /run
tmpfs 4.9G 0 4.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 171M 844M 17% /boot
/dev/mapper/centos-home
tmpfs 984M 12K 984M 1% /run/user/42
tmpfs 984M 0 984M 0% /run/user/0
說明:centos-root 和centos-home 是通過LVM方式來配置的
2、使用df -T -h命令檢視作業系統的檔案型別
[root@localhost ~]# df -T -h
檔案系統 型別 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root xfs 70G 9.4G 61G 14% /
devtmpfs devtmpfs 4.8G 0 4.8G 0% /dev
tmpfs tmpfs 4.9G 0 4.9G 0% /dev/shm
tmpfs tmpfs 4.9G 9.5M 4.8G 1% /run
tmpfs tmpfs 4.9G 0 4.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 171M 844M 17% /boot
/dev/mapper/centos-home xfs 27G 37M 27G 1% /home
tmpfs tmpfs 984M 12K 984M 1% /run/user/42
tmpfs tmpfs 984M 0 984M 0% /run/user/0
說明:通過查詢發現作業系統的檔案格式是:xfs
3.檢視卷組名稱及卷組使用情況 vgdisplay
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name centos --VG名稱
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 98.99 GiB --總共的空間大小
PE Size 4.00 MiB
Total PE 25342
Alloc PE / Size 25341 / <98.99 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID oCJsUm-wF9P-a0Pc-rLvl-aCa1-0Inr-psWPzn
4.檢視當前邏輯卷的空間狀態,如下內容:/ 70G、/home 26G、swap 2G
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID 0F9zrD-AfsY-teOk-OLqB-ZKa7-6fcZ-aVQ0VM
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-09-14 17:08:41 +0800
LV Status available
# open 1
LV Size 70.00 GiB
Current LE 17920
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID v64Mg2-gDRG-UGoe-InX6-qqsG-GuiD-eRrcs8
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-09-14 17:08:42 +0800
LV Status available
# open 1
LV Size <26.99 GiB
Current LE 6909
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID 0le8V4-P7XQ-jtC7-7xtY-wKUv-dcNe-mJrB4T
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-09-14 17:08:43 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
5.現在感覺/ 70G不夠用,想擴容增加300G,新插入一塊300G硬碟;用‘fdisk -l’檢視
[root@localhost ~]# fdisk -l
磁碟 /dev/sda:107.4 GB, 107374182400 位元組,209715200 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x0004c640
裝置 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 209707007 103803904 8e Linux LVM
磁碟 /dev/sdb:322.1 GB, 322122547200 位元組,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟 /dev/mapper/centos-root:75.2 GB, 75161927680 位元組,146800640 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟 /dev/mapper/centos-swap:2147 MB, 2147483648 位元組,4194304 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟 /dev/mapper/centos-home:29.0 GB, 28978446336 位元組,56598528 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
[root@localhost ~]# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root 70G 9.4G 61G 14% /
devtmpfs 4.8G 0 4.8G 0% /dev
tmpfs 4.9G 0 4.9G 0% /dev/shm
tmpfs 4.9G 9.5M 4.8G 1% /run
tmpfs 4.9G 0 4.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 171M 844M 17% /boot
/dev/mapper/centos-home 27G 37M 27G 1% /home
tmpfs 984M 12K 984M 1% /run/user/42
tmpfs 984M 0 984M 0% /run/user/0
6、格式化/dev/sdb磁碟
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁碟識別符號 0xbe0b32e5 建立新的 DOS 磁碟標籤。
命令(輸入 m 獲取幫助):p
磁碟 /dev/sdb:322.1 GB, 322122547200 位元組,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0xbe0b32e5
裝置 Boot Start End Blocks Id System
命令(輸入 m 獲取幫助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分割槽號 (1-4,預設 1):
起始 扇區 (2048-629145599,預設為 2048):
將使用預設值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-629145599,預設為 629145599):
將使用預設值 629145599
分割槽 1 已設定為 Linux 型別,大小設為 300 GiB
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁碟。
7、將 /dev/sdb配置為LVM格式
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):t
已選擇分割槽 1
Hex 程式碼(輸入 L 列出所有程式碼):l
Hex 程式碼(輸入 L 列出所有程式碼):8e
已將分割槽“Linux”的型別更改為“Linux LVM”
命令(輸入 m 獲取幫助):p
磁碟 /dev/sdb:322.1 GB, 322122547200 位元組,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0xbe0b32e5
裝置 Boot Start End Blocks Id System
/dev/sdb1 2048 629145599 314571776 8e Linux LVM
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁碟。
8、查詢配置為LVM格式後結果如下:
[root@localhost ~]# fdisk -l
磁碟 /dev/sda:107.4 GB, 107374182400 位元組,209715200 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x0004c640
裝置 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 209707007 103803904 8e Linux LVM
磁碟 /dev/sdb:322.1 GB, 322122547200 位元組,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0xbe0b32e5
裝置 Boot Start End Blocks Id System
/dev/sdb1 2048 629145599 314571776 8e Linux LVM
磁碟 /dev/mapper/centos-root:75.2 GB, 75161927680 位元組,146800640 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟 /dev/mapper/centos-swap:2147 MB, 2147483648 位元組,4194304 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟 /dev/mapper/centos-home:29.0 GB, 28978446336 位元組,56598528 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
9.將新加的分割槽 /dev/sdb1 建立為物理卷
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
10.給卷組‘centos ’擴容,將物理卷 /dev/sdb1 擴充套件至‘centos ’卷組
[root@localhost ~]# vgextend centos /dev/sdb1
Volume group "centos" successfully extended
10.此時卷組‘centos ’有300G空餘空間,及 /dev/sdb1,將其全部擴充套件至 /home
root@localhost ~]# lvextend -l +100%FREE /dev/mapper/centos-home
Size of logical volume centos/home changed from <26.99 GiB (6909 extents) to <326.99 GiB (83709 extents).
Logical volume centos/home successfully resized.
11.發現擴充套件錯分割槽了,把第10步的增加空間給縮小回去到原來值,26G
[root@localhost ~]# lvreduce -L -300G /dev/mapper/centos-home
WARNING: Reducing active and open logical volume to <26.99 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce centos/home? [y/n]: yes
Size of logical volume centos/home changed from <326.99 GiB (83709 extents) to <26.99 GiB (6909 extents).
Logical volume centos/home successfully resized.
12.重新把PV中的300G多餘空間分配給LV為root
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/centos-root
Size of logical volume centos/root changed from 70.00 GiB (17920 extents) to 370.00 GiB (94720 extents).
Logical volume centos/root successfully resized.
13.此時300G磁碟雖已擴充套件至 /root,但並沒寫入檔案系統;進入 /etc/fstab 確認 /root 檔案系統--->xfs檔案系統
[root@localhost ~]# more /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Sep 14 17:08: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
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=28137713-1148-49bc-b74d-7ac9bdf0bc1b /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
14、用xfs_growfs 命令把檔案寫入系統中,使擴容生效
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=4587520 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=18350080, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=8960, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 18350080 to 96993280
說明:若使用ext4檔案格式的,是使用resize2fs命令來生效
15.檢視擴容後的硬碟空間小,如下內容則說明,已實現擴容。大功告成!
[root@localhost ~]# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root 370G 9.4G 361G 3% /
devtmpfs 4.8G 0 4.8G 0% /dev
tmpfs 4.9G 0 4.9G 0% /dev/shm
tmpfs 4.9G 9.5M 4.8G 1% /run
tmpfs 4.9G 0 4.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 171M 844M 17% /boot
/dev/mapper/centos-home 27G 37M 27G 1% /home
tmpfs 984M 12K 984M 1% /run/user/42
tmpfs 984M 0 984M 0% /run/user/0
本次擴容指令彙總:
1.建立分割槽 #fdisk /dev/sdb
2.建立物理卷 #pvcreat /dev/sdb1
3.檢視卷組名稱及使用情況 #vgdisplay
4.將物理卷擴充套件到卷組 #vgextend cl /dev/sdb1 (此處‘cl’是卷組名稱)
5.將卷組中空閒空間擴充套件到 /home #lvextend -l +100%FREE /dev/mapper/cl-home
6.重新整理檔案系統是擴容生效 xfs_growfs /dev/mapper/centos-root
7.若是ext4檔案格式使用擴容生效 #resize2fs /dev/mapper/centos-home
相關LVM知識點如下:
這裡總結下擴充套件與縮小LV的實施順序:
擴充套件LV
1、解除安裝LV
命令:umount “掛載目錄”
2、擴充套件LV
命令:lvextend -L +500m /dev/lv00/lv01 或者 lvresize -L 5G /dev/lv00/lv01
lvextend 表示增加500M,lvresize表示增加到5G,是調整後的容量。
3、檢查檔案系統
命令:fsck -f /dev/vg00/lv01
4、重建檔案系統
命令:resize2fs /dev/lv00/lv01
這一步很關鍵,重建檔案系統不用擔心LV的資料會丟失,當然,以防萬一,也可以先備份下LV裡的資料。
5、掛載LV
命令:mount /dev/lv001/lv01 /opt
縮小LV
縮小LV需要事先知道LV中的資料容量大小,縮小容量值不應超過剩餘空間容量,而且要知道減少LV容量後的新大小。可以通過lvscan來檢視LV容量,通過vgdisplay來檢視剩餘容量。
1、解除安裝LV
命令:umount “掛載目錄”
2、檢查檔案系統
命令:fsck -f /dev/lv00/lv01
3、調整LV大小並重建檔案系統
命令:resize2fs /dev/vg00/lv01 2G
4、減小LV容量
命令:lvreduce -L -3G /dev/vg00/lv01
5、掛載LV
命令:mount /dev/lv001/lv01 /opt