1. 程式人生 > >linux LVM邏輯卷管理

linux LVM邏輯卷管理

擴容 保存 抽象層 RM 備份操作 dex 準備 vgdisplay inux

什麽是LVM

LVM是邏輯卷管理(Logical Volume Manager)的簡稱,它是建立在物理存儲設備之上的一個抽象層,允許你生成邏輯存儲卷,與直接使用物理存儲在管理上相比,提供了更好靈活性。

LVM將存儲虛擬化,使用邏輯卷,你不會受限於物理磁盤的大小,另外,與硬件相關的存儲設置被其隱藏,你可以不用停止應用或卸載文件系統來調整卷大小或數據遷移.這樣可以減少操作成本.

技術分享圖片

如上圖所示:

  • 最底層是物理硬盤:/dev/sda1、/dev/sdb1、/dev/sdc1...
  • 中間層:存儲虛擬化,所有物理硬盤視為一個邏輯集合(卷組)
  • 最頂層:將卷組劃分為多個邏輯卷,邏輯卷大小可以動態調整等。

基本概念

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

  • 物理卷(PV, Physical Volume)
    物理卷就是指磁盤,磁盤分區或從邏輯上和磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有和LVM相關的管理參數。當前LVM允許你在每個物理卷上保存這個物理卷的0至2份元數據拷貝.默認為1,保存在設備的開始處.為2時,在設備結束處保存第二份備份.

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

  • 邏輯卷(LV, Logical Volume)
    LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上能建立文件系統(比如/home或/usr等)。

  • 物理卷的意義:一塊物理硬盤不能直接使用,需要經過分區、格式化等操作之後變成物理卷之後才能使用。

  • 1個卷組底層有多個物理卷。
  • 1個卷組可以創建多個邏輯卷,邏輯卷的大小可以動態調整。

比起正常的硬盤分區管理,LVM更富於彈性:

  • 使用卷組(VG),使眾多硬盤空間看起來像一個大硬盤。
  • 使用邏輯卷(LV),可以創建跨越眾多硬盤空間的分區。
  • 可以創建小的邏輯卷(LV),在空間不足時再動態調整它的大小。
  • 在調整邏輯卷(LV)大小時可以不用考慮邏輯卷在硬盤上的位置,不用擔心沒有可用的連續空間。It does not depend on the position of the LV within VG, there is no need to ensure surrounding available space.
  • 可以在線(online)對邏輯卷(LV)和卷組(VG)進行創建、刪除、調整大小等操作。LVM上的文件系統也需要重新調整大小,某些文件系統也支持這樣的在線操作。
  • 無需重新啟動服務,就可以將服務中用到的邏輯卷(LV)在線(online)/動態(live)遷移至別的硬盤上。

從零開始,給/home分配最大磁盤空間

linux系統安裝過程省略,現在的場景是系統按最小模式安裝,物理硬盤有大量空間未被格式化,目前擬將硬盤剩余空間分配給/home目錄。

前期準備:
0.1 磁盤分區情況:
fdisk -l

0.1 磁盤空間使用情況:
df -h

如果2種情況的磁盤容量不相等,則說明有磁盤未使用。可以繼續後續操作

1. 新增分區
fdisk /dev/sda
c
p
n
p
3
w

2.partprobe(or reboot)

3. 查看邏輯卷
vgdisplay

fdisk -l

4. 創建邏輯卷組
vgcreate vg_zy /dev/sda4

vgcreate -s 32M VolGroup01 /dev/sdb1

vgcreate創建卷組:
格式:vgcreate [-s  <8M|16M|...>] vg0 /dev/sdb{1,2,3...}
                -s:指定擴展塊(PE)的大小,默認為4MB;(相當與磁盤上的簇,擴展邏輯卷的基本單位。後面的值可以是8M 16M 32M 64M .....最多65532個擴展塊。
                vg0:新創建的卷組的名字。
                /dev/sdb{1,2,3...}:需要的物理卷可以寫多個;



5. 創建邏輯卷
vgs 

lvcreate -L800g -n home vg_zy

6. 建立文件系統
mkfs -t ext4 /dev/vg_zy/home

7. 查看/home目錄掛載點  df -h /home

8. 掛載存儲
mount /dev/vg_zy/home /home

9. 修改fstab配置文件實現自動掛載
df -h /home 查看
vim /etc/fstab

/dev/mapper/vg_zy-home  /home  ext4  defaults  1  2


第五列是dump備份設置。

當其值設置為1時,將允許dump備份程序備份;設置為0時,忽略備份操作;

第六列是fsck磁盤檢查設置。

其值是一個順序。當其值為0時,永遠不檢查;而 / 根目錄分區永遠都為1。其它分區從2開始,數字越小越先檢查,如果兩個分區的數字相同,則同時檢查。

將新增硬盤空間擴容給/ddhome

在此示例中,/ddhome目錄也是新建的目錄。

1.==不重啟顯示新增的磁盤信息==
ls /sys/class/scsi_host/
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

查看卷組:vgs

顯示邏輯卷:lvs

查看物理卷信息: pvdisplay

df -T  #查看分區格式

2.將新增的磁盤(硬件)添加到卷組
#vgextend centos /dev/sdb
vgextend vgname /dev/sdc

3.新建邏輯卷:在卷組centos創建名為"/dev/mapper/centos-ddhome"的邏輯卷
lvcreate -L 1300G -n ddhome centos

4.格式化邏輯卷
mke2fs -t ext4 /dev/mapper/centos-ddhome

5.掛載目錄
rm -rf /ddhome && mkdir /ddhome
mount /dev/mapper/centos-ddhome /ddhome

df -h

邏輯卷擴容

1.不重啟顯示新增的磁盤信息
ls /sys/class/scsi_host/
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

fdisk -l 查看新增磁盤是否已經顯示

2.將新增的磁盤添加到卷組
vgextend vg_ddz /dev/sdc

3.新增500G
lvextend -L +500G /dev/mapper/vg_ddz-lv_ddhome
lvextend -l +100%FREE /dev/mapper/vg_ddz-lv_ddhome

4.同步文件系統
resize2fs /dev/mapper/vg_ddz-lv_ddhome
or
xfs_growfs /dev/mapper/centos-root
  • 參考:http://dreamfire.blog.51cto.com/418026/1084729

釋放邏輯卷A磁盤空間,分配給邏輯卷B

1.查看正在使用/home的進程
fuser -l /home
ps -ef|grep xxx
kill -9 pid

2.卸載掛載目錄
umount /home

3.檢查vg_ddz-lv_home文件的錯誤性
e2fsck -f /dev/mapper/vg_ddz-lv_home

4.調整/home為100G
resize2fs -p /dev/mapper/vg_ddz-lv_home 80G

5.縮減物理邊界
lvreduce -L 80G /dev/mapper/vg_ddz-lv_home
輸入y

6.重新掛載/home
mount /home

7.查看卷組vg可用空間
vgs

8.新增邏輯卷
lvcreate -L 150G -n lv_ddhome vg_ddz

9.格式化邏輯卷
mke2fs -t ext4 /dev/mapper/vg_ddz-lv_ddhome

10.掛載目錄
rm -rf /ddhome && mkdir /ddhome
mount /dev/mapper/vg_ddz-lv_ddhome /ddhome

11.查看結果
df -h

ext3升級到ext4

umount /ddhome
e2fsck -f /dev/mapper/vg_ddz-lv_ddhome #可能要執行2遍
tune2fs -O extents,uninit_bg,dir_index /dev/mapper/vg_ddz-lv_ddhome
fsck -pf /dev/mapper/vg_ddz-lv_ddhome
mount -t ext4 /dev/mapper/vg_ddz-lv_ddhome /ddhome

總結

技術分享圖片

通過上面的實踐,可以再根據上圖,加深對LVM的理解。

參考文獻

  • Linux 磁盤、分區、掛載和掛載點、邏輯卷管理 (Logical Volume Manager)等

tips:本文屬於自己學習和實踐過程的記錄,很多圖和文字都粘貼自網上文章,沒有註明引用請包涵!如有任何問題請留言或郵件通知,我會及時回復。

linux LVM邏輯卷管理