CentOS 6.5 LVM磁盤管理學習筆記

    在系統運維和服務器管理過程中,經常遇到服務器磁盤容量不足,需要在線擴容的情況。普通磁盤分區的管理方式在邏輯分區劃好之後就無法改變其大小。而LVM可以實現Linux服務器下面磁盤空間的在線擴容和動態管理,相對於普通的磁盤分區有很大的靈活性。

一、LVM簡介

    LVM Logical VolumeManager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制,它由Heinz MauelshagenLinux 2.4內核上實現。LVM將一個或多個硬盤的分區在邏輯上進行組合,做爲一個大的硬盤空間來使用,當硬盤的剩餘空間不夠的時候,可以將其它的硬盤加入到分區當中,這樣可以實現磁盤空間的動態管理。

二、LVM基本術語

物理卷(physical volumePV):物理卷就是指硬盤分區,也可以是整個硬盤或已創建的RAID ,是LVM的基本存儲設備,與普通物理存儲介質的區別是該設備包含有LVM相關的管理參數。


卷組(volume groupVG):卷組是由一個或多個物理卷所組成的存儲池,在卷組上能創建一個或多個“LVM分區”(邏輯卷)。


邏輯卷(logical volumeLV):LVM的邏輯卷類似於非LVM系統中的硬盤分區,它建立在卷組之上,是一個標準的塊設備,在邏輯卷之上可以建立文件系統。


物理塊(physical extentPE):物理卷以大小相等的物理塊爲存儲的基本單位,同時也是LVM尋址的最小單元。


邏輯塊(logical extentLE):邏輯卷以大小相等的邏輯塊爲存儲的基本單位,在同一個卷組中,LE的大小和PE是相等的,並且一一對應。

三、通過LVM分區方式安裝Centos

1.選擇安裝類型,選擇最後一個複選框,即創建自定義佈局。

wKiom1Y7Cz2h09oCAAHVIRHZ1EM670.jpg

2.首先劃分/boot分區,/boot分區建議使用物理分區。

wKioL1Y7C5PifFBZAAHkk2bYtiM379.jpg

3.將剩餘空間劃分爲一個物理卷(PV)。

wKiom1Y7DAiyE0UsAAIJ5KrzDzk477.jpg

4.創建一個卷組(VG)。默認卷組名爲VolGroup00,修改卷組名爲vg51cto_lv

wKioL1Y7DFaSIDhMAAHchHqc8Kg874.jpg

5.VG上面創建邏輯卷(LV)。邏輯卷默認爲LogVol00LogVol01……末兩位由00開始依次遞增。

wKioL1Y7DGixKpw7AAJcyjuFjjw824.jpg

6.LVM分區完成。

wKiom1Y7DEvBnaBDAAHc-viDCFY925.jpg

7.df -h 查看磁盤空間。

[root@hadoop01 ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/vg51cto_lv-LogVol01  9.9G 1.2G  8.2G  13% /
tmpfs                            495M     0 495M   0% /dev/shm
/dev/sda1                        194M   29M 155M  16% /boot
/dev/mapper/vg51cto_lv-LogVol03   20G 172M   19G   1% /data
/dev/mapper/vg51cto_lv-LogVol02  5.0G 138M  4.6G   3% /home
/dev/mapper/vg51cto_lv-LogVol04   23G 173M   22G   1% /usr/local

四、LVM管理

第一部分:卷組(volume group VG)相關的操作。

1.查看卷組(VG)名,卷組名爲vg51cto_lv

[root@hadoop01 ~]# vgscan
  Reading allphysical volumes.  This may take awhile...
  Foundvolume group "vg51cto_lv" using metadata type lvm2

2.查看卷組(VG)包含的PVLV信息。

[root@hadoop01 ~]# vgdisplay -v vg51cto_lv
    Usingvolume group(s) on command line
    Findingvolume group "vg51cto_lv"
  --- Volumegroup ---
  VGName               vg51cto_lv
  SystemID            
  Format                lvm2
  MetadataAreas        1
  MetadataSequence No  6
  VGAccess             read/write
  VGStatus             resizable
  MAX LV                0
  Cur LV                5
  OpenLV               5
  Max PV                0
  Cur PV                1
  Act PV                1
  VGSize               59.80 GiB
  PESize               4.00 MiB
  TotalPE              15309
  Alloc PE /Size       15309 / 59.80 GiB
  Free  PE / Size       0 / 0  
  VGUUID               uF4S1y-21AZ-KOfs-rNIF-lFmN-wQ75-2sX7F1
  
  --- Logicalvolume ---
  LVPath               /dev/vg51cto_lv/LogVol04
  LVName                LogVol04
  VGName                vg51cto_lv
  LVUUID               rvOZeO-Oz2G-wx7Z-u0b6-CvXj-FKEj-RwCLXO
  LV WriteAccess        read/write
  LV Creationhost, time hadoop01, 2015-11-05 17:30:51 +0800
  LVStatus              available
  # open                 1
  LVSize                22.80 GiB
  CurrentLE             5837
 Segments               1
 Allocation             inherit
  Read aheadsectors     auto
  - currentlyset to     256
  Blockdevice           253:2
  
  --- Logicalvolume ---
  LVPath               /dev/vg51cto_lv/LogVol01
  LVName                LogVol01
  VGName                vg51cto_lv
  LVUUID               d6YKrd-fWMJ-x61I-cfWG-v2me-Hn8V-xdm96L
  LV WriteAccess        read/write
  LV Creationhost, time hadoop01, 2015-11-05 17:30:56 +0800
  LVStatus              available
  # open                 1
  LVSize                10.00 GiB
  CurrentLE             2560
 Segments               1
 Allocation             inherit
  Read aheadsectors     auto
  - currentlyset to     256
  Blockdevice           253:0
  
  --- Logicalvolume ---
  LVPath               /dev/vg51cto_lv/LogVol00
  LVName                LogVol00
  VGName                vg51cto_lv
  LVUUID               hSyH2r-mvMV-th7q-geKg-sVpm-O1zJ-D6DwT8
  LV WriteAccess        read/write
  LV Creationhost, time hadoop01, 2015-11-05 17:30:58 +0800
  LVStatus              available
  # open                 1
  LVSize                2.00 GiB
  CurrentLE             512
 Segments               1
 Allocation             inherit
  Read aheadsectors     auto
  - currentlyset to     256
  Blockdevice           253:1
  
  --- Logicalvolume ---
  LVPath               /dev/vg51cto_lv/LogVol03
  LVName                LogVol03
  VGName                vg51cto_lv
  LVUUID               gKHLfz-O5Lm-TGMq-2LcF-xcH1-ASea-QCVVNc
  LV WriteAccess        read/write
  LV Creationhost, time hadoop01, 2015-11-05 17:30:58 +0800
  LVStatus              available
  # open                 1
  LVSize                20.00 GiB
  CurrentLE             5120
 Segments               1
  Allocation             inherit
  Read aheadsectors     auto
  - currentlyset to     256
  Blockdevice           253:3
  
  --- Logicalvolume ---
  LVPath               /dev/vg51cto_lv/LogVol02
  LVName                LogVol02
  VGName                vg51cto_lv
  LVUUID               lkqKmO-Dt0u-3CnB-UqeD-d6gc-2rmP-gWtKVp
  LV WriteAccess        read/write
  LV Creationhost, time hadoop01, 2015-11-05 17:31:00 +0800
  LVStatus              available
  # open                 1
  LVSize                5.00 GiB
  CurrentLE             1280
 Segments               1
 Allocation             inherit
  Read aheadsectors     auto
  - currentlyset to     256
  Blockdevice           253:4
  
  ---Physical volumes ---
  PV Name               /dev/sda2    
  PVUUID              pKC6SA-fkfe-OAl2-scVr-tq0h-EAXD-AWpwgX
  PVStatus             allocatable
  Total PE /Free PE    15309 / 0

3.修改卷組名,由vg51cto_lv修改成vg51cto

1)修改卷組名的命令爲vgrename,語法如下:

vgrename OldVolumeGroupNameNew VolumeGroupName

[root@hadoop01 ~]# vgrename vg51cto_lv vg51cto
  Volumegroup "vg51cto_lv" successfully renamed to "vg51cto"

2)修改/etc/fstab配置文件,把vg51cto_lv修改成vg51cto

[root@hadoop01 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Nov  5 17:33:46 2015
#
# Accessible filesystems, by reference, aremaintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8)and/or blkid(8) for more info
#
/dev/mapper/vg51cto-LogVol01 /                       ext4    defaults        1 1
UUID=9c02e519-3b85-4918-b9fd-395535cab496/boot       ext4    defaults        1 2
/dev/mapper/vg51cto-LogVol03 /data                   ext4    defaults        1 2
/dev/mapper/vg51cto-LogVol02 /home                   ext4    defaults        1 2
/dev/mapper/vg51cto-LogVol04 /usr/local              ext4    defaults        1 2
/dev/mapper/vg51cto-LogVol00 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

3)修改grub.conf配置文件,把vg51cto_lv修改成vg51cto

[root@hadoop01 ~]# vim /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub aftermaking changes to this file
# NOTICE: You have a /boot partition.  Thismeans that
#         all kernel and initrd paths are relative to /boot/, eg.
#         root (hd0,0)
#         kernel /vmlinuz-version ro root=/dev/mapper/vg51cto_lv-LogVol01
#         initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)
         root(hd0,0)
         kernel/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg51cto-LogVol01 rd_NO_LUKSrd_LVM_LV=vg51cto/LogVol01 rd_LVM_LV=vg51cto/LogVol00 rd_NO_MD crashkernel=autoLANG=zh_CN.UTF-8  KEYBOARDTYPE=pcKEYTABLE=us rd_NO_DM rhgb quiet
         initrd/initramfs-2.6.32-431.el6.x86_64.img

4reboot重啓後用df -h查看。

[root@hadoop01 ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg51cto-LogVol01  9.9G 1.2G  8.2G  13% /
tmpfs                         495M     0 495M   0% /dev/shm
/dev/sda1                     194M  29M  155M  16% /boot
/dev/mapper/vg51cto-LogVol03   20G 172M   19G   1% /data
/dev/mapper/vg51cto-LogVol02  5.0G 138M  4.6G   3% /home
/dev/mapper/vg51cto-LogVol04   23G 173M   22G   1% /usr/local

第二部分:邏輯卷(logical volumeLV)相關的操作。

1.查看邏輯卷(LV)名。

使用LVM安裝系統時,默認的卷組名爲VolGroup00,卷組內的邏輯卷爲LogVol00LogVol01……末兩位由00開始依次遞增。

[root@hadoop01 ~]# lvscan
  ACTIVE            '/dev/vg51cto/LogVol04' [22.80 GiB]inherit
  ACTIVE            '/dev/vg51cto/LogVol01' [10.00 GiB]inherit
  ACTIVE            '/dev/vg51cto/LogVol00' [2.00 GiB]inherit
  ACTIVE            '/dev/vg51cto/LogVol03' [20.00 GiB]inherit
  ACTIVE            '/dev/vg51cto/LogVol02' [5.00 GiB]inherit

2.查看邏輯卷詳細信息

lvdisplay 命令查看所有邏輯卷的詳細信息

lvdisplay  邏輯卷名稱

[root@hadoop01 ~]# lvdisplay /dev/vg51cto/LogVol00
  --- Logicalvolume ---
  LVPath                /dev/vg51cto/LogVol00
  LVName                LogVol00
  VGName                vg51cto
  LVUUID               hSyH2r-mvMV-th7q-geKg-sVpm-O1zJ-D6DwT8
  LV WriteAccess        read/write
  LV Creationhost, time hadoop01, 2015-11-05 17:30:58 +0800
  LVStatus              available
  # open                 1
  LVSize                2.00 GiB
  CurrentLE             512
 Segments               1
 Allocation             inherit
  Read aheadsectors     auto
  - currentlyset to     256
  Block device           253:1

3.修改邏輯卷名

1)修改邏輯卷命令爲lvrename,語法如下:

lvrename OldLogicalVolumePath NewLogicalVolumePath
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol00 /dev/vg51cto/lv_swap
  Renamed"LogVol00" to "lv_swap" in volume group "vg51cto"
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol01 /dev/vg51cto/lv_root
  Renamed"LogVol01" to "lv_root" in volume group "vg51cto"
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol02 /dev/vg51cto/lv_home
  Renamed"LogVol02" to "lv_home" in volume group "vg51cto"
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol03 /dev/vg51cto/lv_data
  Renamed"LogVol03" to "lv_data" in volume group "vg51cto"
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol04 /dev/vg51cto/lv_usr
  Renamed"LogVol04" to "lv_usr" in volume group "vg51cto"

2)修改/etc/fstab配置文件。

[root@hadoop01 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Nov  5 17:33:46 2015
#
# Accessible filesystems, by reference, aremaintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8)and/or blkid(8) for more info
#
/dev/mapper/vg51cto-lv_root /                       ext4    defaults        1 1
UUID=9c02e519-3b85-4918-b9fd-395535cab496/boot      ext4    defaults        1 2
/dev/mapper/vg51cto-lv_data /data                   ext4    defaults        1 2
/dev/mapper/vg51cto-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg51cto-lv_usr /usr/local               ext4    defaults        1 2
/dev/mapper/vg51cto-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc   defaults        0 0

3)修改grub.conf配置文件。

[root@hadoop01 ~]# vim /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub aftermaking changes to this file
# NOTICE: You have a /boot partition.  Thismeans that
#         all kernel and initrd paths are relative to /boot/, eg.
#         root (hd0,0)
#         kernel /vmlinuz-version ro root=/dev/mapper/vg51cto_lv-LogVol01
#         initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)
         root(hd0,0)
         kernel/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg51cto-lv_root rd_NO_LUKSrd_LVM_LV=vg51cto/lv_root rd_LVM_LV=vg51cto/lv_swap rd_NO_MD crashkernel=autoLANG=zh_CN.UTF-8  KEYBOARDTYPE=pc KEYTABLE=usrd_NO_DM rhgb quiet
         initrd/initramfs-2.6.32-431.el6.x86_64.img

第三部分:物理卷(physical volumePV)相關操作。

1.查看物理卷(PV)名,這裏爲/dev/sda2linuxSCSI的第1塊硬盤爲/dev/sda,第2塊硬盤爲/dev/sdb,依此類推。

[root@hadoop01 ~]# pvscan
  PV /dev/sda2   VG vg51cto  lvm2 [59.80 GiB / 0    free]
  Total: 1[59.80 GiB] / in use: 1 [59.80 GiB] / in no VG: 0 [0   ]

2.查看物理卷詳細信息。

[root@hadoop01 ~]# pvdisplay
  ---Physical volume ---
  PVName               /dev/sda2
  VGName               vg51cto
  PVSize               59.80 GiB / not usable 3.00 MiB
 Allocatable           yes (butfull)
  PESize               4.00 MiB
  TotalPE              15309
  FreePE               0
  AllocatedPE          15309
  PVUUID              pKC6SA-fkfe-OAl2-scVr-tq0h-EAXD-AWpwgX

四、LVM空間管理

1.LVM減少LV空間

舉例:減少/data空間,從20G減少到10G

1)卸載設備(Unmount thefilesystem

[root@hadoop01 ~]# umount  /data/

2e2fsck命令檢查文件系統(Checkthe filesystem

[root@hadoop01 ~]# e2fsck -f/dev/mapper/vg51cto-lv_data
e2fsck 1.41.12 (17-May-2010)
第一步: 檢查inode,塊,和大小
第二步: 檢查目錄結構
第3步: 檢查目錄連接性
Pass 4: Checking reference counts
第5步: 檢查簇概要信息
/dev/mapper/vg51cto-lv_data: 11/1310720files (0.0% non-contiguous), 126289/5242880 blocks

3resize2fs命令調整lv大小,10G表示調整後/data剩餘空間。

[root@hadoop01 ~]# resize2fs/dev/mapper/vg51cto-lv_data 10G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on/dev/mapper/vg51cto-lv_data to 2621440 (4k) blocks.
The filesystem on/dev/mapper/vg51cto-lv_data is now 2621440 blocks long.

4lvreduce命令減少文件系統大小(Resizethe filesystem),表示將/data的空間減少9G

[root@hadoop01 ~]# lvreduce -L -9G  /dev/mapper/vg51cto-lv_data
 WARNING: Reducing active logical volume to 11.00 GiB
 THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_data?[y/n]: y
 Reducing logical volume lv_data to 11.00 GiB
 Logical volume lv_data successfully resized

5vgs命令查看卷組剩餘空間爲9G

wKioL1Y8ETWzReKWAAB4Hdnlwqw380.jpg

6mount 文件系統並查看磁盤空間剩餘空間。

wKioL1Y8EUvhU_xmAAHA76cSkiY292.jpg

2LVM增加LV空間

舉例:將剛纔9G空間增加到/home分區。

1vgs命令查看是否有空閒空間可以擴容。

[root@hadoop01 ~]# vgs
 VG      #PV #LV #SN Attr   VSize VFree
 vg51cto   1   5   0wz--n- 59.80g 9.00g

2df -h查看當前磁盤空間

wKioL1Y8FZGgtEsCAAF6pSKEta8054.jpg

3)lvextend命令將home分區空間增加9G

[root@hadoop01 ~]# lvextend -L +9G -f -r /dev/mapper/vg51cto-lv_home
 Extending logical volume lv_home to 14.00 GiB
 Logical volume lv_home successfully resized
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg51cto-lv_homeis mounted on /home; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of/dev/mapper/vg51cto-lv_home to 3670016 (4k) blocks.
The filesystem on/dev/mapper/vg51cto-lv_home is now 3670016 blocks long.

4)查看分區是否增加成功。

wKioL1Y8FbvjeI_xAAF4N4xIcKY562.jpg

五、LVM 在線擴容

服務器磁盤空間不足,添加新的硬盤後,需要把空間添加當前分區當中。

linuxSCSI的第1個硬盤/dev/sda,第2個硬盤/dev/sdb依此類推。其中服務器第一塊硬盤/dev/sda已經劃分爲LVM分區。/dev/sdb是新加的硬盤。

1)  pvcreate  /dev/sdb命令初始化分區sdb爲物理卷(PV)。

[root@hadoop01 ~]# pvcreate /dev/sdb
 Physical volume "/dev/sdb" successfully created

2pvdisplay命令顯示物理卷的信息

[root@hadoop01 ~]# pvdisplay
  ---Physical volume ---
  PVName               /dev/sda2
  VGName               vg51cto
  PVSize               59.80 GiB / not usable3.00 MiB
 Allocatable           yes (butfull)
  PESize               4.00 MiB
 Total PE              15309
 Free PE               0
 Allocated PE          15309
  PVUUID              pKC6SA-fkfe-OAl2-scVr-tq0h-EAXD-AWpwgX
  
 "/dev/sdb" is a new physical volume of "40.00 GiB"
  ---NEW Physical volume ---
  PVName               /dev/sdb
  VGName              
  PVSize               40.00 GiB
 Allocatable           NO
  PESize               0  
 Total PE              0
 Free PE               0
 Allocated PE          0
  PVUUID              dMeOLS-Sks3-8k3q-pVWp-Iuz2-0Hh2-8njjhY

3vgextend命令將pv加入到vgvgcreate命令爲新創建vgvgcreate  vg51cto  /dev/sdb,這裏的vg51cto已經存在,只需要用vgextend加入即可。

[root@hadoop01 ~]# vgextend vg51cto/dev/sdb
 Volume group "vg51cto" successfully extended

4)用vgdisplay命令查看vg信息,看到已經有40G空閒PE

wKioL1Y8OcbjTJ74AAHIbPw1NKE140.jpg

5lvextend命令擴展分區,將40G空間全部添加到/data分區。

直接增加40G空間不足,報下面的錯誤,因此添加39.9G的空間。

Insufficient free space:10240 extents needed, but only 10239 available

[root@hadoop01 ~]# lvextend -L +39.99G/dev/mapper/vg51cto-lv_data
 Rounding size to boundary between physical extents: 39.99 GiB
 Extending logical volume lv_data to 50.99 GiB
  Logicalvolume lv_data successfully resized

6)上一步操作只是增加了邏輯卷的大小,用resize2fs命令重新定義文件系統的大小。

[root@hadoop01 ~]# resize2fs  /dev/mapper/vg51cto-lv_data
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg51cto-lv_datais mounted on /data; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 4
Performing an on-line resize of/dev/mapper/vg51cto-lv_data to 13367296 (4k) blocks.
The filesystem on/dev/mapper/vg51cto-lv_data is now 13367296 blocks long.

7)查看磁盤在線擴容是否正常。

wKioL1Y8Oi7SuINIAAGEeeo6L38277.jpg

    總結:

      1/分區不能umount,說明/分區只能擴容,不能減少/分區的空間。

      2)減少分區的時候需要卸載分區,進行umount操作。

      3)擴容的分區的時候不需要卸載分區。

      4)重命名vg,lv命名後,需要修改/etc/fstab/etc/grub.conf引導文件。


     








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