Linux LVM管理

對於Linux用戶而言,在安裝一臺Linux機器的時候,遇到的問題之一就是給各分區估計和分派足夠的硬盤空間。不管對一個正在爲服務器尋找空間的系統管理員,仍是一個磁盤即將用盡的普通用戶來講,這都是一個很是常見的問題。解決的方法一般是使用符號連接,或者一些調整分區大小的工具(好比parted)。可是,這只是一個暫時性的解決辦法,不久,咱們又會面臨一樣的問題。 

  若是你是一個站點的系統管理員,管理着數量衆多的、鏈接在Internet之上的服務器,那麼你每關機一分鐘,都會給公司帶來很大損失。此外,使用這種方法,在修改了分區表以後,每一次都得從新啓動系統。LVM(邏輯卷管理程序)能夠幫助咱們解決這些問題。 

LVM簡介 

  Linux LVM可使管理工做更加輕鬆。相對於硬盤和分區,LVM是從更高的層次來看待存儲空間的。在使用LVM以前,先來看一些將要使用到的相關概念。 

物理卷 

  物理卷是指硬盤分區或者從邏輯上看起來和硬盤分區相似的設備(好比RAID設備)。 

邏輯卷 

  一個或者多個物理卷組成一個邏輯卷。對於LVM而言,邏輯卷相似於非LVM系統中的硬盤分區。邏輯卷能夠包含一個文件系統(好比/home或者/usr)。 

卷組 

  一個或者多個邏輯卷組成一個卷組。對於LVM而言,卷組相似於非LVM系統中的物理硬盤。卷組把多個邏輯卷組合在一塊兒,造成一個可管理的單元。 

linux


LVM工做方式 

  下面來看一看LVM究竟是怎樣工做的。每個物理卷都被分紅幾個基本單元,即所謂的PE(Physical Extents)。PE的大小是可變的,可是必須和其所屬卷組的物理卷相同。在每個物理卷裏,每個PE都有一個唯一的編號。PE是一個物理存儲裏能夠被LVM尋址的最小單元。 

  每個邏輯卷也被分紅一些可被尋址的基本單位,即所謂的LE(Logical Extents)。在同一個卷組中,LE的大小和PE是相同的,很顯然,LE的大小對於一個卷組中的全部邏輯捲來講都是相同的。 

  在一個物理卷中,每個PE都有一個唯一的編號,可是對於邏輯卷這並不必定是必需的。這是由於當這些PE ID號不能使用時,邏輯卷能夠由一些物理卷組成。所以,LE ID號是用於識別LE以及與之相關的特定PE的。正如前面所提到的,LE和PE之間是一一對應的。每一次存儲區域被尋址訪問或者LE的ID被使用,都會把數據寫在物理存儲設備之上。 

  你可能會以爲奇怪,有關邏輯卷和邏輯卷組的全部元數據都存到哪兒去了。相似的在非LVM系統中,有關分區的數據是存儲在分區表中,而分區表被存儲在了每個物理卷的起始位置。VGDA(卷組描述符區域)功能就好象是LVM的分區表,它存儲在每個物理卷的起始處。 

  VGDA由如下信息組成: 

  ·一個PV描述符 
  ·一個VG描述符 
  ·LV描述符 
  ·一些PE描述符 

  當系統啓動LV時,VG被激活,而且VGDA被加載至內存。VGDA幫助識別LV的實際存儲位置。當系統想要訪問存儲設備時,由VGDA創建起來的映射機制就用於訪問實際的物理位置來執行I/O操做。 

開始工做 

  下面具體看一看如何使用LVM。 

  第一步:配置內核。(通常已經內置了)在安裝LVM以前,內核之中應該有LVM模塊,可使用如下的步驟來完成: 

shell

#cd /usr/src/linux 
#make menuconfig


  選擇Multi-device Support (RAID and LVM)子菜單,選中如下兩個選項: 

[CODE]  [*] Multiple devices driver support (RAID and LVM) 
  <*> Logical volume manager (LVM) Support. [/CODE]

注:若是在安裝Linux系統時已經安裝了LVM相關軟件包,上面幾步操做能夠省略掉,直接到第二步.

  第二步:檢查驅動器上空閒硬盤空間的總量。這能夠經過如下命令來未完成: 
服務器

# df -h 
Filesystem Size Used Avail Use% Mounted on 
/dev/hda1 3.1G 2.7G 398M 87% / 
/dev/hda2 4.0G 3.2G 806M 80% /home 
/dev/hda5 2.1G 1.0G 1.1G 48% /var


  第三步:在硬盤上建立一個LVM分區。使用fdisk或者其它的分區工具來建立一個LVM分區。Linux LVM的分區類型爲8e。 
工具

# fdisk /dev/hda 
press p (to print the partition table) and n (to create a new partition)


  第四步:建立一個物理卷。下述命令將在分區的起始處建立一個卷組描述符: 
spa

# pvcreate /dev/hda6 
pvcreate -- -physical volume "/dev/hda6" successfully created 
# pvcreate /dev/hda7 
pvcreate- -- physical volume "/dev/hda7" successfully created


  第五步:建立一個卷組。經過下面的方法建立一個新的卷組,而且添加兩個物理卷: 
日誌

  # vgcreate test_lvm /dev/hda6 /dev/hda7 
  vgcreate- -- INFO: using default physical extent size 4 MB 
  vgcreate- -- INFO: maximum logical volume size is 255.99 Gigabyte 
  vgcreate- -- doing automatic backup of volume group "test_lvm" 
  vgcreate- -- volume group "test_lvm" successfully created and activated

  上述命令將建立一個名爲test_lvm,包含有/dev/hda6和/dev/hda7兩個物理卷的卷組。使用下面命令來激活卷組: 
code

# vgchange -ay test_lvm

  使用「vgdisplay」命令來查看所創建卷組的細節信息。 
ip

  # vgdisplay 
  --- Volume group --- 
  VG Name test_lvm 
  VG Access read/write 
  VG Status available/resizable 
  VG # 0 
  MAX LV 256 
  Cur LV 1 
  Open LV 0 
  MAX LV Size 255.99 GB 
  Max PV 256 
  Cur PV 2 
  Act PV 2 
  VG Size 3.91 GB 
  PE Size 4 MB 
  Total PE 1000 
  Alloc PE / Size 256 / 1 GB 
  Free PE / Size 744 / 2.91 GB 
  VG UUID T34zIt-HDPs-uo6r-cBDT-UjEq-EEPB-GF435E


  第六步:建立一個邏輯卷。使用lvcreate命令在卷組中建立一個邏輯卷: 
內存

# lvcreate -L2G -nlogvol1 test_lvm

  第七步:建立文件系統。在該邏輯捲上選擇使用mkfs日誌文件系統: ci

 # mkfs /dev/test_lvm/logvol1

  使用mount命令來加載新建立的文件系統。 

# mount -t reiserfs /dev/test_lvm/logvol1 /mnt/lv1

  第八步:在/etc/fstab和/etc/lilo.conf中添加一個入口。在/etc/fstab中加入如下入口,在啓動時加載文件系統: 

 /dev/test_lvm/logvol1 /mnt/lv1 reiserfs defaults 1 1

  第九步:修改邏輯卷的大小。可使用lvextend命令方便地修改邏輯卷的大小,增長邏輯卷大小的方法以下: 

  # lvextend -L+1G /dev/test_lvm/logvol1 
  lvextend -- extending logical volume "/dev/test_lvm/logvol1" to 3GB 
  lvextend -- doing automatic backup of volume group "test_lvm" 
  lvextend -- logical volume "/dev/test_lvm/logvol1" successfully extended

 
  相似的,減少邏輯卷大小的方法以下:

    # lvreduce -L-1G /dev/test_lvm/lv1 
  lvreduce -- -Warning: reducing active logical volume to 2GB 
  lvreduce- -- This may destroy your data (filesystem etc.) 
  lvreduce -- -do you really want to reduce "/dev/test_lvm/lv1"? [y/n]: y 
  lvreduce- -- doing automatic backup of volume group "test_lvm" 
  lvreduce- -- logical volume "/dev/test_lvm/lv1" successfully reduced


總結 
     
  從上面的討論能夠看到,LVM具備很好的可擴展性,而且使用起來很直觀。一旦卷組創建起來之後,根據需求調整每個邏輯卷的大小也很是容易。
    可是:boot分區不建議作LVM,boot分區不建議LVMboot分區不建議LVM   重要的事情說三遍,若是boot作了LVM很容易致使系統沒法啓動,我的親身經歷。


LVM操做的相關命令:    fdisk -l :查看系統中都認到了那些物理硬盤    pvdisplay:查看系統中已經建立好的物理卷    pvcreate:建立一個新的物理卷    pvremove:刪除一個物理卷(也就是從物理卷中刪除一個LVM標籤)    vgdisplay:查看系統中的卷組    vgcreate:建立一個新的卷組    vgreduce:從卷組中刪除一個物理卷(也就是縮小卷組)    vgremove:刪除一個卷組    lvdisplay:查看系統中已經建立好的邏輯卷    lvcreate:建立一個新的邏輯卷    lvreduce:縮小邏輯卷(也就是從一個邏輯卷中減小一些LE)    lvremove:從系統中刪除一個邏輯卷    mkfs:基於邏輯卷建立一個相應類型的文件系統    mkdir -p $mount_piont:建立一個掛載目錄    建立好的文件系統位於:    /dev/$create_vg_name/$lv_name    mount /dev/$create_vg_name/$lv_name $mount_piont:掛載文件系統   vgscan:讀取系統中建立的全部卷組   vgchange -a y :激活全部卷組  (開機執行,redhat可在/etc/rc.d/rc.sysinit系統啓動初始化腳本里能夠找到)   vgchange -a n :關閉全部卷組(提示:必須在umount全部的文件系統後,才能成功執行

相關文章
相關標籤/搜索