Raid阵列和lvm逻辑卷组主要用于磁盘备份和扩展,其中Raid用于磁盘备份,lvm用于磁盘空间管理。
一:Raid工作原理。
1.软Raid比较常用的有Raid0、Raid1、Raid5和Raid10,Raid0最少只要一块硬盘即可:如果多块硬盘的话数据会呈带状分布在各个硬盘上(如图)。因为不提供冗余,所以Raid0是所有Raid方案中读/写速度最快的,但完全没有容错能力,任何一块硬盘损坏都会使整个Raid失效,安全性较低
2.Raid1也至少需要2块硬盘,互为镜像,一个工作一个备份(如上图),是Raid的方案中安全性最高的。
3.Raid5是在Raid0的基础上加了校验,没有备份功能;当一块硬盘坏后Raid5会利用其他剩下的数据和相应的校验信息去回复损坏的数据。
4.Raid10是结合了Raid0和Raid1,既增加了硬盘的读/写速度还有备份的功能。但Raid10最少需要4块硬盘(如上图)。
二:LVM的工作原理:
1.LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义: “development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
2.LVM的相关术语:
*物理存储介质(The physical media)
这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的
存储单元。
* 物理卷(physical volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的
基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相
关的管理参数。
* 卷组(Volume Group)
卷组是LVM 中最高抽象层,是由一个或多个物理卷所组成的存储器池。
* 逻辑卷(logical volume)
逻辑卷相当于非LVM 系统中的分区,它在卷组上建立,是一个标准的块设备,可以在其上
建立文件系统(比如/home或者/usr等)。
* 物理块 PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是
可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
* 逻辑块LE(logical extent)
逻辑块也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷
组中,LE的大小和PE是相同的,并且一一对应。
注:卷组(vg)、逻辑卷(lv)、物理卷(pv)、逻辑块(le)、物理块(pe)的关系如图:
从上图可以看到,PE和LE有着一一对应的关系。逻辑卷建立在卷组上。逻辑卷就相当于
非LVM系统的磁盘分区,可以在其上创建文件系统。
下图是磁盘分区、卷组、逻辑卷和文件系统之间的逻辑关系的示意图:
3.创建LVM逻辑卷的一般步骤:
(1)创建分区 (2)创建物理卷 (3)创建卷组 (4)激活卷组 (5)创建逻辑卷 (6)
创建文件系统 (7)挂载使用案例一:使用磁盘分区创建逻辑卷
1.查看系统中的硬盘:
[root@lyt ~]# 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
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdd: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdd doesn't contain a valid partition table
Disk /dev/sde: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sde doesn't contain a valid partition table
2.给磁盘创建分区:
在/dev/sdb上创建两个分区(其他磁盘同样操作,这里不再列出)
[root@lyt ~]# fdisk /dev/sdb
The number of cylinders for this disk is set to 2610.
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): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): +200M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (26-2610, default 26):
Using default value 26
Last cylinder or +size or +sizeM or +sizeK (26-2610, default 2610): +200M
Command (m for help): p
Disk /dev/sdb: 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/sdb1 1 25 200781 83 Linux
/dev/sdb2 26 50 200812+ 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@lyt ~]#
3.更改磁盘分区类型:
(其他磁盘同样操作,这里不再列出)[root@lyt ~]# fdisk /dev/sdb
The number of cylinders for this disk is set to 2610.
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): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 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/sdb1 1 25 200781 8e Linux LVM
/dev/sdb2 26 50 200812+ 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@lyt ~]#
4.将建好的分区转换成物理卷(pv)
[root@lyt ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@lyt ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created
[root@lyt ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
[root@lyt ~]# pvcreate /dev/sdc2
Physical volume "/dev/sdc2" successfully created
[root@lyt ~]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created
[root@lyt ~]# pvcreate /dev/sdd2
Physical volume "/dev/sdd2" successfully created
5.创建卷组
[root@lyt ~]# vgcreate vgtest /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdc2 /dev/sdd1 /dev/sdd2 #卷组名是vgtest
/dev/cdrom: open failed: Read-only file system
Attempt to close device '/dev/cdrom' which is not open.
Volume group "vgtest" successfully created
6.在卷组的基础上创建逻辑卷
[root@lyt ~]# lvcreate -L 1G -n lvtest vgtest #-L表示大小,这里大小是1G,-n表示名字,这里名字是lvtest
Logical volume "lvtest" created
7.格式化逻辑卷
[root@lyt ~]# mkfs -t ext3 /dev/vgtest/lvtest #格式化的文件系统是ext3
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
8.挂载
[root@lyt ~]# mkdir /lvdate
[root@lyt ~]# mount /dev/vgtest/lvtest /lvdate/ #挂载
[root@lyt ~]# ll /lvdate/
total 16
drwx------ 2 root root 16384 Dec 23 22:57 lost+found
[root@lyt ~]# df -h /lvdate/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vgtest-lvtest
1008M 34M 924M 4% /lvdate