歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

在Linux下使用邏輯卷管理程序

  對於Linux用戶而言,在安裝一台Linux機器的時候,遇到的問題之一就是給各分區估計和分派足夠的硬盤空間。無論對一個正在為服務器尋找空間的系統管理員,還是一個磁盤即將用盡的普通用戶來說,這都是一個非常常見的問題。解決的方法通常是使用符號鏈接,或者一些調整分區大小的工具(比如parted)。但是,這只是一個暫時性的解決辦法,不久,我們又會面臨同樣的問題。     如果你是一個站點的系統管理員,管理著數量眾多的、連接在Internet之上的服務器,那麼你每關機一分鐘,都會給公司帶來很大損失。此外,使用這種方法,在修改了分區表之後,每一次都得重新啟動系統。LVM(邏輯卷管理程序)可以幫助我們解決這些問題。     LVM簡介    Linux LVM可以使管理工作更加輕松。相對於硬盤和分區,LVM是從更高的層次來看待存儲空間的。在使用LVM之前,先來看一些將要使用到的相關概念。     物理卷     物理卷是指硬盤分區或者從邏輯上看起來和硬盤分區類似的設備(比如RAID設備)。     邏輯卷     一個或者多個物理卷組成一個邏輯卷。對於LVM而言,邏輯卷類似於非LVM系統中的硬盤分區。邏輯卷可以包含一個文件系統(比如/home或者/usr)。     卷組     一個或者多個邏輯卷組成一個卷組。對於LVM而言,卷組類似於非LVM系統中的物理硬盤。卷組把多個邏輯卷組合在一起,形成一個可管理的單元     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模塊,可以使用以下的步驟來完成:     #cd /usr/src/linux  #make menUConfig     選擇Multi-device Support (RAID and LVM)子菜單,選中以下兩個選項:     [*] Multiple devices driver support (RAID and LVM)   Logical volume manager (LVM) Support.     第二步:檢查驅動器上空閒硬盤空間的總量。這可以通過以下命令來未完成:     # 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)     第四步:創建一個物理卷。下述命令將在分區的起始處創建一個卷組描述符:     # 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兩個物理卷的卷組。使用下面命令來激活卷組:     # vgchange -ay test_lvm     使用“vgdisplay”命令來查看所建立卷組的細節信息。     # 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    第七步:創建文件系統。在該邏輯卷上選擇使用reiserfs日志文件系統:     # mkreiserfs /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     如果沒有覆蓋原來的內核,那麼拷貝一份重新編譯後的內核,並且在啟動時選擇是否使用LVM。下面是LILO文件的內容:     image  = /boot/lvm_kernel_image  label  = linux-lvm  root  = /dev/hda1  initrd = /boot/init_image  ramdisk = 8192     添加以上內容後,使用以下命令重新加載LILO:     #/sbin/lilo    第九步:修改邏輯卷的大小。可以使用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具有很好的可擴展性,並且使用起來很直觀。一旦卷組建立起來以後,根據需求調整每一個邏輯卷的大小也非常容易。




Copyright © Linux教程網 All Rights Reserved