本章的內容包含如下幾大部分(因爲做者水平有限,錯誤之處請留言謝謝!):node
(1)什麼是LVM,PV,PE,VG,LV。centos
(2)LVM的實際操做安全
(3)怎樣放大LV的容量微信
(4)怎樣縮小LV的容量app
(5)怎樣刪除邏輯卷ide
LVM的定義:中文翻譯就是邏輯卷管理器,能夠整合多個物理分區在一塊兒,讓這些分區看起來像是一個磁盤同樣,並且,還能夠在未來其餘的物理分區或將其從這個lvm管理的磁盤當中刪除,能夠彈性調整文件系統的容量。spa
PV:指的就是物理卷,咱們實際分區要調整系統標識符成爲8e(LVM的標識符)而後在通過pvcreat的命令轉化成LVM最底層的物理卷(PV)。翻譯
PE:指的就是物理擴展塊,它是LVM中最小的存儲快,默認使用4MB的PE塊,咱們的文件數據寫入都是寫入PE來處理的,簡單來講,PE就像是文件系統裏面的block大小。orm
VG:就是將許多PV整合成VG,一個VG最大的容量可達256GB,與PE有關。blog
LV:最終的VG會被切成LV,這個LV就是最後能夠被格式化使用的分區。
PV命令:
pvcreat:將物理分區新建成爲PV。
pvscan:查詢目前系統裏面任何具備PV的磁盤。
pvdisplay:顯示出目前系統上面的PV狀態
pvremove:將PV屬性刪除,讓該分區不具備PV屬性。
VG命令:
vgcreat:新建VG
vgscan:查找系統上面是否存在VG。
vgdisply:顯示目前系統上面的VG狀態。
vgxtend:在VG內增長額外的pv。
vgreduce:在VG內刪除PV。
vgchange:刪除一個VG。
LV命令:
lvcreat:新建LV
lvscan:查找系統上面是否存在LV。
lvdisply:顯示目前系統上面的LV狀態。
lvxtend:在LV裏面增長的LV狀態。
lvreduce:在LV裏面減小容量。
lvmove:刪除一個LV。
lvresize:對LV進行容量大小的調整。
實際上只看這些概念的東西是很不容易理解的,反正我是不理解,舉個列子就很清楚了:
小明想吃饅頭,家裏的麪粉不夠,因而從隔壁老王家,老李家,老張家,分別借來一些麪粉,準備蒸饅頭吃,首先須要把麪粉(物理卷pv)揉成一個大面團(卷組VG),而後把這些麪糰分割成一個個小饅頭(邏輯卷LV)並且每一個小饅頭的重量必須是每勺麪粉(PE)的倍數。
相信舉了這個例子以後你們都已經很明白了他們的含義以及它們之間的關係了把,那麼它們是怎樣實現的那,你們看圖就一目瞭然了:
(2)LVM的實際操做
1:新建一個磁盤,分出4個區,每一個分區容量1G,
2:先將前三個建成一個VG,在把最後一個分區增長到VG裏面VG的名稱設置爲vbirdvg,且PE的大小爲16MB,
3:將所有的VG容量丟給LV,LV的名稱設置爲vbirdlv,最後將lv,格式化爲ext4,且掛載在/mnt/lvm中。
第一步:
由圖可知我新建了sdc,而且分了4個物理區,我先用pvscan查看一下,系統上面有沒有pv,而後在把四個分區新建成pv格式。
下面用pvdisplay這個命令顯示出更詳細的每一個PV信息,這裏只列出一個,
第二步:
[root@centos6 ~]# vgcreate -s 16M vbirdvg /dev/sdc{1,2,3} 將/dev/sdc123新建成爲一個VG,且指定PE爲16M,vgcreate [-s N[mgt]]VG名稱PV名稱,-s後面接pe的大小, 單位是mgt,均可以
Volume group "vbirdvg" successfully created
[root@centos6 ~]# vgscan 查看系統上面是否有VG存在。
Reading all physical volumes. This may take a while... 閱讀全部物理卷。這可能須要一段時間
Found volume group "vbirdvg" using metadata type lvm2 使用元數據類型lvm2找到卷組「vbirdvg」
[root@centos6 ~]# pvscan 查詢系統上具備的PV的磁盤,發現sdc4沒被用掉哈
PV /dev/sdc1 VG vbirdvg lvm2 [1.00 GiB / 1.00 GiB free]
PV /dev/sdc2 VG vbirdvg lvm2 [1.00 GiB / 1.00 GiB free]
PV /dev/sdc3 VG vbirdvg lvm2 [1.00 GiB / 1.00 GiB free]
PV /dev/sdc4 lvm2 [1.01 GiB]
Total: 4 [4.01 GiB] / in use: 3 [3.00 GiB] / in no VG: 1 [1.01 GiB]
[root@centos6 ~]# vgdisplay 顯示目前系統上面的VG狀態,
--- Volume group ---
VG Name vbirdvg
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size 3.00 GiB
PE Size 16.00 MiB
Total PE 192
Alloc PE / Size 0 / 0
Free PE / Size 192 / 3.00 GiB
VG UUID GyaL2t-ANXT-J3gY-uawe-wnTX-Qx57-0M1u7F
[root@centos6 ~]# vgextend vbirdvg /dev/sdc4 將sdc4的容量增長到VG中
Volume group "vbirdvg" successfully extended
[root@centos6 ~]# vgdisplay 顯示系統上面的VG狀態。
--- Volume group ---
VG Name vbirdvg
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 4
Act PV 4
VG Size 4.00 GiB
PE Size 16.00 MiB
Total PE 256 PE的數量由原來的192變爲256個,
Alloc PE / Size 0 / 0
Free PE / Size 256 / 4.00 GiB
VG UUID GyaL2t-ANXT-J3gY-uawe-wnTX-Qx57-0M1u7F
[root@centos6 ~]# lvcreate -l 256 -n vbirdlv vbirdvg 將整個vbirdvg分配給vbirdlv,要注意PE總共256個, lvcreate [-L N[mgt] ] [-n LV名稱] VG名稱,-L後面接容量,-n後面接LV的名稱-l接pe個數
Logical volume "vbirdlv" created.
[root@centos6 ~]# lvdisplay 顯示系統上LV的狀態
--- Logical volume ---
LV Path /dev/vbirdvg/vbirdlv
LV Name vbirdlv
VG Name vbirdvg
LV UUID m7gbpi-1Y1t-GfJb-KMRx-xaXB-QSlx-IOLeaf
LV Write Access read/write
LV Creation host, time centos6.magedu.com, 2018-03-11 02:34:03 +0800
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 256
Segments 4
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
[root@centos6 ~]# mkfs -t ext4 /dev/vbirdvg/vbirdlv 格式化
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@centos6 ~]# mkdir /mnt/lvm 建立掛載點
[root@centos6 ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm 掛載
[root@centos6 ~]# df 查看
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 20511356 4161156 15301624 22% /
tmpfs 1019176 76 1019100 1% /dev/shm
/dev/sda5 20511356 45000 19417780 1% /app
/dev/sda1 194241 40350 143651 22% /boot
/dev/sdb4 505396 408 478484 1% /mnt/sdb4
/dev/mapper/vbirdvg-vbirdlv
3997376 8184 3779480 1% /mnt/lvm
總結:
你們能看到這裏,說明尚未懵,上面的操做都是我一步步寫的,雖然比較長,可是很是詳細,難度不大,就是要記住這些亂七八糟的命令,就行了,沒什麼其餘辦法。
(3)放大LV的容量
[root@localhost /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 20G 3.3G 17G 17% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.2M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 139M 59M 71% /boot
/dev/mapper/centos-app 20G 84M 20G 1% /app
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 24K 199M 1% /run/user/1000
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/storage-vo 772M 2.5M 730M 1% /baiyijie 邏輯卷vo如今的容量
[root@localhost /]# umount /baiyijie 擴展前必定要先卸載設備和掛載點
[root@localhost /]# df -h 查看發現已經卸載
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 20G 3.3G 17G 17% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.2M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 139M 59M 71% /boot
/dev/mapper/centos-app 20G 84M 20G 1% /app
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 24K 199M 1% /run/user/1000
tmpfs 199M 0 199M 0% /run/user/0
[root@localhost /]# lvextend -L 2000M /dev/storage/vo 把邏輯卷vo擴展至2000M.
Size of logical volume storage/vo changed from 800.00 MiB (200 extents) to 1.95 GiB (500 extents).
Logical volume storage/vo successfully resized.
[root@localhost /]# e2fsck -f /dev/storage/vo 檢查磁盤完整性,並重置硬盤容量。
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/storage/vo: 11/200000 files (0.0% non-contiguous), 31901/819200 blocks
[root@localhost /]# resize2fs /dev/storage/vo 經過resize2fs將文件系統的容量確實增長!
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 2048000 (1k) blocks.
The filesystem on /dev/storage/vo is now 2048000 blocks long.
[root@localhost /]# mount /dev/storage/vo /baiyijie 掛載
[root@localhost /]# df -h 查看
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 20G 3.3G 17G 17% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.2M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 139M 59M 71% /boot
/dev/mapper/centos-app 20G 84M 20G 1% /app
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 24K 199M 1% /run/user/1000
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/storage-vo 1.9G 2.9M 1.8G 1% /baiyijie 能夠看到確實增長了哈哈
(4)縮小LV的容量
現實企業中通常不多會縮lv的容量的,若是有,說明你在的整個企業很low,仍是趕忙走吧!
總結:在LVM中邏輯卷的擴容和所容都須要先取消邏輯卷與目錄的掛載關聯,擴容操做是先擴容後檢查文件系統的完整性,而縮容操做是爲了保證數據的安全,須要先檢查文件系統完整性在縮容。
(5)刪除邏輯卷
[root@localhost /]# umount /baiyijie 先取消邏輯卷與目錄的掛載關聯,這裏沒有寫入到配置文件中就再也不演示
[root@localhost /]# lvremove /dev/storage/vo 刪除邏輯卷設備,須要輸入y來確認
Do you really want to remove active logical volume storage/vo? [y/n]: y 確認
Logical volume "vo" successfully removed
[root@localhost /]# vgremove storage 刪除卷組,只寫卷組名稱就能夠,不須要設備的絕對路徑,下面也是
Volume group "storage" successfully removed
[root@localhost /]# pvremove /dev/sdc /dev/sdd 刪除物理卷設備
Labels on physical volume "/dev/sdc" successfully wiped.
Labels on physical volume "/dev/sdd" successfully wiped.
總結:
在LVM中的刪除順序不是隨意的,要先刪除邏輯卷,卷組,而後是物理卷,切記。