Linux入門之LVM邏輯卷的創建及其管理


概述

LVM(是基於實際的物理磁盤創建LVM分區,並創建物理卷PV。一個或多個物理卷可以用來創建卷組VG。然後基於卷組可以創建邏輯卷LV。只要在卷組中有可用空間,就可以隨心所欲的創建邏輯卷。文件系統就是在邏輯捲上創建的,然後可以在操作系統中掛載和使用。

特點

特點 性質
物理長度PE 物理長度是將物理卷組合爲卷組後,所劃分的最小存儲單位,即邏輯意義上磁盤的最小存儲單位。LVM默認PE大小爲4MB。
物理卷PV 物理卷是LVM的最底層概念,是LVM的邏輯存儲塊,物理卷與磁盤分區是邏輯的對應關係。
卷組VG 卷組是LVM邏輯概念上的磁盤設備,通過將單個或多個物理卷組合後生成卷組。卷組的大小取決於物理卷的容量以及個數。
邏輯卷LV 邏輯卷就是LVM邏輯意義上的分區,可以指定從卷組中提取多少容量來創建邏輯卷,最後對邏輯卷格式化並掛載使用。

操作流程

1. fdisk /dev/sdd
    #n  新建分區
    #t  轉換分區格式
    #8e  將分區格式轉換爲8e LVM2格式
    
2. 創建pv,將扇區轉化爲pe,並驗證
    pvcreate /dev/sdd1 /dev/sde1
    pvs  查看pv的信息
    pvdisplay 查看pv的信息
    
3. 創建vg虛擬磁盤
    vgcreate mytest /dev/sdd1  /dev/sde1
    find / -name mytest #查找並查看vg的配置信息
    vgs  查看vg虛擬磁盤的信息
    vgdisplay  查看vg虛擬磁盤的信息
    
4. 創建邏輯分區
    lvcreate -L +5G mytest(vg名稱),創建出一個分區默認lvol0
    find /dev -name lvol0 查找分區位置/dev/mytest/lvol0,創建分區時會在dev目錄下創建vg命名的目錄
    
5. 格式化文件系統
    mkfs.ext4 /dev/mytest/lvol0
    
6. 掛載使用
    mkdir /root/mylv
    mount /dev/mytest/lvol0 ./mylv
    

相關命令

fdisk命令

語法:fdisk 【參數】 【對象】

必要參數

參數 功能
-l 列出素所有分區表
-u 與"-l"搭配使用,顯示分區數目

選擇參數

參數 功能
-s<分區編號> 指定分區
-v 版本信息

操作說明

參數 功能
m 顯示菜單和幫助信息
a 活動分區標記/引導分區
d 刪除分區
l 顯示分區類型
n 新建分區
p 顯示分區信息
q 退出不保存
t 設置分區號
v 進行分區檢查
w 保存修改
x 擴展應用,高級功能

pvcreate命令

語法:pvcreate 【選項】 【參數】

參數 功能
-f 強制創建物理卷,不需要用戶確認
-u 指定設備的UUID
-y 所有的問題都回答“yes”
-Z 是否利用前4個扇區

vgcreate命令

語法:vgcreate 【選項】 【參數】

參數 功能
-l 卷組上允許創建的最大邏輯卷數
-p 卷組中允許添加的最大物理卷數
-s 卷組上的物理卷的PE大小

lvresize命令

語法:lvresize 【選項】 【參數】

參數 功能
-L 指定邏輯卷的大小,單位爲“kKmMgGtT”字節
-l 指定邏輯卷的大小(LE數)

e2fsck命令

語法:e2fsck 【參數】 【對象】

參數 功能
-a 檢查 partition,如發現問題會自動修復
-b 設定 superblock 位置。 www.2cto.com
-B size 指定 size 作爲區塊大小
-c 檢查 partition 是否有壞軌
-C file 將檢查結果儲存到 file
-d 輸出 e2fsck debug 結果
-fe2fsck 預設只會對錯誤的檔案系統檢查,加上 -f 是強制檢查
-F 在檢查前將硬盤的 buffer cache 清空,避免發生錯誤
-l list 記錄了壞軌區塊加入 list 中
-d 打印 e2fsck 的 debug 結果
-f 強制檢查
-n 以 (read-only) 開啓檔案系
-p 關閉互動模式,如有問題自動修復,等同 -a
-v 顯示詳細報告
-y 啓用使用者互動模式

經典案例

案例要求

  • 創建一個至少有兩個PV組成的大小爲20G的名爲mydisk的VG;要求PE大小爲16MB, 而後在卷組中創建大小爲5G的邏輯卷默認名字爲lvol0;掛載至/users目錄
  • 新建用戶arc,要求其家目錄爲/users/arc,而後su切換至arc用戶,複製/etc/pam.d目錄至自己的家目錄
  • 擴展testlv至7G,要求archlinux用戶的文件不能丟失
  • 收縮testlv至3G,要求archlinux用戶的文件不能丟失
  • 對testlv創建快照,並嘗試基於快照備份數據,驗正快照的功能

首先在虛擬機加入2塊10G磁盤,之後利用fdisk命令將磁盤分區並轉換LVM格式

1.首先通過lsblk命令查看磁盤狀態

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   45G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 44.5G  0 part 
  ├─centos-root 253:0    0 40.6G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk 
sdc               8:32   0   10G  0 disk 
sr0              11:0    1    4G  0 rom  

2.然後利用fdisk命令按要求編輯磁盤

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xce106979.
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-20971519, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0xce106979
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20971519    10484736   8e  Linux LVM

3.利用相同方式將磁盤sdc更改成LVM格式,最後利用lsbkl命令查看分區

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   45G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 44.5G  0 part 
  ├─centos-root 253:0    0 40.6G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk 
└─sdb1            8:17   0   10G  0 part 
sdc               8:32   0   10G  0 disk 
└─sdc1            8:33   0   10G  0 part 
sr0              11:0    1    4G  0 rom  

利用pvcreate命令創建pv,並將扇區轉化爲pe

1.利用pvcreate命令創建pv

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.

2.利用pvs命令查看

[root@localhost ~]# pvs
 PV         VG     Fmt  Attr PSize   PFree  
 /dev/sda2  centos lvm2 a--  <44.51g  44.00m
 /dev/sdb1         lvm2 ---  <10.00g <10.00g
 /dev/sdc1         lvm2 ---  <10.00g <10.00g

利用vgcreate命令創建vg虛擬磁盤

1.利用vgcreate命令創建虛擬磁盤

[root@localhost ~]# vgcreate mydisk -s 16M  /dev/sdb1 /dev/sdc1
  Volume group "mydisk" successfully created

2.利用vgs命令查看創建情況

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <44.51g 44.00m
  mydisk   2   0   0 wz--n-  19.99g 19.99g

接下來需要利用lvcreate命令創建分區大小爲5G

1.首先利用lvcreate命令創建分區,並利用lvs命令查看

[root@localhost ~]# lvcreate -L +5G mydisk
  Logical volume "lvol0" created.
[root@localhost ~]# lvs
  LV    VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  centos -wi-ao---- <40.59g                                                    
  swap  centos -wi-ao----  <3.88g                                                    
  lvol0 mydisk -wi-a-----   5.00g                                                    
[root@localhost ~]# 

分區創建完畢需要對其進行格式化掛載,利用mount命令掛載即可

1.創建掛載點users並創建文件系統之後掛載分區

[root@localhost ~]# mkdir users
[root@localhost ~]# ls
anaconda-ks.cfg  users

[root@localhost users]# mkfs.ext4 /dev/mydisk/lvol0 
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
。。。。。。
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

[root@localhost ~]# mount /dev/mydisk/lvol0 ./users/
[root@localhost ~]# ls
anaconda-ks.cfg  users
[root@localhost ~]# cd users/
[root@localhost users]# ls
lost+found

以上操作結束後接下來是創建arc用戶

1.創建用戶arc並指定其home目錄,由於在root下操作需要將root目錄更改權限,最後切換用戶查看並複製相關文件

[root@localhost ~]# chmod 777 /root
[root@localhost ~]# useradd -d /root/users/arc arc

[root@localhost ~]# cat /etc/passwd |grep arc
arc:x:1003:1003::/root/users/arc:/bin/bash
[root@localhost ~]# passwd arc

Changing password for user arc.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

[root@localhost ~]# ls
anaconda-ks.cfg  users
[root@localhost ~]# cd users/
[root@localhost users]# ls
arc  lost+found

[root@localhost users]# su - arc
[arc@localhost ~]$ cp -a /etc/pam.d ./
[arc@localhost ~]$ ls
pam.d

接下來是LVM分區擴展收縮操作,以下是操作流程

擴展邏輯卷:
#lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
#resize2fs /dev/VG_NAME/LV_NAME
#lvresize-r -l +100%FREE /dev/VG_NAME/LV_NAME

縮減邏輯卷:
umount/dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount

1.擴展邏輯卷操作如下

[root@localhost users]# lvextend -L +2G /dev/mydisk/lvol0 
  Size of logical volume mydisk/lvol0 changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
  Logical volume mydisk/lvol0 successfully resized.
[root@localhost users]# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  1.9G     0  1.9G   0% /dev
tmpfs                     1.9G     0  1.9G   0% /dev/shm
tmpfs                     1.9G   12M  1.9G   1% /run
tmpfs                     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root    41G  1.7G   39G   5% /
/dev/sda1                 497M  167M  331M  34% /boot
tmpfs                     378M     0  378M   0% /run/user/0
/dev/mapper/mydisk-lvol0  4.8G   21M  4.6G   1% /root/users
[root@localhost users]# resize2fs /dev/mydisk/lvol0 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mydisk/lvol0 is mounted on /root/users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mydisk/lvol0 is now 1835008 blocks long.

root@localhost users]# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  1.9G     0  1.9G   0% /dev
tmpfs                     1.9G     0  1.9G   0% /dev/shm
tmpfs                     1.9G   12M  1.9G   1% /run
tmpfs                     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root    41G  1.7G   39G   5% /
/dev/sda1                 497M  167M  331M  34% /boot
tmpfs                     378M     0  378M   0% /run/user/0
/dev/mapper/mydisk-lvol0  6.8G   23M  6.4G   1% /root/users

最後是快照操作,流程如下

創建快照
#lvcreate-l 64 -s -n snap-data -p r /dev/vg0/data
掛載快照
#mkdir-p /mnt/snap
#mount -o ro/dev/vg0/snap-data /mnt/snap

恢復快照
#umount/dev/vg0/snap-data
#umount/dev/vg0/data
#lvconvert–merge /dev/vg0/snap-data
刪除快照
#umount/mnt/databackup
#lvremove/dev/vg0/databackup

1.以剛剛創建的arc用戶爲例爲其創建快照

[root@localhost users]# lvcreate -l 64 -s -n arc-snap -p rw /dev/mydisk/lvol0 
  Logical volume "arc-snap" created.

2.接下來我們可以切換arc用戶進行各種操作

[root@localhost users]# su - arc
Last login: Mon Mar 30 22:11:03 CST 2020 on pts/0
[arc@localhost ~]$ ls
pam.d
[arc@localhost ~]$ echo jahfkjahgsfj > 1
[arc@localhost ~]$ ls
1  pam.d

3.現在我們需要掛載快照,查看快照情況

[root@localhost ~]# mkdir -p /arc/snap
[root@localhost ~]# mount -o rw /dev/mydisk/arc-snap /arc/snap/
[root@localhost ~]# cd /arc/snap/
[root@localhost snap]# ls
arc  lost+found
[root@localhost snap]# cd arc
[root@localhost arc]# ls
pam.d
[root@localhost arc]# 

4.最後我們需要恢復到快照之前的狀態

[root@localhost arc]# cd ~
[root@localhost ~]# umount /dev/mydisk/arc-snap 
[root@localhost ~]# umount /dev/mydisk/lvol0 
[root@localhost ~]# lvconvert --merge /dev/mydisk/arc-snap 
  Merging of volume mydisk/arc-snap started.
  mydisk/lvol0: Merged: 89.02%
  mydisk/lvol0: Merged: 100.00%
[root@localhost ~]# 

5.現在我們登錄arc用戶查看情況

[root@localhost ~]# mount /dev/mydisk/lvol0 ./users/
[root@localhost ~]# su - arc
Last login: Mon Mar 30 22:34:55 CST 2020 on pts/0
[arc@localhost ~]$ ls
pam.d
[arc@localhost ~]$ 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章