天天看點

CentOS 5 LVM邏輯卷管理

相關知識點

LVM: Logical Volume Manager邏輯卷管理,它是一種磁盤的管理方式,是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬碟和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。通過LVM系統管理者可以輕松管理磁盤分區。

卷組volume group (VG)

卷組是LVM中最高抽象層,是由一個或多個實體卷所組成的存儲器池。

實體卷physical volume (PV)

典型的實體卷是硬碟分區,但也可以是整個硬碟或已建立的Software RAID 卷。

邏輯卷logical volume (LV)

邏輯卷相當于非LVM系統中的分區,它在卷組上建立,是一個标準的塊裝置,可以在其上建立檔案系統。

實體塊physical extent (PE)

實體卷按大小相等的“塊”為機關存儲,塊的大小與卷組中邏輯卷塊的大小相同。

邏輯塊logical extent (LE)

邏輯卷按“塊”為機關存儲,在一卷組中的所有邏輯卷的塊大小是相同的。

作業環境

注:以下的操作是在VirtualBox4.1虛拟機環境下進行的。

系統版本:CentOS 5.8

硬碟大小(虛拟硬碟):20G

一、先檢視系統空間使用情況。

根據關注點的不同,使用不同的使命檢視系統空間的使用情況。

檢視磁盤的分區資訊,可以看到,系統除了引導分區(100M)外,其他所有的空間都在LVM裡。

[root@sqing ~]# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        2610    20860402+  8e  Linux LVM

檢視節點的使用情況

[root@sqing ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup00-lv_root

                      9.7G  926M  8.3G  10% /

/dev/sda1              99M   13M   82M  13% /boot

tmpfs                 506M     0  506M   0% /dev/shm

檢視邏輯卷組資訊,可以看到,vg中有7.88G的剩餘空間。

[root@sqing ~]# vgscan

  Reading all physical volumes.  This may take a while...

  Found volume group "VolGroup00" using metadata type lvm2

[root@sqing ~]# vgdisplay

  --- Volume group ---

  VG Name               VolGroup00

  System ID             

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  4

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                2

  Open LV               2

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               19.88 GB

  PE Size               32.00 MB

  Total PE              636

  Alloc PE / Size       448 / 12.00 GB

  Free  PE / Size       188 / 7.88 GB

VG UUID               I6y3EN-nU8P-PWMp-gA32-rJ2W-E361-9zVTGH

檢視邏輯卷資訊,可以看到,根分區大小為10G,交換分區(swap)大小為2G。

[root@sqing ~]# lvscan

  ACTIVE            '/dev/VolGroup00/lv_root' [10.00 GB] inherit

  ACTIVE            '/dev/VolGroup00/lv_swap' [2.00 GB] inherit

二、裝機時,swap分區大小設定為2G,現在發現不夠用,需要将其擴大到4G。

擴大swap邏輯卷

步驟:首先取消激活swap空間,然後修改swap分區大小,接着将swap分區設定為交換區,最後激活swap空間。

[root@sqing ~]# swapoff -a

[root@sqing ~]# lvresize -L 4G /dev/VolGroup00/lv_swap   #指定大小增加到4G

  Extending logical volume lv_swap to 4.00 GB

  Logical volume lv_swap successfully resized

[root@sqing ~]# mkswap -f /dev/VolGroup00/lv_swap 

Setting up swapspace version 1, size = 4294963 kB

[root@sqing ~]# swapon -a

(注:如果縮小swap邏輯卷,其操作步驟與上述步驟相同。)

操作完成後,檢視目前的lv、vg資訊,可以看到lv_swap現在已經是4G了,而邏輯卷的空閑大小由先前的7.88G,變為5.88G。

  ACTIVE            '/dev/VolGroup00/lv_swap' [4.00 GB] inherit

  Metadata Sequence No  6

  Alloc PE / Size       448 / 14.00 GB

  Free  PE / Size       188 / 5.88 GB

  VG UUID               I6y3EN-nU8P-PWMp-gA32-rJ2W-E361-9zVTGH

三、現在要将磁盤剩餘空間利用起來。

在/dev/VolGroup00上新增一個邏輯分區,命名為lv_data,大小為邏輯卷組VolGroup00中剩餘的空間(5.88G)。

建立邏輯卷lv_data

步驟:建立新分區;接着格式化新分區;然後挂載新分區(Linux上不能直接使用分區,使用分區時是通過目錄存儲的,故需将lv_data挂載到一個目錄上)

(注:以下操作,本想一下子使用剩餘的所有空間5.88G,但由于系統資料與顯示資料(G級位元組)上的出入,輸入的數字5.88G過大,後改為5.86G)

[root@sqing ~]# lvcreate -L 5.88G -n lv_data /dev/VolGroup00 

  Rounding up size to full physical extent 5.91 GB

  Volume group "VolGroup00" has insufficient free space (188 extents): 189 required.

[root@sqing ~]# lvcreate -L 5.86G -n lv_data /dev/VolGroup00

  Rounding up size to full physical extent 5.88 GB

  Logical volume "lv_data" created

[root@sqing ~]# mkfs.ext3 /dev/VolGroup00/lv_data 

mke2fs 1.39 (29-May-2006)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

770048 inodes, 1540096 blocks

77004 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1577058304

47 block groups

32768 blocks per group, 32768 fragments per group

16384 inodes per group

Superblock backups stored on blocks: 

        32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

檢視此時的vg資訊,發現剩餘空間剛好用完。

[root@sqing ~]# vgdisplay 

  Metadata Sequence No  7

  Cur LV                3

  Open LV               3

  Alloc PE / Size       636 / 19.88 GB

  Free  PE / Size       0 / 0   

[root@sqing ~]# mkdir /home/data

[root@sqing ~]# mount /dev/VolGroup00/lv_data /home/data

/dev/mapper/VolGroup00-lv_data

                      5.8G  140M  5.4G   3% /home/data

四、假設,為了友善管理,要在lv_data邏輯卷上擠出一部分空間(隻留3G),用來建立一個邏輯卷lv_develop。那麼,需要先縮小lv_data,然後再建lv_develop。出于資料安全的考慮,宜将邏輯卷從目錄中解除安裝下來,再進行大小調整。

這裡為了驗證測試,在解除安裝之前,先在/home/data目錄下建立一些檔案。

[root@sqing ~]# cd /home/data/

[root@sqing data]# touch 001.txt 002.txt 003.txt

[root@sqing data]# ls   #解除安裝lv_data前,/home/data目錄下有資料

001.txt  002.txt  003.txt  lost+found

[root@sqing data]# cd

[root@sqing ~]# umount /home/data/

[root@sqing ~]# ls /home/data/    #解除安裝lv_data後,/home/data目錄為空

[root@sqing ~]#

縮小邏輯卷lv_data

步驟:用e2fsck指令檢查分區,再更改檔案系統大小,最後縮小邏輯卷大小

[root@sqing ~]# e2fsck -f /dev/VolGroup00/lv_data 

e2fsck 1.39 (29-May-2006)

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/VolGroup00/lv_data: 14/770048 files (7.1% non-contiguous), 59982/1540096 blocks

[root@sqing ~]# resize2fs -p /dev/VolGroup00/lv_data 

resize2fs 1.39 (29-May-2006)

The filesystem is already 1540096 blocks long.  Nothing to do!

[root@sqing ~]# lvresize -L 3G /dev/VolGroup00/lv_data 

  WARNING: Reducing active logical volume to 3.00 GB

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce lv_data? [y/n]: y

  Reducing logical volume lv_data to 3.00 GB

  Logical volume lv_data successfully resized

檢視此時的vg資訊,發現已經騰出了2.88G的空間。

  Metadata Sequence No  8

  Alloc PE / Size       544 / 17.00 GB

  Free  PE / Size       92 / 2.88 GB

此時的lv_data邏輯卷大小為3G。

  ACTIVE            '/dev/VolGroup00/lv_data' [3.00 GB] inherit

建立邏輯卷lv_develop

步驟:建立新分區;接着格式化新分區。

(注:吸收上面的教訓,邏輯卷的大小不要一下子設為2.88G,而是要小一些,這裡設為2.8G)

[root@sqing ~]# lvcreate -L 2.8G -n lv_develop /dev/VolGroup00

  Rounding up size to full physical extent 2.81 GB

  Logical volume "lv_develop" created

[root@sqing ~]# mkfs.ext3 /dev/VolGroup00/lv_develop 

368736 inodes, 737280 blocks

36864 blocks (5.00%) reserved for the super user

Maximum filesystem blocks=754974720

23 block groups

16032 inodes per group

        32768, 98304, 163840, 229376, 294912

Creating journal (16384 blocks): done

This filesystem will be automatically checked every 33 mounts or

Lv_develop建立好了,大小了2.81G。

  ACTIVE            '/dev/VolGroup00/lv_data' [3.00 GB] inherit

  ACTIVE            '/dev/VolGroup00/lv_develop' [2.81 GB] inherit

檢視此時的vg資訊,發現還有64M的剩餘空間。

  Metadata Sequence No  9

  Cur LV                4

  Alloc PE / Size       634 / 19.81 GB

  Free  PE / Size       2 / 64.00 MB

為了充分利用空間資源,将64M空閑空間加入到lv_develop中,

擴大邏輯卷lv_develop

步驟:先擴大邏輯分區大小,再更改檔案系統以使其擴容

[root@sqing ~]# lvresize -L +64M /dev/VolGroup00/lv_develop #增加64M,注意前面有個加号

  Extending logical volume lv_develop to 2.88 GB

  Logical volume lv_develop successfully resized

[root@sqing ~]# resize2fs -p /dev/VolGroup00/lv_develop 

Resizing the filesystem on /dev/VolGroup00/lv_develop to 753664 (4k) blocks.

The filesystem on /dev/VolGroup00/lv_develop is now 753664 blocks long.

  ACTIVE            '/dev/VolGroup00/lv_develop' [2.88 GB] inherit

檢視此時的vg資訊,發現剩餘空間全部用光了,很好。

  Metadata Sequence No  10

  Free  PE / Size       0 / 0   

将兩個邏輯卷挂載到指定目錄中。

[root@sqing ~]# mkdir /home/develop

[root@sqing ~]# mount /dev/VolGroup00/lv_data /home/data/

[root@sqing ~]# mount /dev/VolGroup00/lv_develop /home/develop/

檢查一下lv_data中資料

(注:lv_data縮小後的空間大小,一定要大于縮小之前已用空間的大小)

[root@sqing ~]# ls /home/data/    #/home/data目錄下的資料全都在

[root@sqing ~]# ls /home/develop/    #/home/develop目錄為空是當然的

lost+found

至此,LVM相關操作完畢。

為了使系統在重新開機後自動挂載邏輯卷,需要挂載lv_data、lv_develop的資訊寫入到/etc/fstab中,/etc/fstab修改後的内容如下:

[root@sqing ~]# cat /etc/fstab 

/dev/VolGroup00/lv_root /                       ext3    defaults        1 1

LABEL=/boot             /boot                   ext3    defaults        1 2

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

/dev/VolGroup00/lv_swap swap                    swap    defaults        0 0

/dev/VolGroup00/lv_data /home/data                ext3    defaults        0 0

/dev/VolGroup00/lv_develop /home/develop          ext3    defaults        0 0

以上操作,一年前就已經學會了的,不過不常玩,便生疏了,如今重溫,撰寫此筆記。

實際工作中,會遇加硬碟的情況,要先建立分區(主分區、擴充分區)、格化、挂載,然後,才能使用以上指令進行LVM管理。

本文轉自Sunshyfangtian 51CTO部落格,原文連結:http://blog.51cto.com/sunshyfangtian/860018,如需轉載請自行聯系原作者

繼續閱讀