将多个底层的物理设备,在内核中抽象成/dev/md# ,所有的调配工作都由内核中的md来实现的;
创新互联公司是一家集网站建设,普安企业网站建设,普安品牌网站建设,网站定制,普安网站建设报价,网络营销,网络优化,普安网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
DM的功能要比MD要强大;比如LVM2,快照,多路径;还可以实现动态增减。
在创建LVM的时候,要先创建好PV,再来创建GV,最后创建LV,格式化并挂载;
先把要创建成PV的块设备的分区类型修改为Linux LVM类型,对应的十六进制码是: 8e
使用fdisk 创建了/dev/sdb11 /dev/sdb12 /dev/sdb13这三个分区,并且已经修改好了分区类型;这里要注意的是fdisk命令最多只支持分15个分区;
下面就是把创建好的三个物理分区,创建成PV:
查看系统创建好的PV,可以使用pvdisplay和pvs命令:
语法:vgcreate vg_name /dev/sdb[12345678]
查看创建好的VG:
语法:lvcreate -n lv_name -L [+]size vg_name
查看创建的LV
从上面格式化的路径可以看出,LVM设备的路径为:/dev/vg_name/lv_name ,那么再来看看挂载后的路径:
关于LVM扩容、缩容的操作将会在下一篇介绍。
第一种方法:使用df命令,这个命令比较常用,大家都很熟悉。问题是这种方法,有时候挂载点和挂载的卷不在同一行,使用脚本分析需要一点技巧的。例如:
orientalson:/home # df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 15213032 8043668 7169364 53% /
udev 514496 104 514392 1% /dev
/dev/mapper/vg_test-lv_test
511980 32840 479140 7% /home/mt
orientalson:/home #
上面显示的挂载点/home/mt和她挂载的卷不在同一行,使用shell脚本分析非常麻烦。不过也不是没办法,具体分析可以以后再讲。
第二种方法:使用mount命令,mount -l,这种方法的缺陷在于没有卷的大小,但是挂载点和挂载的卷在同一行。例如:
orientalson:/home # mount -l
/dev/sda2 on / type reiserfs (rw,acl,user_xattr) []
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
udev on /dev type tmpfs (rw)
今天我们主要说说分区、格式化、SWAP、LVM、软件RAID的创建哈~
格式化
查看当前分区:fdisk -l
这个命令我们以前是讲过的,我现在问下,ID那项是什么意思?
83 是代表EXT2和EXT3
82 是代表SWAP分区
硬盘结构我们就不讲了,相信大家都有基础。我们就直接进入操作
LINUX分区使用的工具是FDISK
对系统的第一个硬盘分区
#fdisk /dev/sda
如果是对第二个硬盘分区,就是fdisk /dev/sdb
大家运行这个命令:#fdisk /dev/sda
大家都进入这个界面了吧?这是主菜单,按m就有提示
我们主要掌握的是以下几个参数:
D删除一个分区
N创建一个分区
Q 不保存退出
T改变分区ID
W保存退出
问下,LINUX对SCSI硬盘最多支持多少分区?
最多支持4个主分区,总分区数最多15个,fdisk 命令最多支持16个分区,IDE硬盘要多一些
现在我们创建一个分区 大小为500MB,在主菜单输入n
First cylinder (2690-3916, default 2690):
这个表示第一个柱面空间的块是 2690-3916,default2690的意思就是默认从2690开始。我们直接点回车,使用默认的
Last cylinder or +size or +sizeM or +sizeK (2690-3916, default 3916):
这里就是输入分区的大小,默认是以块为单位,我们要分500MB,我们就输入+500M哈~然后回车,分区就算完成了。
系统默认的分区ID就是83,所以我们没必要修改,直接按w保存退出
大家看见 The new table will be used at the next reboot没?意思就是这个分区在下次启动的时候才能使用,我们可以使用一个命令,让这个分区马上生效哈~
输入#partprobe,自己使用命令补全哈
然后用fdisk -l查看下, 最后一个,就是我们新建的分区
看见了吧,现在我们就格式这个分区,看到分区的号码/dev/sda7 ,等下我们格式化的时候要用
格式化的标准命令:
#mkfs -t ext3 /dev/sda7
我的是第7个分区,你们是第几个就用第几个
-t 后面跟的就是文件系统的类型
现在我们要挂载这个分区。挂载我已经教过了,相信大家还没忘记吧
先在/mnt/下面建立一个目录
#mkdir /mnt/backup
backup就是我建立的目录
然后我们手动挂载哈~
#mount -t ext3 /dev/sda7 /mnt/backup
具体情况以你的分区号和建立的目录名为准
然后CD到这目录里面去,如果看见有一个LOST+fount目录,就说明你分区挂载成功了,现在就可以往分区里面写入数据了
如果想把这个分区开机挂载,就把它写入/etc/fstab
刚才我们格式化使用的命令是:#mkfs -t ext3 /dev/sdax
还有专门用于格式EXT3系统的命令:#mkfs.ext3 /dev/sdax 就行了
大家OK的话,我们下面就开始学习用命令创建LVM逻辑卷
LVM的优点就是可以随意拉升和缩小。在基础部分我们已经用图形界面创建过,现在我们使用命令来创建
第一步:划分物理分区
使用和刚才一样de方法
#fdisk /dev/sda
输入n哈~然后回车使用默认的起始点,接着输入大小哈。我们创建一个300M大小的空间,输入+300M
注意,这里比刚才多一步,由于LVM的ID和EXT3不一样,而系统默认是的EXT3,所以这里我们需要修改一下
在主菜单输入T
系统会让你选择要改变ID的分区,输入我们刚创建的分区,也就是最后一个8
Hex code (type L to list codes):
这里输入分区类型,LVM是8e,如果你不记得了,可以使用l 查看分区ID的对应列表
输入l后,系统会列出所有分区对应的ID号
在列表中,我们可以看见LINUX LVM对应的是8e,所以我们直接输入8e,然后回车,
在主菜单输入p,查看当前分区情况
看见最后你分出来的分区ID已经是8e,那么就可以输入w 保存退出
退出以后,记得要重启这个分区才能生效。我们要使用一个命令让它立即生效
#partprobe
到这里,第一步创建物理分区完成哈~
第二步:创建LVM的物理卷
使用命令
#pvcreate /dev/sdax
sdax就是你刚才创建的分区
创建成功后,可以使用pvdisplay 查看
那我们在这里暂停一下,给大家回顾下什么是LVM
LVM就想一种磁盘管理方式,叫逻辑卷管理器,从 Red Hat Linux 8.0 开始,逻辑卷管理器(LVM)可以在硬盘驱动器分配上使用,LVM 是一种把硬盘驱动器空间分配成逻辑卷的方法,这样硬盘就不必使用分区而被简易地重划大小。
LVM有点象WIN下的动态磁盘,动态磁盘知道吗?LVM 是一种把硬盘驱动器空间分配成逻辑卷的方法,这样硬盘就不必使用分区而被简易地重划大小。主要就是这个功能,可以随意扩展或者缩小某个分区的大小,前提这个分区是逻辑卷管理的。
嗯,这个就是它的主要功能
从硬盘驱动器中创建物理卷(physical volumes-PV)。
从物理卷中创建卷组(volume groups-VG)。
从卷组中创建逻辑卷(logical volumes-LV),并分派逻辑卷挂载点
其中只有逻辑卷才可以写数据
没有大小限制哈,只要你硬盘有空间,比如刚才我们说的硬盘只支持15个分区,那么我们就可以使用LVM来把分区数量无限化
对 ,分一个物理分区,建立一个物理卷,然后这个物理卷建立一个卷组,我们就可以在这个卷组里面去分无数个逻辑卷,而且逻辑卷可以随意扩大缩小,不会对物理分 区有影响,逻辑卷的功能也和物理分区差不多,一样可以格式化成随意的文件系统,挂载到随意的目录。 同时也支持quota
好了,我们继续哈~
刚才我们创建了物理卷PV-(physical volumes),可以使用pvdisplay查看。
PV创建好以后,我们就要创建卷组了,volume groups-VG ,卷组是在物理卷的基础上创建的,也就把物理卷的空间拿来给卷组管理,然后逻辑卷就可以向卷组要空间了
第三步:创建卷组
#vgcreate 卷组名 物理卷
#vgcreate myvg /dev/sda8
创建成功后,可以使用vgdisplay 来查看卷组
第四步:创建逻辑卷 (重点)
#lvcreate -L 大小 卷组名 -n 逻辑卷名称
我就从卷组里面分100M出来创建一个逻辑卷
#lvcreate -L 100M myvg -n mylv1
OK,现在我们格式化mylv1为ext3文件格式并挂载到/mnt/mylv1目录
LVM(Logical Volume Manager)卷组管理器,通过对底层物理磁盘的封装,可以将多块物理磁盘组合成逻辑资源池,提供给上层应用使用(如文件系统). LVM的好处是,可以跨物理硬盘为文件系统提供容量,并且可以动态进行分区容量的调整,而不会损坏原有的文件系统.
物理磁盘 :物理存储介质,可以是整块物理存储或一个分区.
物理卷PV(physical volume) :LVM要使用物理磁盘,在物理磁盘的头部写入lvm标签头,就创建了一个PV,PV是组成VG的基本单元.
卷组VG(Volume Group) :VG相当于非LVM系统中的物理硬盘,一个卷组VG由一个或多个PV组成,形成一个存储资源池.
逻辑卷LV(logical volume) :LV相当于非LVM系统中的硬盘分区,LV建立在卷组VG之上,文件系统建立在LV之上.
物理块PE(physical Extent) :创建LV时可以分配的最小存储单元,大小可以指定,默认为4MB
如上是从物理磁盘到lvm逻辑卷的创建过程及映射关系,lv01、lv02被创建后,通过device-mapper映射为逻辑块设备(块设备路径/dev/vg01/lv01、/dev/vg01/lv02),供文件系统使用,通过mkfs.ext4 /dev/vg01/lv02可创建ext4文件系统.
元数据主要是两部分,PV header + metadata,位置一般是在PV的0~2048 sector中,从2048 sector开始是数据区域.
通过pvcreate创建pv时,会将pv header写入物理磁盘,位置一般是在磁盘的第二个sector(512B/sector),lvm扫描磁盘时,通过pv header来识别PV.
pv header主要信息包括,pv uuid、元数据位置和metadata位置.
pv header实例:
metadata记录的是vg和lv的配置信息,以ASCII码的方式写入metadata区域;vg和lv的每次配置变更,都会以追加的方式写入metadata区域,并打上时间戳,该区域写满后,新的变更记录会覆盖最早的一次记录. 进行vgscan时,猜测应该是通过读取最新一次的配置记录,进行激活.
vg配置信息,主要是包含的pv信息.
lv配置信息,主要是lv的起始位置和PE大小.
实例:
pvcreate /dev/vdb1
pvcreate /dev/vdb2
pvcreate /dev/vdb3
vgcreate /dev/vdb1 /dev/vdb2 /dev/vdb3
vgcreate wan /dev/vdb1 /dev/vdb2 /dev/vdb3
lvcreate -L 300M -n lv01 wan
将PV的前2048个sector通过dd拷贝出来,用cat查看如下.
假设我们有一块磁盘 /dev/sdb1 作为应用数据盘使用,以此为例创建lvm分区
先创建物理卷PV,命令: pvcreate /dev/sdb1
创建卷组VG,卷组命名为kylin,命令:vgcreate kylin /dev/sdb1
在VG中创建逻辑分区LV,命令:lvcreate -L 30G -n test kylin
创建逻辑分区后,进行格式化,然后便可以挂载使用.
mkfs.ext4 /dev/kylin/test
mount /dev/kylin/test /data
假设我们在上述基础上,又获得一块磁盘/dev/sdc1进行扩容,将磁盘容量增加到LV分区/dev/kylin/test中,具体操作如下.
先创建物理卷PV,命令: pvcreate /dev/sdc1
将/dev/sdc1添加进VG kylin,命令:vgextend kylin /dev/sdc1
增加LV分区容量,命令:lvextend -L +30G /dev/kylin/test
lvm卷组配置备份
lvm的配置信息默认在/etc/lvm/backup、/etc/lvm/archive/两个目录存在备份,当lvm元数据损坏,lvm卷组读取异常时,可通过备份文件进行恢复.
/etc/lvm/backup: 保留了当前配置的备份
/etc/lvm/archive/:保留了每次配置更新前的备份
实例演示
逻辑卷/dev/wan/lv01
在/dev/wan/lv01上创建文件系统
挂载并创建文件
覆盖/dev/vdb1、/dev/vdb2的lvm元数据,并重启系统,vg已不能识别
通过pvcreate命令修复pv header 和metadata数据.
激活逻辑卷
挂载/dev/wan/lv01成功,说明成功修复
首先要保证该逻辑卷所在的卷组有足够的可用于扩展的空间,如果不够的话可以先添加磁盘,在磁盘上建立逻辑卷类型的分区(使用fdisk命令),然后使用vgextend命令扩展卷组。
扩展卷组的命令:
vgextend /dev/vg0 /dev/sdb2
上述命令用于将卷组vg0扩展到新磁盘分区/dev/sdb2上
扩展逻辑卷的命令是:
lvextend -L +1024M /dev/vg0/lv0
上述命令为逻辑卷/dev/vg0/lv0扩展了1024M
最后记得使用resizee2fs命令使之生效
resizee2fs /dev/vg0/lv0
首先备份好你的数据。
然后用umount 卸载掉你的逻辑卷
最后,用lvremove 卷组名/逻辑卷名删除该逻辑卷
比如vg0卷组下有个叫lv0的逻辑卷lvremove vg0/lv0
manpage 摘抄:
EXAMPLES
Remove the active logical volume lvol1 in volume group vg00 without asking for confirmation:
lvremove -f vg00/lvol1
Remove all logical volumes in volume group vg00:
lvremove vg00