LVM邏輯卷的配置和掛載使用


LVM邏輯卷的配置和掛載使用

為什么使用LVM?

①硬盤的多個分區由LVM統一為卷組管理,可以方便的加入或移走分區以擴大或減小卷組的可用容量,充分利用硬盤空間

②用戶/用戶組的空間建立在LVM上,可以隨時按要求增大,或根據使用情況對各邏輯卷進行調整。當系統空間不足而加入新的硬盤時,不必把用戶的數據從原硬盤遷移到新硬盤,而只須把新的分區加入卷組並擴充邏輯卷即可。同樣,使用LVM可以在不停服務的情況下。把用戶數據從舊硬盤轉移到新硬盤空間中去

名詞解釋:

PV: 物理

VG:卷組

LV :邏輯卷

LVM配置步驟:

  1. 將磁盤加入pv # pvcreate /dev/sdb /dev/sdc /dev/sdd

  2. 將pv加入到vg卷組 # vgcreate datavg /dev/sdb /dev/sdc /dev/sdd

  3. 分配lv使用 # lvcreate -L 100M -n lv1 datavg

  4. 查看命令:pvs、vgs、lvs

一、例如有三塊硬盤: sdb、sdc、sdd

先使用兩塊,sdd稍后用來示范VG擴展和移除

[root@localhost ~]# lsblk |grep "sd[bcd]" sdb 8:16 0 204M 0 disk sdc 8:32 0 204M 0 disk sdd 8:48 0 204M 0 disk [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 30G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 25.8G 0 part │ ├─rhel-root 253:0 0 23.8G 0 lvm / │ └─rhel-home 253:1 0 2G 0 lvm /home └─sda3 8:3 0 4G 0 part [SWAP] sdb 8:16 0 204M 0 disk sdc 8:32 0 204M 0 disk sdd 8:48 0 204M 0 disk sr0 11:0 1 3.8G 0 rom [root@localhost ~]#

將sdb磁盤加入pv
[root@localhost ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created [root@localhost ~]# echo $? 0 [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- 25.80g 0 /dev/sdb lvm2 --- 204.00m 204.00m [root@localhost ~]#

如果加入失敗可以先將磁盤格式化:mkfs.etx4 /dev/sdb 格式化成什么格式自己選,這里是ext4

  1. 查看pv創建情況:
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- 25.80g 0 /dev/sdb lvm2 --- 204.00m 204.00m [root@localhost ~]#
  1. 再將sdc磁盤加入pv
[root@localhost ~]# pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- 25.80g 0 /dev/sdb lvm2 --- 204.00m 204.00m /dev/sdc lvm2 --- 204.00m 204.00m [root@localhost ~]#
  • 思考:現在有兩個PV物理卷了,我們需要將這兩個物理卷加入卷組,所以需要創建一個卷組VG

  • 注意:在某個物理卷在加入卷組時,會將物理卷的最小存儲單元設定為一個固定的值,這個值稱為PE(physical extent)。這個值的創建,是為了保證用統一的最小分配單元來創建邏輯卷,不至於因為分配單元大小不同而造成空間浪費。舉個例子:用於遠洋運輸的集裝箱的設計是是有着統一標准的,最重要一點是集裝箱大小完全相同,這樣做的好處是集裝箱相互堆疊在一起不會留下多余的空隙,完全利用了空間,且便於管理。設定PE的原因也與此相同。LVM以最小分配單元來創建邏輯卷,該最小分配單元的值稱為LE(logical extent)。一般來說PE=LE,且大小為2^n。

    1. 創建名為datavg的卷組,並將sdb和sdc這兩個物理卷加入到卷組datavg
[root@localhost ~]# vgcreate datavg /dev/sdb /dev/sdc Volume group "datavg" successfully created [root@localhost ~]# vds bash: vds: command not found...

通過以下兩個命令可以看出sdb和sdc物理卷都已加入名為datavg的卷組中了

[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree datavg 2 0 0 wz--n- 400.00m 400.00m rhel 1 2 0 wz--n- 25.80g 0 [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- 25.80g 0 /dev/sdb datavg lvm2 a-- 200.00m 200.00m /dev/sdc datavg lvm2 a-- 200.00m 200.00m [root@localhost ~]#

 

datavg卷組還可以擴展新的pv ,這里我們暫時不擴展

  1. 分配LV邏輯卷使用(利用datavg卷組創建一個名為lv1的邏輯卷,大小為100M)
[root@localhost ~]# lvcreate -L 100M -n lv1 datavg Logical volume "lv1" created. [root@localhost ~]# 

 

查看下邏輯卷的配置情況:

[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv1 datavg -wi-a----- 100.00m home rhel -wi-ao---- 2.00g root rhel -wi-ao---- 23.80g [root@localhost ~]# lvscan ACTIVE '/dev/datavg/lv1' [100.00 MiB] inherit ACTIVE '/dev/rhel/home' [2.00 GiB] inherit ACTIVE '/dev/rhel/root' [23.80 GiB] inherit [root@localhost ~]#

 

  1. 邏輯卷使用前和分區一樣,都需要格式化一下
[root@localhost ~]# mkfs.ext4 /dev/datavg/lv1 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 25688 inodes, 102400 blocks 5120 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=33685504 13 block groups 8192 blocks per group, 8192 fragments per group 1976 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done [root@localhost ~]# echo $? 0 [root@localhost ~]#

 

  • 知識點:確認上一步操作是否成功可用 [root@localhost ~]# echo $? 檢查,為0表示成功,其他都是失敗

    1. 掛載邏輯卷到/lv1目錄下
[root@localhost /]# mkdir /lv1 [root@localhost /]# mount /dev/datavg/lv1 /lv1/ [root@localhost /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 24G 3.6G 19G 16% / devtmpfs 898M 0 898M 0% /dev tmpfs 913M 84K 913M 1% /dev/shm tmpfs 913M 9.2M 904M 1% /run tmpfs 913M 0 913M 0% /sys/fs/cgroup /dev/sda1 190M 133M 43M 76% /boot /dev/mapper/rhel-home 2.0G 12M 1.8G 1% /home tmpfs 183M 0 183M 0% /run/user/0 tmpfs 183M 16K 183M 1% /run/user/42 /dev/mapper/datavg-lv1 93M 1.6M 85M 2% /lv1 [root@localhost /]#
  • 當然我們也可以設置將邏輯卷永久掛載

    ①將邏輯卷的lv1的UUID寫到/etc/fstab配置文件中

[root@localhost lv1]# blkid |grep "lv1" |awk '{print $2}' >> /etc/fstab
  • 1

②重新加載下配置文件/etc/fstab

[root@localhost /]# mount -a
  • 1
  1. 我們可以看到datavg卷組已經少了100M,先使用的sdb物理卷的空間
[root@localhost /]# vgs VG #PV #LV #SN Attr VSize VFree datavg 2 1 0 wz--n- 400.00m 300.00m rhel 1 2 0 wz--n- 25.80g 0 [root@localhost /]#
  • 1
  • 2
  • 3
  • 4
  • 5

二、VG的擴展pv和移除pv

  • 擴展一個新的pv
[root@localhost /]# vgextend datavg /dev/sdd
  • 1
  • 移除一個pv
[root@localhost ~]# vgreduce datavg /dev/sdd
  • 1
  • 刪除VG
[root@localhost ~]# vgremove datavg
  • 1

三、pvmove在線數據遷移(不同物理卷之間)和快照建立(邏輯卷之間)

  • 假如pv物理卷/dev/sdb硬盤已經老化,需要將sdb里的數據在線遷移到sdc物理卷

    1. 先檢查當前邏輯卷VG中的PV使用情況
[root@localhost /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 24G 3.6G 19G 16% / devtmpfs 898M 0 898M 0% /dev tmpfs 913M 84K 913M 1% /dev/shm tmpfs 913M 9.2M 904M 2% /run tmpfs 913M 0 913M 0% /sys/fs/cgroup /dev/sda1 190M 133M 43M 76% /boot /dev/mapper/rhel-home 2.0G 12M 1.8G 1% /home tmpfs 183M 0 183M 0% /run/user/0 tmpfs 183M 16K 183M 1% /run/user/42 /dev/mapper/datavg-lv1 93M 33M 54M 39% /lv1 [root@localhost /]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- 25.80g 0 /dev/sdb datavg lvm2 a-- 200.00m 100.00m /dev/sdc datavg lvm2 a-- 200.00m 200.00m /dev/sdd datavg lvm2 a-- 200.00m 200.00m [root@localhost /]#
  1. 開始數據遷移
[root@localhost etc]# pvmove /dev/sdb /dev/sdc /dev/sdb: Moved: 12.0% /dev/sdb: Moved: 100.0% [root@localhost etc]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- 25.80g 0 /dev/sdb datavg lvm2 a-- 200.00m 200.00m /dev/sdc datavg lvm2 a-- 200.00m 100.00m /dev/sdd datavg lvm2 a-- 200.00m 200.00m [root@localhost etc]#
  1. 遷移完成后可將老舊的物理卷pv(sdb)從卷組中除去
[root@localhost etc]# vgreduce datavg /dev/sdb Removed "/dev/sdb" from volume group "datavg" [root@localhost etc]# vgs VG #PV #LV #SN Attr VSize VFree datavg 2 1 0 wz--n- 400.00m 300.00m rhel 1 2 0 wz--n- 25.80g 0 [root@localhost etc]# // partprobe命令用於重讀分區表,當出現刪除文件后,出現仍然占用空間。可以partprobe在不重啟的情況下重讀分區。 //partprobe命令k可以不用重啟系統即可配合fdisk、gdisk工具創建新的分區 [root@localhost /]# partprobe 
  • lvm建立快照lv1-bak
// 制作/dev/datavg/lv1的快照lv1-bak [root@localhost lv1]# df -h ....... /dev/mapper/datavg-lv1 93M 1.6M 85M 2% /lv1 [root@localhost lv1]# // 制作快照前最好先卸載/dev/datavg/lv1 [root@localhost /]# umount /lv1/ [root@localhost /]# lvcreate -L 35M -n lv1-bak -s /dev/datavg/lv1 Rounding up size to full physical extent 36.00 MiB Logical volume "lv1-bak" created. [root@localhost /]# df -h ........ /dev/mapper/datavg-lv1--bak 93M 33M 54M 39% /lv1

四、LVM管理知識擴展及易錯問題的出現及方法

  1. lvm的拉伸與縮減

    • 針對xfs文件系統—–lvm設備的擴大(只可以擴大,不可以縮小)
// 此操作只能擴大 [root@server188 ~]# lvextend -L 500M /dev/datavg/lv1 Extending logical volume lv0 to 500.00 MiB Logical volume lv0 successfully resized [root@server188 ~]# df -h Filesystem Size Used Avail Use% Mounted on ….. ….. ….. … /dev/mapper/datavg-lv1 197M 11M 187M 6% /lv1
// xfs格式同步下設備 [root@server188 ~]# xfs_growfs /dev/datavg/lv1 [root@server188 ~]# df -h Filesystem Size Used Avail Use% Mounted on ……. …… … … /dev/mapper/datavg-lv1 497M 11M 487M 3% /lv1
  • 針對ext文件系統—–lvm設備的擴大(可拉伸也可縮減)

  • lvm設備的拉伸

//將/dev/mapper/datavg-lv1格式化為ext格式 
[root@server188 ~]# umount /dev/mapper/datavg-lv1 [root@server188 ~]# mkfs.ext4 /dev/mapper/vg0-lv0 //此時要擴展到600M,但vg中容量<600M,因此vg中加入新的物理卷pv [root@localhost /]# vgextend datavg /dev/sdd [root@server188 ~]# lvextend -L 2G /dev/vg0/lv0 Extending logical volume lv0 to 2.00 GiB Insufficient free space: 387 extents needed, but only 130 available
// lvm丟失pv設備:unknown device datavg lvm2 a-m 200.00m 200.00m [root@localhost ~]# pvs WARNING: Device for PV MQ1kYt-eH2x-ECas-Gmd6-QNje-j8fq-Of62rx not found or rejected by a filter. WARNING: Device for PV 8MPnLa-2u7t-UJus-XZev-M3wj-zbx0-q3AZwT not found or rejected by a filter. PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- 25.80g 0 /dev/sdb lvm2 --- 204.00m 204.00m /dev/sdc datavg lvm2 a-- 200.00m 200.00m unknown device datavg lvm2 a-m 200.00m 200.00m unknown device datavg lvm2 a-m 200.00m 200.00m // 當想刪除未知設備[unknown device]時用下面的命令 [root@localhost ~]# vgreduce --removemissing datavg WARNING: Device for PV MQ1kYt-eH2x-ECas-Gmd6-QNje-j8fq-Of62rx not found or rejected by a filter. WARNING: Device for PV 8MPnLa-2u7t-UJus-XZev-M3wj-zbx0-q3AZwT not found or rejected by a filter. WARNING: Device for PV MQ1kYt-eH2x-ECas-Gmd6-QNje-j8fq-Of62rx not found or rejected by a filter. WARNING: Device for PV 8MPnLa-2u7t-UJus-XZev-M3wj-zbx0-q3AZwT not found or rejected by a filter. Wrote out consistent volume group datavg [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- 25.80g 0 /dev/sdb lvm2 --- 204.00m 204.00m /dev/sdc datavg lvm2 a-- 200.00m 200.00m [root@localhost ~]# 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM