LVM管理

1、邏輯卷管理器(LVM)

(1)邏輯卷管理器(LVM,logical volume manager)可以整合多個物理分區在一起,讓這些分區看起來就像一個磁盤一樣,而且,還可以在將來其他的物理分區或將其從這個LVM管理的磁盤中刪除。這樣可以實現磁盤空間的動態管理,相對于普通的磁盤分區有很大的靈活性,同時LVM還有快照功能。

(2)邏輯卷管理器的基本術語 物理卷(PV):簡單說,物理卷就是磁盤或者是磁盤分區,由pvcreate命令創建。 物理擴展塊(PE):LVM默認使用4MB的PE塊,在LVM的卷組總最多只能含有65534個PE,因此默認的PE大小是256G。PE是整個LVM最小的存儲塊。 卷組(VG):將多個物理卷,使用vgcreate命令整合成一個大的磁盤,即為卷組,卷組的大小有物理卷的數量和大小決定。 邏輯卷(LG):邏輯卷是在卷組的基礎上可以被格式化為文件系統的分區,大小有PE的塊數決定。使用lvcreate命令創建。

LVM管理

LVM管理

2、創建物理卷(physical volume)

pvcreate:將物理分區新建成PV
    -f:強制創建物理卷,不需要用戶確認;
    -u:指定設備的UUID;
    -y:所有的問題都回答“yes”;
    -Z:是否利用前4個扇區。
pvdisplay:顯示當前系統上的PV狀態
    pvdisplay命令顯示的物理卷信息包括:物理卷名稱、所屬的卷組、物理卷大小、PE大小、總PE數、可用PE數、已分配的PE數和UUID    
pvscan:查詢磁盤上所有具有PV的磁盤
    -d:調試模式
    -e:僅顯示屬于輸出卷組的物理卷
    -n:僅顯示不屬于任何卷組的物理卷
    -s:短格式輸出
    -u:顯示UUID
pvremove:將PV刪除,讓該分區不具有PV屬性
pvmove:用來將一塊盤上的數據移到另一塊盤,可以移動整塊盤的數據,也可以移動指定 extent 范圍的數據
    eg:pvmove /dev/sdb /dev/sdc

3、創建卷組(volume group)

vgcreate:創建一個VG
    -l:卷組上允許創建的最大邏輯卷數;
    -p:卷組中允許添加的最大物理卷數;
    -s:卷組上的物理卷的PE大?。▎挝?nbsp;M G T大小都可)。  
vgscan:查找系統上是否有VG
vgdisplay:顯示目前系統的VG狀態
    -A:僅顯示活動卷組的屬性;
    -s:使用短格式輸出的信息。
vgextend:增加VG的額外PV
    -t:僅測試。
vgreduce:減少(刪除)VG的PV
    -a:如果命令行中沒有指定要刪除的物理卷,則刪除所有的空物理卷;
    --removemissing:刪除卷組中丟失的物理卷,使卷組恢復正常狀態。
vgchange:設置卷組是處于活動狀態還是非活動狀態
    -a:設置卷組的活動狀態
vgremove:刪除一個VG(先做pvmove ,再做vgremove)
    -f:強制刪除

4、創建邏輯卷(logical volume)

lvcreate:新建一個LV
    -L:指定邏輯卷的大小,后接容量,此容量需是PE的整數倍,單位為“kKmMgGtT”
    -l:指定邏輯卷的大小,后接PE個數
    -n:后接LV的名稱
    -s:創建快照
lvscan:查詢系統上的LV
    -b:顯示邏輯卷的主設備和次設備號
lvdisplay:顯示系統上的LV狀態
lvextend:在LV里面增加容量
lvreduce:在LV里面減少容量
lvremove:刪除一個LV
lvresize:調整LV的大小
resize2fs:調整ext系列系統LV大小
xfs_growfs:調整xfs格式LV大小

5、示例 (虛擬機環境)

[root@localhost ~]# fdisk /dev/sdb (使用fdisk命令創建了四個分區)
[root@localhost ~]# lsblk /dev/sdb 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  200G  0 disk 
├─sdb1   8:17   0    5G  0 part 
├─sdb2   8:18   0    5G  0 part 
├─sdb3   8:19   0   20G  0 part 
├─sdb4   8:20   0    1K  0 part (擴展分區)
└─sdb5   8:21   0   10G  0 part (邏輯分區)
[root@localhost ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created
[root@localhost ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created
[root@localhost ~]# pvcreate /dev/sdb5
  Physical volume "/dev/sdb5" successfully created
[root@localhost ~]# pvs (建立了4個PV,可以用pvdisplay命令查看更詳細信息)
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb1       lvm2 ----  5.01g  5.01g
  /dev/sdb2       lvm2 ----  5.01g  5.01g
  /dev/sdb3       lvm2 ---- 20.01g 20.01g
  /dev/sdb5       lvm2 ---- 10.00g 10.00g
[root@localhost ~]# vgcreate vgtest /dev/sdb{1,2,3,5} (創建名為vgtest的卷組)
  Volume group "vgtest" successfully created
[root@localhost ~]# vgdisplay (vgtest卷組的詳細信息)
  --- Volume group ---
  VG Name               vgtest
  System ID             
  Format                lvm2
  Metadata Areas        4
  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                4
  Act PV                4
  VG Size               40.02 GiB
  PE Size               4.00 MiB (此例子用默認的PE大小)
  Total PE              10246
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10246 / 40.02 GiB
  VG UUID               Xe9pMF-tyCN-Bk5z-ZPub-TVHA-DCVm-hRVyqd
[root@localhost ~]# lvcreate -n lvtest -L 15G vgtest 
  Logical volume "lvtest" created. (在vgtest卷組創建了一個15G的邏輯卷lvtestS)
[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                qZcbaO-EX0V-QUhw-oDig-Ldoc-5Amp-X8jyUB
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-08-29 22:15:31 +0800
  LV Status              available
  # open                 0
  LV Size                15.00 GiB
  Current LE             3840
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
[root@localhost ~]# mkfs.ext4 /dev/vgtest/lvtest (將lvtest格式化為ext4系統)
[root@localhost ~]# mount /dev/vgtest/lvtest /mnt/lvtest(掛載,若/mnt/lvtest目錄需事先存在)
[root@localhost ~]# df -h /mnt/lvtest (已經創建好一個15G的LV)
  Filesystem                Size  Used Avail Use% Mounted on
  /dev/mapper/vgtest-lvtest  15G   38M   14G  1%  /mnt/lvtest
如果要每次啟動系統時自動掛載,需將以下字符寫到/etc/fstab文件中
  /dev/vgtest/lvtest(建議用UUID)  /mnt/lvtest  ext4  defaults  0  0

至此一個完整的LVM已經創建好了,接下來補充一下邏輯卷的擴展和壓縮

[root@localhost ~]# lvextend -L +5G /dev/vgtest/lvtest (增加5G空間,“+n”表示增加n空間;直接給定一個數字n,則表示增加到n空間,單位 M G T )
  Size of logical volume vgtest/lvtest changed from 15.00 GiB (3840 extents) to 20.00 GiB (5120 extents).
  Logical volume lvtest successfully resized. (成功在lvtest中增加了5G)
[root@localhost ~]# df -h /dev/vgtest/lvtest
  Filesystem                 Size  Used Avail Use% Mounted on
  /dev/mapper/vgtest-lvtest   15G   38M   14G   1% /mnt/lvtest (但是沒顯示,為什么?因為在線增加容量存在同步問題)
[root@localhost ~]# resize2fs /dev/vgtest/lvtest  (使增加的5G容量生效)
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vgtest/lvtest is mounted on /mnt/lvtest; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vgtest/lvtest to 5242880 (4k) blocks.
The filesystem on /dev/vgtest/lvtest is now 5242880 blocks long.
[root@localhost ~]# df -h /mnt/lvtest/   (可以看到已經擴展為20G了)
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vgtest-lvtest   20G   42M   19G   1% /mnt/lvtest

注意:LVM的擴展可以不用卸載而在線進行,但是壓縮卻不能支持的。一般情況下文件系統都會存有數據,如果直接壓縮空間的話,很容易造成數據的丟失、損壞。因此壓縮空間前需要將已經掛載的系統卸載?,F在我們繼續接著上面的例子來進行壓縮操作吧(壓縮操作很危險,要注意做好備份)。

[root@localhost ~]# umount /mnt/lvtest (卸載)
[root@localhost ~]# e2fsck -f /dev/vgtest/lvtest (強制檢測lvtest,此步必須有)
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
/dev/vgtest/lvtest: 11/1310720 files (0.0% non-contiguous), 122065/5242880 blocks
[root@localhost ~]# resize2fs /dev/vgtest/lvtest 10G (降低文件系統的10G容量)
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vgtest/lvtest to 2621440 (4k) blocks.
The filesystem on /dev/vgtest/lvtest is now 2621440 blocks long.
[root@localhost ~]# lvreduce -L -10G /dev/vgtest/lvtest (壓縮邏輯卷的10G空間)
  WARNING: Reducing active logical volume to 10.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vgtest/lvtest? [y/n]: y
  Size of logical volume vgtest/lvtest changed from 20.00 GiB (5120 extents) to 10.00 GiB (2560 extents).
  Logical volume lvtest successfully resized.
[root@localhost ~]# mount /dev/vgtest/lvtest /mnt/lvtest (掛載壓縮后的lvtest) 
[root@localhost ~]# lvscan (可以看到lvtest已經被壓縮了10G空間了)
  ACTIVE            '/dev/vgtest/lvtest' [10.00 GiB] inherit

至此,邏輯卷的壓縮也已經完成,以上壓縮步驟順序千萬不能亂,否則很容易造成文件損壞。既然說到這了,那么就順便也來聊聊卷組(VG)壓縮吧,壓縮卷組前需要確認你要移出卷組的磁盤(或分區)是不包含數據的(避免數據丟失),可以用pvdisplay命令查看。

[root@localhost ~]# pvdisplay (查看那個分區是沒有數據的,此例要移除/dev/sdb1,以每個人的實際情況確定刪除的PV)
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vgtest
  PV Size               5.01 GiB / not usable 2.10 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              1282
  Free PE               1282
  Allocated PE          0
  PV UUID               9ccUO2-yK1I-zYPP-FQJi-yP2e-t1gQ-FZXLkL
[root@localhost ~]# vgreduce vgtest /dev/sdb1 (將/dev/sdb1移出vgtest卷組)
  Removed "/dev/sdb1" from volume group "vgtest"
[root@localhost ~]# vgs (查看VG大小,可以看到已經少了5G)
  VG     #PV #LV #SN Attr   VSize  VFree 
  vgtest   3   1   0 wz--n- 35.02g 25.02g
[root@localhost ~]# pvs (可以看到/dev/sdb1已經移出了)
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sdb1         lvm2 ----  5.01g  5.01g
  /dev/sdb2  vgtest lvm2 a--u  5.01g  5.01g
  /dev/sdb3  vgtest lvm2 a--u 20.01g 10.01g
  /dev/sdb5  vgtest lvm2 a--u 10.00g 10.00g
現在我們再把/dev/sdb1添加回vgtest吧,看下面:
[root@localhost ~]# vgextend vgtest /dev/sdb1 
Volume group "vgtest" successfully extended
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  vgtest   4   1   0 wz--n- 40.02g 30.02g
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sdb1  vgtest lvm2 a--u  5.01g  5.01g
  /dev/sdb2  vgtest lvm2 a--u  5.01g  5.01g
  /dev/sdb3  vgtest lvm2 a--u 20.01g 10.01g
  /dev/sdb5  vgtest lvm2 a--u 10.00g 10.00g
如果添加新的設備到VG中,需要先用pvcreate命令創建PV,再用vgextend命令將創建好的PV加入VG中。

6、快照功能

(1)快照相關介紹

1)快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
2)對于需要備份或者復制的現有數據集臨時拷貝以及其它操作來說,快照是最合適的選擇。
3)快照只有在它們和原來的邏輯卷不同時才會消耗空間。
    在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間。
    當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中。
    快照中只含有原來的邏輯卷中更改的數據或者自生成快照后的快照中更改的數據。
    建立快照的卷大小只需要原始邏輯卷的15% ~20% 就夠了。也可以使用lvextend 放大快照。

LVM管理

由于快照區與原本的LV 共用很多PE 的區塊,因此快照區與 被快照的LV 必須要要在同一個VG 上!系統恢復的時候的文 件數量不能高于快照區的實際容量。

7、快照示例

[root@localhost ~]# vgdisplay (確認可用PE的數量)
  --- Volume group ---
  VG Name               vgtest
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  16
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               40.02 GiB
  PE Size               4.00 MiB
  Total PE              10246
  Alloc PE / Size       2560 / 10.00 GiB
  Free  PE / Size       7686 / 30.02 GiB (如果不夠的話需要添加額外的PV哦)
  VG UUID               Xe9pMF-tyCN-Bk5z-ZPub-TVHA-DCVm-hRVyqd
[root@localhost ~]# lvcreate -l 524 -s -n testss /dev/vgtest/lvtest (創建一個PE數量為524個名字為testss的快照,詳細屬性可用lvdisplay查看。其中–s表示要創建快照,-n表示快照的名稱,-L 表示快照的大小。)
 Logical volume "testss" created.
[root@localhost ~]# mkdir /mnt/snapshot
[root@localhost ~]# mount /dev/vgtest/testss /mnt/snapshot (掛載快照)
[root@localhost ~]# df (可以看到快照和原文件屬性一樣)
Filesystem                 1K-blocks    Used Available Use% Mounted o
/dev/mapper/vgtest-lvtest  10190136   23028   9642884   1%  /mnt/lvtest
/dev/mapper/vgtest-testss  10190136   23028   9642884   1%  /mnt/snapshot
[root@localhost ~]# umount /mnt/snapshot/ (卸載快照)
[root@localhost ~]# cp -r /boot /root /mnt/lvtest
[root@localhost ~]# df /mnt/lvtest (可以看到原系統已經有所改變)
Filesystem                 1K-blocks   Used Available Use% Mounted on
/dev/mapper/vgtest-lvtest  10190136 197800   9468112   3%  /mnt/lvtest
[root@localhost ~]# rm -rf /mnt/lvtest/. (將/lvtest里的問都刪,也可重新格式化成原格式)
[root@localhost ~]# cp -a /mnt/snapshot/. /mnt/lvtest/ (用快照恢復原文件系統)
[root@localhost ~]# df /mnt/lvtest/ (可以看到已經恢復了)
Filesystem                 1K-blocks  Used Available Use% Mounted on
/dev/mapper/vgtest-lvtest  10190136 23012   9642900   1%  /mnt/lvtest

建議:最好將快照卷也備份一下。

原創文章,作者:pao,如若轉載,請注明出處:http://www.www58058.com/42503

(0)
paopao
上一篇 2016-09-01
下一篇 2016-09-01

相關推薦

  • 讀寫執行權限對文件和目錄的影響

    權限的作用 對于linux運維工作來說,熟練掌握文件管理技能是非常重要的,所謂“一切皆文件”,控制住文件的權限,可以說也就控制住了linux系統。而且,運維的工作要和成千上萬的文件打交道,對于文件屬性的熟識程度對于工作的順利開展有著深遠的影響。綜上,了解文件,熟悉文件,掌握文件,是我們運維的一個重要的課程。 不同權限對文件和目錄的影響 首先,我們現對權限進行…

    Linux干貨 2017-07-30
  • 第三周作業

    查看鏈接:http://note.youdao.com/noteshare?id=9b1aa0906b0918cc5cb557aa348e82da

    Linux干貨 2016-09-19
  • linux命令簡單應用

    創建/tmp目錄下的:a_c, a_d, b_c, b_d touch /tmp/{a,b}_{c,d} [root@bogon ~]# tree /tmp /tmp |– a_c |– a_d |– b_c |– b_d 創建/tmp/mylinux目錄下的: mylinux/ ├── bin ├── boo…

    Linux干貨 2016-11-06
  • 第一周-Linux Basic

        本文主要介紹了計算機的組成及功能、Linux的發行版、Linux哲學思想、一些基本命令、命令幫助的獲取、文件系統層級結構標準。 一、計算機的組成及功能     計算機由硬件和軟件兩大類組成     硬件   &n…

    Linux干貨 2016-11-28
  • CentOS 6啟動過程總結與GRUB問題修復

    一、CentOS 6 的啟動流程 第一步:加電自檢(POST) 主要檢查硬件設備是否存在并能正常運行,如:CPU、內存、硬盤、風扇、輸入輸出設備等。自檢功能主要是通過BIOS來實現的,BIOS程序是裝載在一個硬件芯片CMOS上的,加電過程就是給CMOS通電,然后啟動BIOS程序,BIOS程序會根據CMOS上面的一些配置信息區讀取其他的硬件設備信息并檢測其是否…

    Linux干貨 2016-09-16
  • 文本字符處理工具

    文件查看命令 cat,tac,rev cat [options] [file]     -E:顯示行結束符     -n:顯示行號                    nl file 也能實現相同的功能   …

    Linux干貨 2017-02-25

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-01 14:03

    從原理到實戰,圖文并茂,詳略得當,細心亮點頗多,贊

欧美性久久久久