LVM解析

一、什麼是LVM?

    LVM(Logical Volume Manager)邏輯卷管理,是一種將一個或多個硬盤的分區在邏輯上集合,相當於一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的 分區加入其中,這樣可以實現一種磁盤空間的動態管理,相對於普通的磁盤分區有很大的靈活性,使用普通的磁盤分區,當一個磁盤的分區空間不夠使用的時候,可 能就會帶來很大的麻煩。使用LVM在一定程度上就可以解決普通磁盤分區帶來的問題。 

   dm模塊:device mapper 設備映射組件,能夠將一個或者多個底層設備組織成一個邏輯設備的模塊。

二、 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等)。

      PE(physical extent):每一個物理卷被劃分爲稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。

      LE(logical extent):邏輯卷也被劃分爲被稱爲LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。

由N個磁盤可以組成一個很大的空間VG1,然後從VG1上面劃分需要使用的分區。

     1. PV(Physical Volume):物理卷,處於LVM最底層,可以是物理硬盤或者分區,如上圖所示: 幾個LV建立在VG上,VG建立在PV之上,PV是物理卷,可以是整塊硬盤或者硬盤分區。       

     2.VG(Volume Group):卷組,建立在PV之上,可以含有一個到多個PV。   

     3.LV(Logical Volume):邏輯卷,建立在VG之上,相當於原來分區的概念。

11.png

1、查看系統中新增加的硬盤

[root@ads3 ~]# fdisk -l

2、在/dev/sdb上劃分4個10G分區備用這裏分區格式需要調整爲8e  【8e  Linux LVM 】

分別是sdb1,sdb5,6,7

[root@ads3 ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2838e1c6
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  8e  Linux LVM
/dev/sdb2            1307       13054    94365810    5  Extended
/dev/sdb5            1307        2612    10490413+  8e  Linux LVM
/dev/sdb6            2613        3918    10490413+  8e  Linux LVM
/dev/sdb7            3919        5224    10490413+  8e  Linux LVM

3.介紹pv管理工具

pvs  簡要pv信息顯示

pvdisplay  顯示PV的詳細信息

pvcreate   /dev/device

創建PV,查看PV,查看PV的詳細信息

[root@ads3 ~]# pvcreate /dev/sdb7

[root@ads3 ~]# pvdisplay

如果想查看某個具體的pv,可以    pvdisplay   /dev/sdb7

4 VG的管理工具

vgs 可以簡要顯示所有卷組

vgdisplay   可以顯示詳細信息

vgcreate  創建vg

創建vg,查看vg

[root@ads3 ~]# vgcreate myvg /dev/sdb7
[root@ads3 ~]# vgdisplay myvg
--- Volume group ---
VG Name               myvg
System ID
Format                lvm2
Metadata Areas        1
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                1
Act PV                1
VG Size               10.00 GiB
PE Size               4.00 MiB
Total PE              2560
Alloc PE / Size       0 / 0
Free  PE / Size       2560 / 10.00 GiB
VG UUID               IqtLDN-aRmA-Wmzc-6EYw-GooA-fcz6-6JUFzg
這裏可以看到 PE的大小爲4M,此時再查看pv狀態,發現PE的大小就已經確定
[root@ads3 ~]# pvdisplay  /dev/sdb7
--- Physical volume ---
PV Name               /dev/sdb7
VG Name               myvg
PV Size               10.00 GiB / not usable 4.54 MiB
Allocatable           yes
PE Size               4.00 MiB
Total PE              2560
Free PE               2560
Allocated PE          0
PV UUID               SXyy1i-qb1j-ixlk-Q1js-RPT8-CaWN-WWhmBt

通過使用命令pvs發現我們已經創建了三個pv

[root@ads3 ~]# pvs
PV         VG   Fmt  Attr PSize  PFree
/dev/sdb7  myvg lvm2 a--u 10.00g 10.00g
/dev/sdb8       lvm2 ----  3.01g  3.01g
/dev/sdb9       lvm2 ---- 20.01g 20.01g

現在我們擴展下VG的大小,並查看發現myvg已經變大

[root@ads3 ~]# vgextend myvg /dev/sdb8
[root@ads3 ~]# vgdisplay myvg

移除pv,使用命令pvmove    命令如: pvmove /dev/sdb8,然後再vgreduce myvg 、dev/sdb8,從VG當中移除,此命令在生產環境中操作極具風險性,所以不再演示操作,也不建議大家以後操作

LV管理工具

lvs

lvdisplay

lvcreate  -L #[mMgGtT]   -n NAME VolumeGroup

在myvg當中創建一個mylv,指定大小爲11.3G 指定名字爲mylv

[root@ads3 ~]# lvcreate -L 11.3G -n mylv myvg

創建完成lv之後就可以像軟raid分區一樣,格式化掛載使用了

[root@ads3 ~]# mkfs -t ext4 -b 2048 -L mylv /dev/myvg/mylv

創建目錄並將mylv掛載

[root@ads3 mapper]# mkdir /backup003
[root@ads3 mapper]# mount /dev/mapper/myvg-mylv /backup003

進入目錄,然後下載兩個文件並查看


[root@ads3 mapper]# cd /backup003
[root@ads3 backup003]# wget http://down1.chinaunix.net/distfiles/httpd-2.2.0.tar.bz2
[root@ads3 backup003]# wget http://down1.chinaunix.net/distfiles/nginx-1.2.5.tar.gz
[root@ads3 backup003]# ls
httpd-2.2.0.tar.bz2  lost+found  nginx-1.2.5.tar.gz


擴展邏輯卷 lvextend -L [+][mMgGtT] /dev/VG_NAME/LV_NAME

[root@ads3 backup003]# vgextend myvg /dev/sdb9
Volume group "myvg" successfully extended
[root@ads3 backup003]# vgdisplay
--- Volume group ---
VG Name               myvg
System ID
Format                lvm2
Metadata Areas        3
Metadata Sequence No  4
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               1
Max PV                0
Cur PV                3
Act PV                3
VG Size               33.02 GiB
PE Size               4.00 MiB
Total PE              8452
Alloc PE / Size       2893 / 11.30 GiB
Free  PE / Size       5559 / 21.71 GiB
VG UUID               IqtLDN-aRmA-Wmzc-6EYw-GooA-fcz6-6JUFzg

將lv擴展到20G的大小

[root@ads3 backup003]# lvextend -L 20G /dev/mapper/myvg-mylv 
Size of logical volume myvg/mylv changed from 11.30 GiB (2893 extents) to 20.00 GiB (5120 extents).
Logical volume mylv successfully resized.

擴展lv首先是lv的大小擴展,然後是文件系統的擴展,即先修改物理便捷,在修改邏輯邊界

[root@ads3 backup003]# resize2fs /dev/mapper/myvg-mylv

然後進行解除掛載,重新掛載

[root@ads3 ~]# umount /dev/mapper/myvg-mylv
[root@ads3 ~]# mount /dev/mapper/myvg-mylv /backup003

然後可以看到目錄大小已經改變

[root@ads3 ~]# df -lh
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              48G  1.7G   44G   4% /
tmpfs                 931M     0  931M   0% /dev/shm
/dev/sda1             1.9G   76M  1.8G   5% /boot
/dev/sda3              20G   44M   19G   1% /data
/dev/mapper/myvg-mylv
20G   20M   19G   1% /backup003

縮減邏輯卷,危險性較大,不建議操作,不允許聯機進行的

1   umount  /dev/VG_NAME/LV_NAME

2   做文件系統檢測  e2fsck -f    /dev/VG_NAME/LV_NAME

3   修改其邏輯邊界,resize2fs /dev/mapper/myvg-mylv  #[mMgGtT] 並指明縮減至多大

4   lvreduce -L [-] ##[mMgGtT]  /dev/mapper/myvg-mylv

5    mount /dev/mapper/myvg-mylv /backup003

示例:

[root@ads3 ~]# umount /dev/mapper/myvg-mylv
[root@ads3 ~]#  e2fsck -f   /dev/mapper/myvg-mylv
e2fsck 1.41.12 (17-May-2010)
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
mylv: 13/1310720 files (0.0% non-contiguous), 207882/10485760 blocks
[root@ads3 ~]# resize2fs /dev/mapper/myvg-mylv 12G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/myvg-mylv to 6291456 (2k) blocks.
The filesystem on /dev/mapper/myvg-mylv is now 6291456 blocks long.
[root@ads3 ~]# lvreduce -L 12G /dev/mapper/myvg-mylv
WARNING: Reducing active logical volume to 12.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
Size of logical volume myvg/mylv changed from 20.00 GiB (5120 extents) to 12.00 GiB (3072 extents).
Logical volume mylv successfully resized.
[root@ads3 ~]# mount /dev/mapper/myvg-mylv /backup003
[root@ads3 ~]# cd /backup003
[root@ads3 backup003]# ls
httpd-2.2.0.tar.bz2  lost+found  nginx-1.2.5.tar.gz

文件系統掛載使用: 掛載光盤設備,光盤設備文件是/dev/sr0,而符號鏈接文件一般爲 /dev/cdrom

[root@ads3 ~]# mount -o ro /dev/sr0 /mnt   以只讀的方式掛載光驅,卸載光驅文件系統  umount   /dev/sr0

dd命令的使用,用法是  dd   if  = 源文件    of  =  目標文件 ;bs 複製單元大小,count= n 複製多少個bs

實例如下:

[root@ads3 ~]# dd if=/etc/fstab of=/tmp/fstab2 bs=1 count=10

備份mbr      [root@ads3 ~]# dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破壞MBR    [root@ads3 ~]# dd if=/dev/zero  of=/dev/sda  bs=512 count=1

兩個特殊設備:

/dev/null   數據黑洞   /dev/zero   字符製造

一種掛載光盤鏡像文件的合理方式:

步驟說明:

1 下載光盤鏡像至backup003目錄;

2 查看目錄下的鏡像文件  

3 掛載鏡像文件至/mnt下   

4 查看

[root@ads3 backup003]# wget     
--2018-02-26 15:31:30--  http://mirrors.163.com/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso
Resolving mirrors.163.com... 59.111.0.251
Connecting to mirrors.163.com|59.111.0.251|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4521459712 (4.2G) [application/octet-stream]
Saving to: “CentOS-7-x86_64-DVD-1708.iso”
100%[=================================================================================================================>] 4,521,459,712 10.7M/s   in 6m 45s  
2018-02-26 15:38:15 (10.7 MB/s) - “CentOS-7-x86_64-DVD-1708.iso” saved [4521459712/4521459712]
[root@ads3 backup003]# ls
CentOS-7-x86_64-DVD-1708.iso  httpd-2.2.0.tar.bz2  lost+found  nginx-1.2.5.tar.gz
[root@ads3 backup003]# mount CentOS-7-x86_64-DVD-1708.iso /mnt -o loop
[root@ads3 backup003]# cd /mnt
[root@ads3 mnt]# ls
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
[root@ads3 mnt]# ll
total 664
-rw-rw-r--. 3 root root     14 Sep  5 13:25 CentOS_BuildTag
drwxr-xr-x. 3 root root   2048 Sep  5 13:36 EFI
-rw-rw-r--. 3 root root    227 Aug 30 14:33 EULA
-rw-rw-r--. 3 root root  18009 Dec  9  2015 GPL
drwxr-xr-x. 3 root root   2048 Sep  5 13:46 images
drwxr-xr-x. 2 root root   2048 Sep  5 13:36 isolinux
drwxr-xr-x. 2 root root   2048 Sep  5 13:36 LiveOS
drwxrwxr-x. 2 root root 641024 Sep  4 22:05 Packages
drwxr-xr-x. 2 root root   4096 Sep  5 13:43 repodata
-rw-rw-r--. 3 root root   1690 Dec  9  2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 3 root root   1690 Dec  9  2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root   2883 Sep  6 10:51 TRANS.TBL


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