lvm簡要及基本操作

    LVM( Logical Volume Manage,邏輯 邏輯卷管理)LVM將一個或多個硬盤的分區在邏輯上集合,相當于一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對于普通的磁盤分區有很大的靈活性。

     LVM的重要特性:

        1、LVM使用的存儲空間單位是PE,默認的PE是4M,一個VG最多有65534個PE,默認下一個VG最大256G。

        2、VG的空間擴展、刪除,都是通過添加空閑的PE、刪除空閑的PE來完成 

        3、LVM有兩個不同的寫入數據模式:

            A、線性模式:VG中有多個PV是,且同時都屬于一個LV時,那么線性模式就是當每一個PV的容量用完之后,再使用其他的PV。默認就是此模式

            B、交錯模式:VG中有多個PV是,且同時都屬于一個LV時,那么交錯模式會同時把每個PV中寫入相等容量的數據。類似于RAID0 

        4、支持快照

     如圖所示LVM模型:

blob.png

四個硬盤或分區組一成個邏輯卷,在邏輯卷上可以再邏輯分區,當邏輯分區的空間無法再滿足要求時,可以靈活的擴展使用空間

    LVM的幾個概念:

    LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來為文件系統屏蔽下層磁盤分區布局,提供一個抽象的盤卷,在盤卷上建立文件系統,有以下幾個概念:

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

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

        3、卷組(Volume Group):LVM卷組類似于非LVM系統中的物理硬盤,其由物理卷組成??梢栽诰斫M上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。

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

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

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

配置LVM的流程:fdisk創建分區及修改ID為8e–>把分區轉換為PV—>創建VG—>創建LV—>格式華LV—>mount文件系統

擴展LV的空間流程:為VG添加PV–》lvextend擴展空間–》resize2fs 增大文件系統的空間

縮小LV的空間流程:

PV的基本命令

pvs   顯示pv分區的簡要信息,包括硬盤分區名稱、PV名稱、空間問題及空閑量
        pvcreate 把硬盤分區轉換成PV
            pvcreate [選項] [硬盤分區]
                選項:
                -f:強制創建物理卷,不需要用戶確認; 
                -u:指定設備的UUID; 
                -y:所有的問題都回答“yes”; 
                -Z:是否利用前4個扇區。
        pvdisplay 顯示PV的詳細信息
        pvscan 掃描系統中的pv
        pvremove 刪除pv
            pvmove [選項] [pv_name....]
                選項:
                    -f 強制刪除,不提示
                    -y 對提示的內容,自動輸入yes
        pvchange 改變pv的物理屬性
            pvchange [選項] [pv_name]
                選項:
                    -u 為指定的PV_NAME隨便生成UUID
        pvck 檢查PV的元數據
        pvresize 調整PV的容量大小 
            pvresize [選項] [pv_name]
                --setphysicalvolumesize <容量大小> 指定修改PV的空間大小 
                pvresize /dev/sda4 自動把/dev/sda4的空間大小調整為磁盤分區的最大值
                pvresize --setphysicalvolumszise 50G /dev/sda4 把/dev/sda4的空間大小調整為50G    
        pvmove 把源PV的上數據移動到目標pv上
           pvmove [選項] [源PV] [目標PV1.......]
               pvmove /dev/sda4 /dev/sda5 把/dev/sda4的數據移動到/dev/sda5

VG的基本命令

 vgs  顯示vg分區的簡要信息,包括硬盤分區名稱、PV名稱、空間問題及空閑量
 vgdisplay 顯示vg的詳細信息
 vgcreate 創建VG
 vgcreate [選項] [vg_name] [pv_name.....]
     -l:卷組上允許創建的最大邏輯卷數,即PV數量; 
     -p:卷組中允許添加的最大物理卷數;
     -s:卷組上的物理卷的PE大小,即PV數量。
 vgextend  添加PV到VG中
   vgextend [選項] [vg_name] [pv_name]
     -d 使用調試模式
     -t 測試使用
     -f 強制擴展
     -v 顯示詳細信息    
vgreduce  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...] #移除VG中的一個PV ,前提是移動數據
vgremove VG_NAME  #刪除vg組,要先把mount取消掉
 vgscan [PhysicalDevicePath] 掃描系統中的VG
LV基本命令
lvs 查看
lvdisplay 查看詳細信息
lvcreate 創建lv
lvcreate [選項] [vc_name]
     -L 指定VC的大小,單位 K M G T P E 
     -l 通過指定VC的PE數量,來確定VC的空間大小
     -n 指定vc的名稱 
lvremove 刪除lv,先要卸載mount
    lvremove [選項] [lv_name]
擴展邏輯卷:
  #注意:在 lvexten擴展完成后,直接操作mount,會發現擴展的空量沒有直接應用到文件系統中,需要執行一次 resize2fs #
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME      
resize2fs /dev/VG_NAME/LV_NAME 
縮減邏輯卷:
umount /dev/VG_NAME/LV_NAME   #縮減必須先umount
e2fsck -f /dev/VG_NAME/LV_NAME  #文件系統強制檢測及修復
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] #指定文件系統縮減到大多的空間
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME  #指定LV的縮減到多大的空間
mount #掛載

LVM的快照功能 snapshot

    快照就是將當時系統的信息記錄下來,就好像照相一樣。將來若有任何數據的改動,則原始數據就會被移動到快照區。

    做快照時,一定要確保數據沒有在被訪問

    快照LV和被快照的LV要在同一個VG中。

    lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name

        說明:-L是快照區的容量大小  -s 是指定創建快照分區

創建PV

[root@localhost ~]# fdisk -l | grep "/dev/sd[cde]"  
Disk /dev/sdc: 5368 MB, 5368709120 bytes, 10485760 sectors
/dev/sdc1            2048    10485759     5241856   8e  Linux LVM
Disk /dev/sdd: 5368 MB, 5368709120 bytes, 10485760 sectors
/dev/sdd1            2048    10485759     5241856   8e  Linux LVM
Disk /dev/sde: 2147 MB, 2147483648 bytes, 4194304 sectors
/dev/sde1            2048     4194303     2096128   8e  Linux LVM

[root@localhost ~]# pvcreate /dev/sd{d1,c1,e1} #創建pv
[root@localhost ~]# pvscan
  PV /dev/sda2   VG centos   lvm2 [9.51 GiB / 40.00 MiB free]
  PV /dev/sdd1               lvm2 [5.00 GiB]
  PV /dev/sdc1               lvm2 [5.00 GiB]
  PV /dev/sde1               lvm2 [2.00 GiB]

創建VG及LV 

[root@localhost ~]# vgcreate vgtest /dev/sd{c1,d1} #創建VG vgtest 
  Volume group "vgtest" successfully created
[root@localhost ~]# pvscan
  PV /dev/sda2   VG centos   lvm2 [9.51 GiB / 40.00 MiB free]
  PV /dev/sdc1   VG vgtest   lvm2 [5.00 GiB / 5.00 GiB free]
  PV /dev/sdd1   VG vgtest   lvm2 [5.00 GiB / 5.00 GiB free]
  PV /dev/sde1               lvm2 [2.00 GiB]
[root@localhost ~]# vgdisplay vgtest
  --- Volume group ---
  VG Name               vgtest
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               9.99 GiB
  PE Size               4.00 MiB  #PE的默認值
  Total PE              2558   #10G的空間有2558個PE
  Alloc PE / Size       0 / 0   #還沒有使用
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               l26W00-L4Q6-g4yV-NcKc-wzBa-90ak-UoXdiI
  [root@localhost ~]# lvcreate -l 1000 -n lvtest vgtest #創建1000個PE的(即4000MB)lvtest 邏輯分區 
WARNING: ext3 signature detected on /dev/vgtest/lvtest at offset 1080. Wipe it? [y/n]: y
  Wiping ext3 signature on /dev/vgtest/lvtest.
  Logical volume "lvtest" created.
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest #VG的名稱
  LV UUID                QRJ9jg-vxf6-cOHs-5zuJ-dBze-UryA-3sGork
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-05-19 22:46:43 +0800
  LV Status              available
  # open                 0
  LV Size                3.91 GiB 
  Current LE             1000 #1000個PE
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
[root@localhost ~]# mkfs.ext3 /dev/vgtest/lvtest  #格式化
[root@localhost ~]# mount /dev/vgtest/lvtest /lvtest #掛載
[root@localhost ~]# ls /lvtest/
lost+found   #完成LV的創建及掛載
[root@localhost ~]#


擴展LV的空間

[root@localhost ~]# lvs
  LV     VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos -wi-ao---- 8.47g                                                    
  swap   centos -wi-ao---- 1.00g                                                    
  lvtest vgtest -wi-ao---- 3.91g                                                    
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  centos   1   2   0 wz--n-  9.51g 40.00m
  vgtest   3   1   0 wz--n- 11.99g  8.08g
  [root@localhost ~]# lvextend -L +1G /dev/vgtest/lvtest  #為lvtest的空間擴大1G
  Size of logical volume vgtest/lvtest changed from 3.91 GiB (1000 extents) to 4.91 GiB (1256 extents).
  Logical volume lvtest successfully resized.
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                QRJ9jg-vxf6-cOHs-5zuJ-dBze-UryA-3sGork
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-05-19 22:46:43 +0800
  LV Status              available
  open                 1
  LV Size                4.91 GiB #擴展后的空間
  Current LE             1256 #擴展后的LE,LE的值與PE相同
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
[root@localhost ~]# df -h | grep "lvtest"
/dev/mapper/vgtest-lvtest  3.8G   14M  3.6G   1% /lvtest  #但能使用的空間還沒有擴展
[root@localhost ~]# resize2fs /dev/vgtest/lvtest #resize2fs命令被用來增大或者收縮未加載的“ext2/ext3”文件系統的大小
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vgtest/lvtest is mounted on /lvtest; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vgtest/lvtest is now 1286144 blocks long.
[root@localhost ~]# df -h | grep "lvtest"
/dev/mapper/vgtest-lvtest  4.8G   14M  4.6G   1% /lvtest #已能使用擴展后的空間

縮小LV的空間

[root@localhost /]# lvdisplay /dev/vgtest/lvtest 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                ze2YVv-0eXR-RBD2-byEK-eqtt-zuaD-m4LqJM
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-05-19 23:35:14 +0800
  LV Status              available
  # open                 1
  LV Size                5.00 GiB #縮小前的空間
  Current LE             1280
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
[root@localhost /]# umount /lvtest/  #必須先卸載,否則會出問題。但擴大空間時不用先卸載
[root@localhost /]# resize2fs /dev/vgtest/lvtest 2G #把文件系統大小壓縮成2G
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/vgtest/lvtest' first.  #提示先進行文件檢測,如果沒有事先umount,檢測會出問題,提示超級塊有壞塊
[root@localhost /]# e2fsck -f /dev/vgtest/lvtest #檢測 
e2fsck 1.42.9 (28-Dec-2013)
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
/dev/vgtest/lvtest: 11/327680 files (0.0% non-contiguous), 55935/1310720 blocks
[root@localhost /]# resize2fs /dev/vgtest/lvtest 2G  #把文件系統大小壓縮成2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vgtest/lvtest to 524288 (4k) blocks.
The filesystem on /dev/vgtest/lvtest is now 524288 blocks long.
[root@localhost /]# lvreduce -L 2G /dev/vgtest/lvtest #把LV的空間縮小成2G
  WARNING: Reducing active logical volume to 2.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvtest? [y/n]: Y
  Size of logical volume vgtest/lvtest changed from 5.00 GiB (1280 extents) to 2.00 GiB (512 extents).
  Logical volume lvtest successfully resized.
[root@localhost /]# mount /dev/vgtest/lvtest /lvtest/
[root@localhost /]# df -h | grep "lvtest"
/dev/mapper/vgtest-lvtest  1.9G  7.7M  1.8G   1% /lvtest


原創文章,作者:Net20-deamon,如若轉載,請注明出處:http://www.www58058.com/16400

(0)
Net20-deamonNet20-deamon
上一篇 2016-05-23
下一篇 2016-05-25

相關推薦

  • 【Linux基礎】計算機及操作系統基礎

    【Linux基礎】計算機及操作系統基礎 計算機的組成及其功能 計算機的組成 簡單來說,計算機應由兩部分組成:第一部分:硬件 馮諾依曼結構體系 當前計算機主要是基于馮諾依曼體系結構設計的,在該體系中,計算機硬件由5個部件組成。分別是:運算器、控制器、存儲器、輸入設備和輸出設備。而現今運算器和控制器一般集成在一起,叫中央處理器(Central Processin…

    Linux干貨 2018-03-04
  • Oracle 11G 安裝圖解

    Oracle 11G 安裝圖解 wmd-preview h1 { color: #0077bb; /* 將標題改為藍色 */ } Oracle 11G 安裝圖解 oracle Oracle 介紹   Oracle Database,又名Oracle RDBMS,或簡稱Oracle 是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處于領先地位的產品。…

    2017-04-24
  • bash 的過程式和循環式的編寫

           bash腳本的編寫,對于Linux這個多用戶,多任務的系統,有很大的幫助,腳本可以幫助我們定時執行任務,過濾文本,檢查系統性能等等。下面我們來了解一下過程式和循環式腳本的編寫。 使用read 命令來接受輸入 使用read 來把輸入值分配給一個或多個shell 變量:  &nb…

    Linux干貨 2016-08-24
  • N25-第18周博客作業

    1、為LNMP架構添加memcached支持,并完成對緩存效果的測試報告; LNMP的安裝過程不再贅述. # yum install -y memcached # cat /etc/sysconfig/memcached  PORT=”11211″   &nb…

    2017-05-21
  • 馬哥教育網絡20期+第五周課程練習

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; [root@localhost ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又…

    Linux干貨 2016-07-07
  • Linux 發展史

    Linux 發展史 一、Linux 系統概述     首先大家需要明白,Linux 只是內核,沒有應用程序,如果想有應用程序就需要GNU 組織來提供應用程序,GNU其實就是一個開源組織,這就要說GNU 和GPL 的概念了,其實GNU可以看作就是軟件行業的共產黨組織 而GPL 就是共產黨宣言 為全人類服務。所以說GNU 和 LIN…

    Linux干貨 2016-10-19
欧美性久久久久