linux硬盘的分区、格式化、挂载以及LVM
linux硬盘的分区、格式化、挂载以及LVM
扩容 PV
# 先查看物理设备是否能扩容
fdisk -l /dev/vda2 # 磁盘200G pvs # pv 设备用了100G,还有100G可以扩容
# 把 /dev/vda2 设备上还没用的100G使用上 pvresize /dev/vda2 # 重新刷新下 /dev/vda2 上的size
pvs # 展示 /dev/vda2 200G 了 lvextend -L +100G /dev/mapper/ao-root # 给 /dev/mapper/ao-root 这个 LV 扩充100G
resize2fs /dev/mapper/ao-root # ext3、ext4文件系统,使扩容生效
xfs_growfs /dev/mapper/ao-root # xfs文件系统 使扩容生效
df -h # 查看库容后容量
# 如果插入一个新磁盘,/dev/vdb1
vgextend mapper /dev/vdb1 # /dev/vdb1 加入到 PV mapper 中
LVM简介
逻辑卷管理器(Logical Volume Manager),最早应用在IBM AIX系统上。
它的主要作用是动态分配磁盘分区及调整磁盘分区大小,并且可以让多个分区或者物理硬盘作为一个逻辑卷(相当于一个逻辑硬盘)来使用。
这种机制可以让磁盘分区容量划分变得很灵活。
LVM机制的基本概念
PV(Physical Volume,物理卷)
物理卷:物理卷处于LVM的最底层,可以是整个物理磁盘,也可以是硬盘中的分区。
整个硬盘,或使用fdisk等工具建立的普通分区.
包括许多默认4MB大小的PE(Physical Extent,基本单元)
VG(Volume Group,卷组)
卷组:可以看成单独的逻辑磁盘,建立在PV之上,是PV的组合。一个卷组中至少要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。
LV(Logical Volume,逻辑卷)
逻辑卷:相当于物理分区的/dev/hdaX。逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展或缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
从卷组中分割出的一块空间,用于建立文件系统
PE(Physical Extent)
物理区域:物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。当多个PV组成一个VG时,LVM会在所有PV上做类似格式化的动作,将每个PV切成一块块的空间,这一块块的空间就称为PE, 通常是4MB。
逻辑卷的管理方法
LVM进行逻辑卷的管理时,创建顺序是pv->vg->lv。
首先创建一个物理卷(对应一个物理硬盘分区或者一个物理硬盘)
然后把这些分区或者硬盘加入到一个卷组中(相当于一个逻辑上的大硬盘)
再在这个大硬盘上划分分区lv(逻辑上的分区,就是逻辑卷)
最后,把lv逻辑卷格式化以后,就可以像使用一个传统分区那样,把它挂载到一个挂载点上
需要的时候,这个逻辑卷可以被动态缩放。
LVM的管理命令
主要命令的用法
pvcreate 设备名
vgcreate -s 8M 卷组名 物理卷名1 物理卷名2
lvcreate -L 大小 -n 逻辑卷名 卷组名
lvextend -L 大小 /dev/卷组名/逻辑卷名
lvreduce –L 大小 /dev/卷组名/逻辑卷名
-L参数指定了逻辑卷的大小,-n参数指定了逻辑卷的名称
使用命令行工具实现 LVM存储
准备物理卷
fdisk (type 0x8e linux LVM)
pvcreate /dev/sdb5
创建卷组
vgcreate –s 8M wgroup /dev/sdb5
创建和使用新逻辑卷
lvcreate –n wshare –L 100M /dev/wgroup
mkfs –t vfat /dev/wgroup/wshare
mkdir /mnt/wshare
add an entry to the /etc/fstab file: /dev/wgroup/wshare /mnt/wshare vfat defaults 0 0 5.mount –a
具体流程
建立LVM分区——fdisk
利用fdisk命令在 /dev/sdb上建立LVM类型的分区/dev/sdb1、/dev/sdb2。
fdisk /dev/sdb
使用相关指令创建分区:
n——创建分区 ;
p——创建主分区; e——创建扩展分区;
p——查看分区情况;t——修改分区类型(8e:LVM类型);
w——保存; q——退出;
其中选择编号(1,2,3,4)和选择分区大小
建立物理卷——pvcreate
物理卷直接建立在物理硬盘或者硬盘分区上,所以物理卷的设备文件使用系统中现有的磁盘分区设备文件的名称。
pvcreate /dev/sdb1 //创建物理卷
pydisplay /dev/sdb1 //显示指定物理卷的属性
建立卷组——vgcreate
在创建好物理卷后,建立卷组。
卷组设备文件使用/dev目录下与卷组同名的目录表示,该卷组中的所有逻辑设备文件都将建立在该目录下。
卷组中可以包含多个物理卷也可以只有一个物理卷
vgcreate vg0 /dev/sdb1 // 创建卷组vg0,vg0为要建立的卷组名称。
vgdisplay vg0 // 查看vg0信息
建立逻辑卷——lvcreate
建立好卷组后,可以使用命令lvcreate在已有卷组上建立逻辑卷。
逻辑卷设备文件位于其所在的卷组的卷组目录中。
lvcreate -L 20M -n lv0 vg0 // 创建逻辑卷
lvdisplay /dev/vg0/lv0
格式化逻辑卷:使用mkfs命令格式化新创建的逻辑卷。例如,如果你使用的是ext4文件系统:
mkfs.ext4 /dev/vg0/lv0
扩大卷组——vgextend
扩展卷组 当卷组中没有足够的空间分配给逻辑卷时,可以用给卷组增加物理卷的方法来增加卷组的空间
fdisk /dev/vda 创建新分区 (必须为LVM类型)
pvcreate /dev/vdaN 初始化分区
vgextend vgname /dev/vdaN 将新物理卷添加到现有卷组vgname
vgdisplay vgname 显示卷组状态
缩减卷组——vgreduce
vgreduce vgname /dev/vdaN 从卷组删除物理卷
扩展逻辑卷和ext4文件系统——lvextend,resize2fs
当逻辑卷的空间不能满足要求时,可以利用lvextend命令把卷组中的空闲空间分配到该逻辑卷以扩展逻辑卷的容量。
验证已挂载文件系统的当前大小 df -h /data
验证可用物理区块是否够用 vgdisplay vgname
使用部分或全部可用区块扩展逻辑卷 lvextend -L 128M /dev/vgname/lvname
扩展在/data 上挂载的关联文件系统 resize2fs -p /dev/vgname/lvname
验证以挂载文件系统 /data的新大小 df -h /data
减少逻辑卷和文件系统——lvreduce,resize2fs
解除挂载要减小的文件系统 umount /date
验证所有文件系统数据结构是否得到清理 fsck –f /dev/mapper/vgname-lvname
将文件系统大小调整为512M resize2fs –p /dev/mapper/vgname-lvname 512M
将逻辑卷减小到512M lvreduce –L 512M /dev/mapper/vgname-lvname
重新挂载/etc/fstab中列出的所有文件系统,包括现在较小的逻辑卷 mount –a
删除卷——lvremove
必需按照删除“逻辑卷-卷组-物理卷”的先后顺序来执行删除
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/sdb1
检查物理卷,卷组,逻辑卷——pyscan,vgscan,lvscan
pyscan
vgscan
lvscan
创建快照(数据备份)
快照是临时保留所更改的逻辑卷的原始数据的逻辑卷
快照提供原始卷的静态视图,从而能够以一致状态备份其数据
创建和使用快照进行备份
创建lvname名为snaplvname,大小为20M的新快照卷 lvcreate –s –n snaplv –L 20M /dev/vgname/lvname
挂载快照,并使备份程序指向新挂载点 mkdir /snapmount mount –ro /dev/vgname/snaplv /snapmount
验证快照逻辑卷的状态 lvs /dev/vgname/lvname
不在使用快照时,解除挂载并删除 umount /snapmount lvremove /dev/vgname/lvname
LVM应用示例
需求描述: 公司的邮件服务器由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷,挂载到“/mail”目录专门用于存放邮件数据
步骤: PV → VG → LV → 格式化,挂载使用文件系统
1. 转化物理卷
使用fdisk命令规划两个分区,类型设置为“8e” /dev/sdb1、/dev/sdc1
使用pvcreate命令转换上述分区为物理卷
[root@localhost ~]# fdisk -l /dev/sdb /dev/sdc | grep "LVM"
/dev/sdb1 1 9660 77593918+ 8e Linux LVM
/dev/sdc1 1 9660 77593918+ 8e Linux LVM
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
2. 创建卷组
使用vgcreate命令创建卷组mail_store
[root@localhost ~]# vgcreate mail_store /dev/sdb1 /dev/sdc1
Volume group "mail_store" successfully created
3. 创建逻辑卷
使用lvcreate命令创建逻辑卷 mail 从卷组mail_store上划出20GB空间
使用mkfs命令创建ext4文件系统
[root@localhost ~]# lvcreate -L 20G -n mail mail_store
/dev/cdrom: open failed: Read-only file system
Logical volume "mail" created
[root@localhost ~]# mkfs -t ext4 /dev/mail_store/mail
为逻辑卷扩容
使用lvextend命令为逻辑卷 mail扩充容量 从卷组 mail_store 上再划出10GB给逻辑卷mail
使用resize2fs命令更新系统识别的文件系统大小
[root@localhost ~]# lvextend -L +10G /dev/mail_store/mail
[root@localhost ~]# resize2fs –p /dev/mail_store/mail
为逻辑卷缩减
使用lvreduce命令为逻辑卷 mail缩减容量,必须先卸载
从卷组 mail_store 上缩小逻辑卷mail到10G
使用resize2fs命令更新系统识别的文件系统大小
使用fsck 命令清理文件系统数据结构
[root@localhost ~]# umount /mail
[root@localhost ~]# fsck –f /dev/mail_store/mail
[root@localhost ~]# resize2fs –p /dev/mail_store/mail 10G
[root@localhost ~]# lvreduce –L 10G /dev/mail_store/mail
[root@localhost ~]# mount -a
创建逻辑卷快照
lvcreate -L 512M -s -n snapshot dev/vg0/lv0
在挂载目录中创建一个文件,创建挂载在该目录下的逻辑卷快照,删除此文件,使用快照恢复:
1.挂载逻辑卷
mount /dev/vg0/lv0 /data
cd /data
touch a.txt
2.制作快照
lvcreate -L 500M -s -n lv0_snap /dev/vg0/lvo
3.删除文件
rm /data/a.txt
4.从快照中恢复文件
mkdir /datasnap
mount /dev/vg0/lv0_snap /datasnap
ls -al /datasnap
cp /datasnap/a.txt /data
5.删除快照
umount /datasnap
lvremove /dev/vg0/lv0_snap
配置本地y
LVM备注:
扩容当前分区
一、首先创建一块新的分区:
fdisk /dev/hda
n
l #选择逻辑分区,如果没有,则首先创建扩展分区,然后再添加逻辑分区(硬盘:最多四个分区P-P-P-P或P-P-P-E)
6 #分区号(从5开始),/dev/hda6
t 8e #分区类型8e表示LVM分区
w #写入分区表
partprobe #重读分区表
mkfs –t ext3 /dev/hda6 #格式化
partx /dev/hda #查看当前硬盘的分区表及使用情况
二、创建PV,扩容VG,LV
pvcreate /dev/hda6
vgdisplay #查看当前已经存在的VG信息,以存在VG:VolGroup00为例
vgextend VolGroup00 /dev/hda6 #扩展VolGroup00
lvdisplay #查看已经存在的LV信息,以存在LV:LogVol01为例
lvextend -L +1G /dev/VolGroup00/LogVol01 #扩展LV (扩展后需执行下一条命令resize2fs生效)
#执行该重设大小,对于当前正在使用的LogVol01有效
df –h #查看挂载情况,已经扩容
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所有的文件系统后,才能成功执行
裸设备使用:
1.先lvreate
2. raw /dev/raw/raw0 /dev/mapper/vgname-lvname
3.修改 /etc/sysconfig/rawdevices,添加: /dev/raw/raw0 /dev/mapper/vgname-lvname
4.执行命令; service rawdevices restart,使得/etc/sysconfig/rawdevices文件中的裸设备配置生效
5.执行/sbin/schkconfig rawdevices on 使得系统重启后,裸设备能自动加载
6.修改裸设备的属主,使得相应权限的用户对裸设备有读写权限 chown -R owner:group /dev/raw/raw0
7.将修改裸设备属主修改命令加入到系统启动执行脚本/etc/rc.local中,使得系统启动后裸设备的属主保持不变.