使用LVM動態管理4T以上硬盤

背景

線上新加7臺服務器,每臺除了100G系統盤外,還掛載了4*4T硬盤,準備用LVM做成一塊16T邏輯盤。此處記錄一下。

 

步驟如下

 

說明

安裝Parted分區工具,Parted支持2T以上的硬盤,fdisk分區工具最大支持2T硬盤。MBR分區格式最大支持2T空間;gpt分區格式可以支持大於2T。

yum install parted

 

1、查看軟件及磁盤信息

 

首先查看軟件是否安裝:

[root@q-bi-01 ~]# rpm -qa |grep lvm

lvm2-2.02.177-4.el7.x86_64

lvm2-libs-2.02.177-4.el7.x86_64

 

查看磁盤情況

[root@q-bi-05 ~]# fdisk -l

Disk /dev/vda: 107.4 GB, 107374182400 bytes, 209715200 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x0005fc9a

Device Boot Start End Blocks Id System

/dev/vda1 * 2048 209715199 104856576 83 Linux

 

Disk /dev/vdb: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

 

Disk /dev/vdc: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

 

Disk /dev/vdd: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

 

Disk /dev/vde: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

 

2、使用Parted進行分區

 

[root@q-bi-03 ~]# parted /dev/vdb

GNU Parted 3.1

Using /dev/vdb

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel

New disk label type? gpt

(parted) mkpart

Partition name? []?

File system type? [ext2]? xfs

Start? 0T

End? 4T

(parted) p

Model: Virtio Block Device (virtblk)

Disk /dev/vdb: 4001GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 1049kB 4001GB 4001GB

(parted) set 1 lvm on

(parted) p

Model: Virtio Block Device (virtblk)

Disk /dev/vdb: 4001GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 1049kB 4001GB 4001GB lvm

(parted) q

Information: You may need to update /etc/fstab.

 

現在讓我們來解釋一下操作:

mklabel將磁盤轉換爲gpt分區,因爲MBR分區無法支持TB級硬盤(具體請自行查閱,parted當然也支持TB級以下的操作)

mkpart將轉換好的gpt磁盤進行分區,需要提供文件系統類型、開始點、結束點。

輸入p 打印出剛纔才做後生成的分區。

set 1 lvm on 是將num爲1的分區,設置爲LVM ,這樣才能添加到vm卷組裏

 

3、創建PV、VG、LV

 

PV

把/dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1設置爲PV

pvcreate /dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1

 

查看已有PV

pvdisplay

 

VG

創建名稱爲bi_vg的卷組,包含如下PV:/dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1

vgcreate bi_vg /dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1

 

查看vg

vgdisplay

 

LV

創建1個16T的邏輯卷bi_lv從卷組bi_vg

lvcreate –L 16T –n bi_lv bi_vg

 

把卷組bi_vg所有的空間創建一個邏輯卷bi_lv

lvcreate -l 100%VG -n bi_lv bi_vg

 

把卷組bi_vg剩餘的空間創建一個邏輯卷bi_lv

lvcreate -l 100%FREE -n bi_lv bi_vg

 

此命令類似上面一個

lvcreate --name bi_lv -l 100%FREE bi_vg

以上4種命令可以任選其一。

 

查看Lv

lvdisplay

 

創建了一個名字爲bi_lv,容量大小是16T的分區,其中:-L:指定LV的大小 -n:指定LV的名。bi_vg:表示從這個VG中劃分LV;

 

擴容

 

把剩餘的空間都加到/dev/bi_vg/lv_bdata邏輯卷中。

lvextend -l 100%VG /dev/bi_vg/lv_bdata

 

使擴容生效

xfs_growfs /dev/bi_vg/lv_bdata

 

resize2fs命令 針對的是ext2ext3ext4文件系統

xfs_growfs命令 針對的是xfs文件系統

 

4、LV格式化及掛載

 

格式化邏輯卷

mkfs.xfs /dev/bi_vg/bi_lv

創建掛載點

mkdir –p /data

掛載磁盤

mount /dev/bi_vg/bi_lv /data

×××圖片_20180912174259.png

 

如果要在系統啓動的時候啓動LV,可以寫入fstab中。

/dev/bi_vg/bi_lv /data xfs noatime,defaults 0 0

 

5、擴容當前分區

此情況適合服務器上快沒有空間了,又新加一塊磁盤,這有點扯遠了。

 

pvcreate /dev/hda6

vgdisplay

#查看當前已經存在的VG信息,以存在VG:VolGroup00爲例

 

vgextend VolGroup00 /dev/hda6

#擴展VolGroup00

lvdisplay

#查看已經存在的LV信息,以存在LV:LogVol01爲例

lvextend –L +1G /dev/VolGroup00/LogVol01

 

#擴展LV. ext2/ext3/ext4文件系統的調整命令是resize2fs

 

resize2fs /dev/VolGroup00/LogVol01

#執行該重設大小,對於當前正在使用的LogVol01有效

df –h

#查看掛載情況,已經擴容

 

6、 擴展知識

 

LVM基本術語

LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上建立文件系統。首先我們討論以下幾個LVM術語:

物理存儲介質(The physical media):這裏指系統的存儲設備:硬盤,如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。

物理卷(physical volume:物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。

卷組(Volume Group:LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。

邏輯卷(logical volume:LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。

簡單來說就是:

PV:是物理的磁盤分區

VG:LVM中的物理的磁盤分區,也就是PV,必須加入VG,可以將VG理解爲一個倉庫或者是幾個大的硬盤。

LV:也就是從VG中劃分的邏輯分區

如下圖所示PV、VG、LV三者關係:

clip_image001

當我們在安裝系統的時候,由於沒有合理分配分區空間,在後續維護過程中,發現有些分區空間不夠使用,而有的分區空間卻有很多剩餘空間。如果這些分區在裝系統的時候使用了lvm(前提是這些分區要是lvm邏輯卷分區),那麼就可以輕鬆進行擴容或縮容!不同文件系統類型所對應的創建、檢查、調整命令不同,下面就針對xfs和ext2/3/4文件系統的lvm分區空間的擴容和縮容的操作做一記錄:

------------------------------------------------------------------------------------------

特別注意的是:

resize2fs命令 針對的是ext2、ext3、ext4文件系統

xfs_growfs命令 針對的是xfs文件系統

------------------------------------------------------------------------------------------

1)ext2/ext3/ext4文件系統的調整命令是resize2fs(增大和減小都支持)

lvextend -L 120G /dev/mapper/centos-home //增大至120G

lvextend -L +20G /dev/mapper/centos-home //增加20G

lvreduce -L 50G /dev/mapper/centos-home //減小至50G

lvreduce -L -8G /dev/mapper/centos-home //減小8G

resize2fs /dev/mapper/centos-home //執行調整

 

2)xfs文件系統的調整命令是xfs_growfs(只支持增大)

lvextend -L 120G /dev/mapper/centos-home //增大至120G

lvextend -L +20G /dev/mapper/centos-home //增加20G

xfs_growfs /dev/mapper/centos-home //執行調整

 

如果是XFS文件系統,使用了resize2fs這個命令,則會報錯如下:

[root@my-cdh-01 mnt]# resize2fs /dev/bi_vg/bi_lv

resize2fs 1.42.9 (28-Dec-2013)

resize2fs: Bad magic number in super-block 當嘗試打開 /dev/bi_vg/bi_lv 時

找不到有效的文件系統超級塊.

就是說:xfs文件系統只支持增大分區空間的情況,不支持減小的情況(切記!!!!!)。

硬要減小的話,只能在減小後將邏輯分區重新通過mkfs.xfs命令重新格式化才能掛載上,這樣的話這個邏輯分區上原來的數據就丟失了。如果有重要文件,那就歇菜嘍~~~

 

[root@localhost ~]# umount /home/umount: /home: device is busy.(In some cases useful info about processes that usethe device is found by lsof(8) or fuser(1))

提示無法卸載,則是有進程佔用/home,使用如下命令來終止佔用進程:

[root@localhost ~]# fuser -m -k /home

/home: 1409 1519ce 1531e 1532e 1533e 1534e 1535e 1536e 1537e 1538e 1539e 1541e 1543e 1544e 1545e 1546e 1547e 1548e 1549e 1550e 1601m

再次卸載home分區就成功了。

[root@localhost ~]# umount /home/

-k 表示自動把霸佔home分區的進程kill掉!

如果你不是很明確是否要殺死所有霸佔設備的程序,還可以加一個-i 參數,這樣每殺死一個程序前,都會詢問!(即fuser -m -v -i -k /home)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章