LVM磁碟管理

lpwebnet發表於2013-11-21
LVM是Logical Volume Manager(邏輯卷管理器)的簡寫,它為主機提供了更高層次的磁碟儲存管理能力。LVM可以幫助系統管理員為應用與使用者方便地分配儲存空間。在LVM 管理下的邏輯卷可以按需改變大小或新增移除。另外,LVM可以為所管理的邏輯卷提供定製的命名標識。因此,使用LVM主要是方便了對儲存系統的管理,增加了系統的擴充套件性。
       目前LVM在Linux下有兩個版本,分別是LVM 1和LVM 2,LVM2不僅僅是Linux邏輯卷管理在版本與功能上的升級,而且是架構在一個新的核心儲存子系統(DM,device-mapper)之上的。這個 儲存子系統提供了一個輕量級的、可擴充套件的卷管理設施。除了在原有LVM卷管理功能的基礎上,Linux的邏輯卷管理將會為使用者提供更多的儲存管理方案,如 映象、加密卷、多路徑技術。
070711193149-thumb.jpg在上面的LVM結構圖中,涉及到了很多LVM的相關術語,那麼關於這些術語的詳細說明如下:
物理卷(physical volume,PV)

物理卷就是指硬碟分割槽,也可以是整個硬碟或已建立的軟RAID ,是LVM的基本儲存裝置,與普通物理儲存介質的區別是該裝置包含有LVM相關的管理引數。

卷組(volume group,VG)

卷組是由一個或多個物理卷所組成的儲存池,在卷組上能建立一個或多個"LVM分割槽"(邏輯卷)。只有透過PV將分割槽變成物理卷後, 我們才能將這變成的一個或多個物理卷組合成一個卷組.就相當於,將幾個班的教室合併成一個年級(vgcreate).以後,就可以隨意分配學生了 (LV).當然,前提就是將這些學生pvcreate成同一個年段(PV)了.

邏輯卷(logical volume,LV)

LVM 的邏輯卷類似於非LVM系統中的硬碟分割槽,它建立在卷組之上,是一個標準的塊裝置,在邏輯卷之上可以建立檔案系統。可以做這樣一個設想來理解以上三者的關 系:如果把PV比做地球的一個板塊,VG則是一個地球,因為地球是由多個板塊組成的,那麼在地球上劃分一個區域並標記為亞洲,則亞洲就相當於一個LV。
假設我們一個陣列,裝置名為:/dev/sdb

    [root@SERVER2 dev]# fdisk /dev/sdb
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel. Changes will remain in memory only,
    until you decide to write them. After that, of course, the previous
    content won't be recoverable.


    The number of cylinders for this disk is set to 145684.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
       (e.g., DOS FDISK, OS/2 FDISK)
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

    Command (m for help): p

    Disk /dev/sdb: 1198.2 GB, 1198295875584 bytes
    255 heads, 63 sectors/track, 145684 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

       Device Boot      Start         End      Blocks   Id  System

建立物理卷PV:

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

建立VG卷組:

    [root@SERVER2 dev]# vgscan
    Reading all physical volumes.  This may take a while...#一般我們初始建立卷組時都要先scan下.
    Found volume group "soleil" using metadata type lvm2
    Found volume group "VolGroup00" using metadata type lvm2

    [root@SERVER2 dev]# vgdisplay soleil
      --- Volume group ---
      VG Name               soleil
      System ID           
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  26
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               1.09 TB
      PE Size               4.00 MB
      Total PE              285695
      Alloc PE / Size       285695 / 1.09 TB
      Free  PE / Size       0 / 0 
      VG UUID               iEGRp4-yLeD-Thkj-4YRA-o0HP-82KY-W2YgTS

下面是建立邏輯卷:

    [root@localhost /]# lvcreate -n data -L 1.9TBM vg0  #建立名為data,大小1.9TB
      /dev/cdrom: open failed: Read-only file system
      Rounding up size to full physical extent 1.92TB
      Logical volume "data" created
    [root@SERVER2 dev]# lvdisplay
      --- Logical volume ---
      LV Name                /dev/soleil/data
      VG Name                soleil
      LV UUID                swZafx-tezV-rsMf-wdEb-vlb6-Ko8z-0gUTLU
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                1.09 TB
      Current LE             285695
      Segments               1
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:2
     
      --- Logical volume ---
      LV Name                /dev/VolGroup00/LogVol00
      VG Name                VolGroup00
      LV UUID                Hnct0R-vp1y-tZPl-VMXU-AZ2C-Y6ru-umo4m0
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                134.59 GB
      Current LE             4307
      Segments               1
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:0
     
      --- Logical volume ---
      LV Name                /dev/VolGroup00/LogVol01
      VG Name                VolGroup00
      LV UUID                VZuwuR-JFcA-MDM8-5OGM-yNVe-AXrK-1T1f23
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                1.94 GB
      Current LE             62
      Segments               1
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:1
    [root@SERVER2 dev]# mkfs.ext3 /dev/vg0/data #格式化成ext3格式.
    mke2fs 1.35 (28-Feb-2008)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    3072 inodes, 12288 blocks
    614 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=12582912
    2 block groups
    8192 blocks per group, 8192 fragments per group
    1536 inodes per group
    Superblock backups stored on blocks:
            8193
    Writing inode tables: done
    Creating journal (1024 blocks): done
    Writing superblocks and filesystem accounting information: done
    This filesystem will be automatically checked every 35 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@SERVER2 dev]# mount /dev/vg0/data /mnt/  #mount到/mnt資料夾
    [root@SERVER2 dev]# cp /etc/hosts /mnt/  #複製個檔案進去試下
    [root@SERVER2 dev]# ls /mnt/  #看下,裡面已經有個hosts檔案了.
    lost+found  hosts

    [root@SERVER2 dev]#umount /mnt/
    [root@SERVER2 dev]# lvextend -L +10M /dev/vg0/data  #擴充套件邏輯卷大小
      /dev/cdrom: open failed: Read-only file system
      Rounding up size to full physical extent 12.00 MB
      Extending logical volume data to 1.930TB
      Logical volume data successfully resized
    以上就是在Linux下建立邏輯卷的整個步驟。

LVM的維護
在LVM的日常維護工作中,通常會需要對邏輯卷擴容、新增新的物理卷等操作,下面將結合【例項1】中所建立的邏輯捲來介紹LVM常用的管理操作,如下:

1、啟用卷組

卷組若不被啟用,卷組和邏輯卷是不能被訪問的,在LVM 2裡建立的卷組預設是啟用的,那麼手動啟用卷組的命令是:

# vgchange -a y vgtest

2 logical volume(s) in volume group "vgtest" now active

其中"-a"用於設定指定的卷組是否可用,引數"y"表示啟用卷組,若設定為"n"則表示暫停卷組使用。

2、為卷組增加新的物理卷

當卷組空間不足時,可以加入新的物理捲來擴大卷組容量,這時可用"vgextend"命令來實現,如下:

# vgextend vgtest /dev/sde

Volume group "vgtest" successfully extended

其中"/dev/sde"是新增的物理卷,前提該裝置已經使用"pvcreate"進行了初始化了。

3、從卷組中移除物理卷

要從一個卷組中移除一個物理卷,首先要確認要移除的物理卷沒有被任何邏輯卷正在使用,透過"pvdisplay"命令可檢視到該物理卷資訊,如下:

#pvdisplay /dev/sde

-- Physical volume --

PV Name /dev/sde

VG Name vgtest

PV Size 100.00 MB / not usable 0

Allocatable yes

PE Size (KByte) 4096

Total PE 25

Free PE 25

Allocated PE 0

PV UUID ee2IFC-UHUq-Xg67-icwt-AhdJ-7kRz-JdDjiq

若其中的"Total PE"與" Free PE"相等,表明該物理卷沒有被使用,如果某個物理卷正在被邏輯卷所使用,就需要將該物理卷的資料轉移到其它地方,然後再移除。移除物理卷的命令為"vgreduce",如下:

# vgreduce vgtest /dev/sde

Removed "/dev/sde" from volume group "vgtest"

4、在物理卷間轉移資料

當發現邏輯卷下的某個磁碟有錯誤,或有其它需求要轉移其中物理卷的資料時(如,更換大容量或更高速的物理裝置),那麼可透過"pvmove"來實現在物理卷之間轉移資料,例如,將物理卷"/dev/sdd"上的資料轉移到"/dev/sde"具體操作如下:

# pvmove /dev/sdd /dev/sde

/dev/sdd: Moved: 100.0%

其中/dev/sde的大小一定要大於或等於/dev/sdd,其次在使用"pvmove "前需要用 "modprobe dm-mirror"命令來載入dm-mirror模組,因為"pvmove"在轉移資料時需要用到該模組,而預設系統是不載入該模組的。

5、擴充套件邏輯卷

在前面提到過,LVM提供了方便調整邏輯卷大小的功能,擴充套件邏輯卷大小的命令是"lvextent",例如,將"lvtest2"的空間大小調整到160M,操作如下:

# lvextend -L 160M /dev/vgtest/lvtest2

Extending logical volume lvtest2 to 160.00 MB

Logical volume lvtest2 successfully resized

也可以在原來的基礎增加相應的大小,如下:

# lvextend -L +40M /dev/vgtest/lvtest2

Extending logical volume lvtest2 to 160.00 MB

Logical volume lvtest2 successfully resized

邏輯卷擴充套件後並不會馬上生效,需要使用"resize2fs"命令重新載入邏輯卷的大小,該命令只針對ext2/ext3的檔案系統(若是reiserfs 的檔案系統,則使用"resize_reiserfs"命令),如果該邏輯卷正在使用中,就應該先將該邏輯卷解除安裝後再執行"resize2fs"命令,操作如下:

# umount /dev/vgtest/lvtest2

# resize2fs /dev/vgtest/lvtest2

resize2fs 1.35 (28-Feb-2004)

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

# mount /dev/vgtest/lvtest2 /mnt/lvtest2/

以上這些操作可以透過"ext2online"命令直接來實現,這樣就不用做解除安裝邏輯卷等操作了,如下:

# ext2online /dev/vgtest/lvtest2

ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b

6、刪除邏輯卷

刪除邏輯卷前首先需要將其解除安裝,其命令是"lvremove",如下:

# lvremove /dev/vgtest/lvtest2

Do you really want to remove active logical volume "lvtest2"? [y/n]: y

Logical volume "lvtest2" successfully removed

其中輸入"y"確認確認刪除該邏輯卷。

7、移除卷組

在移除卷組前首先要確認該卷組中已沒有任何的邏輯捲了,或者可使用"vgchange"手工將卷組停止,移除卷組的具體操作如下:

# vgremove vgtest

Volume group "vgtest" successfully removed

8、刪除物理卷

在刪除物理卷前,必須確認該物理卷已從卷組中移除了,刪除物理卷的命令是"pvremove",如下:

# pvremove /dev/sde

Labels on physical volume "/dev/sde" successfully wiped

除此之外,LVM還可以提供snapshot(快照)等功能,其snapshot能夠快速的備份當前邏輯卷中的資料。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17172228/viewspace-777250/,如需轉載,請註明出處,否則將追究法律責任。

相關文章