Linux LVM入门

LVM是Logical Volume Manager(逻辑卷管理器)的简称,它可使管理员在Linux系统上更加灵活的规划和使用磁盘空间。

为何使用LVM
对于传统的分区类型,其尺寸是固定的,不可以动态扩展。所以在使用以前,管理员须要提早规划分区的用途和须要的尺寸。一旦某个分区的尺寸不能知足需求了,管理员将不得不从新分区,或者将包含足够空间的新磁盘分区挂载到原有文件系统上。使用LVM处理这样的问题将得到更大的灵活性。
在LVM中,分区对应物理磁盘上一系列连续数据块的概念已经演变了。如今经过LVM能够将物理磁盘的空间分解为不少单元,而后将多个物理磁盘的存储单元汇聚为一个可供用户使用的逻辑单元。用户再也不直接使用物理磁盘,而是一个通过逻辑划分的虚拟磁盘。逻辑单元的空间能够来自于多个物理磁盘,同时管理员也能够经过扩展逻辑单元动态增长可用的磁盘空间。
例如,有一个10GB的磁盘,建立“/home”分区使用了2GB。如今“home”没有足够的可用空间了,因而决定将“/home”扩展到3GB。用传统的分区方式,管理员将不得不建立一个3GB大小的分区,并备份“/home”的所有内容;将创建的新分区挂载到“/home”,而后将备份的“/home”数据恢复上去。
或者,也可使用Partition Magic之类的分区工具,在不从新分区的状况下调整分区的尺寸。可是使用Partition Magic工具进行分区操做,须要从新引导机器,这每每是服务器管理员须要尽可能避免的。而使用LVM配置,管理员无需从新引导机器,只要增长1GB(或更大)的磁盘,并将它的存储单元添加到“/home”中就能够了。
LVM的基本概念和术语
在LVM中最终面向用户的是通过逻辑划分的磁盘空间,它创建在具体的物理介质上,这个物理介质能够是一个磁盘或一个磁盘分区。
物理卷Physical Volume(PV)
一个物理卷只不过是一个有LVM管理数据添加在里面的物理存储介质。要使用LVM系统,首先对要用于LVM的磁盘进行初始化,初始化的目的就是将磁盘或分区标识为LVM 的物理卷。使用pvcreate 命令能够将一个磁盘标记为 LVM 物理卷。
物理分区Physical Extents(PE)
LVM将每一个物理卷分为叫作物理分区的可寻址存储单元,存储单元的大小一般为几MB。磁盘的开头部分为LVM元数据,以后从索引为零开始,每一个物理分区的索引依次递增一,按顺序进行分配。
卷组Volume Group(VG)
物理卷能够组织为卷组。卷组能够由一个或多个物理卷组成,同时系统中能够有多个卷组。建立了卷组以后,该卷组(而不是磁盘)即是表示数据存储的实体。所以,尽管之前是将磁盘从一个系统移动到另外一个系统,使用了 LVM 以后,会将卷组从一个系统移动到另外一个系统。出于这种缘由,一般在一个系统上建立多个卷组会比较方便。
逻辑卷Logical Volume(LV)
卷组所表明的磁盘空间能够分配给不一样大小的逻辑卷。建立逻辑卷以后,就能够将其视为传统的磁盘分区来处理。经过设备专用文件可访问逻辑卷。一个逻辑卷能够跨越一个卷组中的多个物理卷,也能够仅表明物理卷中的一个分区。就像使用传统的分区同样,在逻辑卷上能够建立一个文件系统。
逻辑分区Logical Extents(LE)
逻辑卷的基本分配单元称为逻辑分区。逻辑分区映射到物理分区,所以,若是物理分区的尺寸小为4MB,那么逻辑分区的尺寸也将为4MB。逻辑卷的大小取决于所分配的逻辑分区数量。

当LVM将磁盘空间分配给逻辑卷时,会自动建立逻辑盘区到物理盘区的映射。此映射取决于建立逻辑卷时所选择的策略。对于每一个逻辑卷,逻辑盘区从零开始按顺序进行分配。LVM将使用此映射来访问数据,而不考虑数据的物理位置。
除了镜像逻辑卷、条带化逻辑卷或条带化的镜像逻辑卷外,每一个逻辑分区均映射到一个物理分区。对于镜像逻辑卷,每一个逻辑分区映射到多个物理分区。
图说明了卷组内物理分区和逻辑分区之间的几种映射类型。如图所示,第一个逻辑卷的内容包含在卷组中全部三个物理卷中。因为第二个逻辑卷使用了镜像,每一个逻辑分区映射到多个物理分区。在这个例子中,包含镜像数据的物理分区有两个,分别位于卷组内的第二个物理卷和第三个物理卷上。 服务器


 

 



  •  

2楼 工具

默认状况下,LVM按照LVM配置文件/etc/lvmtab中的出现的顺序,从物理卷中选择可用的物理分区,将这些物理分区分配给逻辑卷。管理员也能够忽略这种默认分配,直接决定逻辑卷将使用哪一个物理卷上的物理分区。


配置和管理LVM
要创建LVM,首先须要为LVM准备磁盘或分区。使用磁盘分区做为物理卷的话,须要将分区标识为“Linux LVM”,其分区ID为“0x8e”。
假设如今有三个磁盘,分别为/dev/sda、/dev/sdb、/dev/sdc,磁盘/dev/sda和/dev/sdb已经进行了磁盘分区,磁盘/dev/sdc还没有进行分区操做。可使用fdisk -l命令查看现有分区状况,以下所示:
# fdisk   -l

Disk /dev/sda: 255 heads, 63 sectors, 1044 cylinders
Units = cylinders of 16065 * 512 bytes

    Device Boot     Start        End     Blocks    Id   System
/dev/sda1              1         13     104391    83   Linux
/dev/sda2             14        804    6353707+   83   Linux
/dev/sda3            805        843     313267+   82   Linux swap
/dev/sda4            844       1044    1614532+   83   Linux

Disk /dev/sdb: 128 heads, 32 sectors, 512 cylinders
Units = cylinders of 4096 * 512 bytes

    Device Boot     Start        End     Blocks    Id   System
/dev/sdb1              1        100     204784    83   Linux
/dev/sdb2            101        200     204800    83   Linux

Disk /dev/sdc: 128 heads, 32 sectors, 512 cylinders
Units = cylinders of 4096 * 512 bytes

Disk /dev/sdc doesn't contain a valid partition table
如今决定要使用磁盘分区/dev/sda四、/dev/sdb一、/dev/sdb2以及磁盘/dev/sdc创建卷组,须要先创建相应的物理卷。使用fdisk工具能够将分区指定为“Linux LVM”类型,具体操做以下:
# fdisk   /dev/sda

The number of cylinders for this disk is set to 1044.
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)

Command (m for help): t
Partition number (1-4): 4 this


 



  •  

3楼 spa

Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sda: 255 heads, 63 sectors, 1044 cylinders
Units = cylinders of 16065 * 512 bytes

    Device Boot     Start        End     Blocks    Id   System
/dev/sda1              1         13     104391    83   Linux
/dev/sda2             14        804    6353707+   83   Linux
/dev/sda3            805        843     313267+   82   Linux swap
/dev/sda4            844       1044    1614532+   8e   Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Re-read table failed with error 16: Device or resource busy.
Reboot your system to ensure the partition table is updated.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
对分区/dev/sdb一、/dev/sdb2作一样的操做后,就能够创建物理卷了。创建物理卷的命令是pvcreate,该命令的基本用法为:
pvcreate   [-d]   [-f[f]]   [-h]   [-y]   [-v]   PhysicalVolumePath
各个选项的含义以下:
-d:启用附加的调试输出。
-f:强制选项,对于已经属于某个卷组的物理卷,可使用-ff选项进行重建。
-h:获取该命令的帮助信息。
-y:对于全部提问都以“yes”应答。
-v:显示详细的执行过程。
PhysicalVolumePath表示物理卷的设备路径。
例如要在以前准备的设备上创建物理卷,能够执行如下操做:
# pvcreate   /dev/sda4   /dev/sdb1   /dev/sdb2   /dev/sdc
pvcreate -- physical volume "/dev/sda4" successfully created
pvcreate -- physical volume "/dev/sdb1" successfully created
pvcreate -- physical volume "/dev/sdb2" successfully created
pvcreate -- physical volume "/dev/sdc" successfully created
接下来须要将这些物理卷添加到一个卷组中,卷组名为vg01,具体操做以下:
# vgcreate   vg01   /dev/sda4   /dev/sdb1   /dev/sdb2   /dev/sdc
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 "vg01"
vgcreate -- volume group "vg01" successfully created and activated
从上面的命令输出中能够看出,卷组vg01已经创建而且激活,物理分区的尺寸为4MB,单个逻辑卷的尺寸能够达到255.99GB。此外还能够经过vgdisplay命令查看卷组的信息,具体操做以下: 调试


 



  •  

4楼 code

# vgdisplay   /dev/vg01
--- Volume group ---
VG Name                 g01
VG Access                 read/write
VG Status                 available/resizable
VG #                     0
MAX LV                     256
Cur LV                     0
Open LV                     0
MAX LV Size                 255.99 GB
Max PV                     256
Cur PV                     4
Act PV                     4
VG Size                     2.92 GB
PE Size                     4 MB
Total PE                     747
Alloc PE / Size             0 / 0
Free   PE / Size             747 / 2.92 GB
VG UUID                 Cq9FGt-ls34-Jc34-yH9Y-txyj-420P-H97Zhp
从上需信息中能够看到,卷组vg01中包含4个物理卷成员,能够容纳的物理卷和逻辑卷数量为256,物理分区尺寸为4MB,卷组上还没有创建逻辑卷。若要看到更详细的信息,可使用vgdisplay   -v   /dev/vg01命令。
因为没有创建逻辑卷,所以还不可以使用该卷组进行数据存储。使用lvcreate命令能够创建逻辑卷,该命令的基本用法为:
lvcreate   [-A] [-C] [-d] [-h] [-i[-I]] {-l | -L]} [-n] [-p] [-r] [-v] [-Z] VolumeGroupName
其中经常使用选项的含义以下:
-i:指定条带化逻辑卷的条带数,该数字为条带化逻辑卷占用的物理卷数目。
-I:指定条带化逻辑卷的条带尺寸,尺寸能够是2nKB(0<=n<=7)。
-l:指定逻辑卷尺寸,单位是逻辑分区数。
-L:指定逻辑卷尺寸,单位能够是k、m、g、t等。
-n:指定逻辑卷名称。
-p:设定逻辑卷的权限,能够是r(只读)或rw(读写)。
-s:建立镜像逻辑卷。
例如要在卷组vg01上创建一个尺寸为500MB的逻辑卷,能够执行如下操做: orm





  •  

5楼 索引

# lvcreate   -L   500M   -n   lv1   vg01
lvcreate -- doing automatic backup of "vg01"
lvcreate -- logical volume "/dev/vg01/lv1" successfully created
已创建好的逻辑卷,能够经过lvdisplay命令进行查看。在该命令中使用-v选项,还能够看到逻辑分区(LE)和物理分区(PE)的映射关系。具体以下:
# lvdisplay   -v   /dev/vg01/lv1
--- Logical volume ---
LV Name                     /dev/vg01/lv1
VG Name                 vg01
LV Write Access             read/write
LV Status                     available
LV #                         1
# open                     0
LV Size                     500 MB
Current LE                 125
Allocated LE                 125
Allocation                 next free
Read ahead sectors             120
Block device                 58:0
    --- Distribution of logical volume on 1 physical volume   ---
    PV Name                   PE on PV      reads       writes
    /dev/sda4                 125           0           2        
    --- logical volume i/o statistic ---
    0 reads   2 writes
    --- Logical extents ---
    LE     PV                         PE      reads       writes
    00000 /dev/sda4                  00000   0           2         ci


 



  •  

6楼 it

    00001 /dev/sda4                  00001   0           0             00002 /dev/sda4                  00002   0           0             00003 /dev/sda4                  00003   0           0             00004 /dev/sda4                  00004   0           0             00005 /dev/sda4                  00005   0           0             00006 /dev/sda4                  00006   0           0             00007 /dev/sda4                  00007   0           0             00008 /dev/sda4                  00008   0           0         ……     00123 /dev/sda4                  00123   0           0             00124 /dev/sda4                  00124   0           0         最后,在创建好的逻辑卷上建立文件系统,而后将文件系统挂载到现有的Linux文件系统中,就可使用逻辑卷存储数据了。例如要在逻辑卷lv1上创建ext3文件系统,能够执行如下操做: # mkfs   -t exte   /dev/vg01 /lv1 逻辑卷创建以后,其尺寸能够动态增长或减小。只要逻辑卷所在的卷组有足够的剩余磁盘空间,就可使用lvextend命令扩展逻辑卷,操做实例以下所示: # lvextend   -L   +200M   /dev/vg01/lv1 lvextend -- extending logical volume "/dev/vg01/lv1" to 700 MB lvextend -- doing automatic backup of volume group "vg01" lvextend -- logical volume "/dev/vg01/lv1" successfully extended 也可使用lvreduce命令缩减逻辑卷的尺寸,操做实例以下所示: # lvreduce   -L   -200M   /dev/vg01/lv1 lvreduce -- WARNING: reducing active logical volume to 500 MB lvreduce -- THIS MAY DESTROY YOUR DATA (filesystem etc.) lvreduce -- do you really want to reduce "/dev/vg01/lv1"? [y/n]: y lvreduce -- doing automatic backup of volume group "vg01" lvreduce -- logical volume "/dev/vg01/lv1" successfully reduced 注意:缩减一个活动的逻辑卷可能会破坏卷上的数据,执行时应提早检查数据存储状况。 若是卷组上已经没有足够的空间可供逻辑卷扩展,就须要扩展卷组以提供更多的磁盘空间。为了扩展卷组,须要先增长可用的物理卷,而后将卷组扩展到新的物理卷上。例如增长一个磁盘/dev/sdd,为了扩展卷组到/dev/sdd,须要执行如下操做: 1)     在新磁盘上创建物理卷: # pvcreate   /dev/sdd pvcreate -- physical volume "/dev/sdd" successfully created 2)     将卷组vg01扩展到新的物理卷上: # vgextend vg01 /dev/sdd vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte vgextend -- doing automatic backup of volume group "vg01" vgextend -- volume group "vg01" successfully extended

相关文章
相关标签/搜索