视频与文档都来自尚硅谷,点此链接(http://www.atguigu.com/linux_video.shtml#linux_yw)
文章目录
前言
本章的内容仍然是讲分区,主要讲磁盘配额(磁盘配额针对的是分区)和LVM
不需要背,做出文档,以后遇到了看文档就行
一、磁盘配额(quota)
1、磁盘配额概念
限制普通用户或用户组在分区上使用磁盘空间和文件大小、个数
换句话说我给你分配个使用空间,我让你用多大你就只能用多大
磁盘配额不能限制超级用户
2、磁盘配额条件
- 内核必须支持磁盘配额
[root@localhost ~]# grep CONFIG_QUOTA /boot/config-2.6.32-279.el6.i686
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
如果出现了上面那些语句,就说明内核支持磁盘配额
- 系统中必须安装了 quota 工具,我们的 Linux 默认是安装了 quota 工具的,查看命令如下
[root@localhost ~]# rpm -qa | grep quota
quota-3.17-16.el6.i686
要支持磁盘配额的分区必须开启磁盘配额功能,这个功能需要手工开启,不再是默认就开启的,在后面磁盘配额步骤第三步时会讲
3、概念
1)用户配额和组配额(限制某一用户或某一组能占多大空间)
组配额极少用,而且不是平均分配,它是先到先得,组配额没任何用处
比如一个组里有三个用户:user1、user2、user,有可能user1把组配额全部占了
我们要限制的话最好是一个用户一个用户的去限制
2)磁盘容量限制和文件个数限制
为什么要限制文件个数:因为每个文件都有个对应的i节点号,i节点数是有限的,分区大小不同i节点数也不同
3)软限制和硬限制
软限制可以理解为警告限制
硬限制就是实际限制了
4)宽限时间
宽限时间就是超过软限制到硬限制之间的时间
如果用户的空间占用数处于软限制和硬限制之间,统会在用户登陆时警告用户磁盘将满,这个时间就是宽限时间,默认是 7 天。如果达到了宽限时间,用户的磁盘占用量还超过软限制,那么软限制就会升级为硬限制。
宽限时间一般不用改,知道什么是宽限时间就行。
4、磁盘配额规划,下面的实验跟这个磁盘配额规划会有一些不同,大致了解一下这个规划就行
我们开始磁盘配额实验,首先我们来规划下我们的实验:
-
磁盘配额是限制普通用户在分区(可以限制/分区,但不能限制swap分区,swap分区是给内核用的)上使用磁盘空间和文件个数的(两个关键点:一个是普通用户 第二个是分区),所以我们需要指定一个分区。那么我们手工建立一个 5GB 的/dev/sdb1 分区,把它挂载到/disk 目录当中。
-
还有我们需要建立被限制的用户和用户组。那么我们假设需要限制 user1、user2 和 user3用户,这三个用户属于 test 用户组。
注意:组配额在实际工作中包括本次实验中几乎没办法使用,了解以下就行了 -
其中 test 组磁盘容量硬限制为 500MB,软限制 450MB,文件个数不做限制。user1 用户为了便于测试,磁盘容量硬限制为 50MB,软限制为 40MB,文件个数硬限制限制为 10 个,软限制为 8 个。user2 和 user3 用户磁盘容量硬限制为 250MB,软限制为 200MB,文件个数不做限制。
-
大家发现 user1、user2 和 user3 用户加起来的磁盘容量限制为 550MB,超过了 test 组的磁盘容量限制 500MB。这样的话,某个用户可能达不到自己的用户限制,而达到组限制时就不能再写入数据了。也就是说,如果用户限制和组限制同时存在,那么哪个限制更小,哪个限制优先生效。(再提醒一遍:组配额不是平均分配,是先到先得)
-
系统宽限时间我们改为 8 天
5、磁盘配额步骤
5.1 分 5GB 的/dev/sdb1 分区,并将它挂载到/disk 目录当中
5.2 建立需要做限制的用户和用户组
[root@localhost ~]# groupadd test
[root@localhost ~]# useradd -G test user1
[root@localhost ~]# useradd -G test user2
[root@localhost ~]# useradd -G test user3
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2
[root@localhost ~]# passwd user3
5.3 在分区上开启磁盘配额功能
[root@localhost ~]# mount -o remount,usrquota,grpquota /disk
#重新挂载/disk 分区,并加入用户和用户组的磁盘配额功能
我们要想永久生效,则需要修改/etc/fstab 文件,改成:
[root@localhost ~]# vi /etc/fstab
/dev/sdb1 /disk ext4 defaults,usrquota,grpquota 0 0
…省略部分输出…
[root@localhost ~]# mount –o remount /disk
#修改配置文件如果想要生效,必须重启系统,否则也需要把分区重新挂载一遍。
5.4 建立磁盘配额的配置文件
[root@localhost ~]# quotacheck [选项] [分区名]
选项:
-a:扫描/etc/mtab 文件中所有启用磁盘配额功能的分区。如果加入此参数,命令后面
就不需要加入分区名了
-c:不管原有的配置文件,重新扫描并建立新的配置文件
-u:建立用户配额的配置文件,也就是生成 aquota.user 文件
-g:建立组配额的配置文件,会生成 aquota.group 文件
-v:显示扫描过程
-m:强制以读写的方式扫描文件系统,和-M 类似。一般扫描根分区时使用!!!
-f:强制扫描文件系统,并写入新的配置文件。一般扫描新添加的硬盘分区时使用
[root@localhost ~]# quotacheck -avug
// 这个命令是用来生成磁盘配额配置文件的
// 只生成用户配额配置文件的话就不需要加g
// 直接quotacheck -avu
不过首先需要关闭 SELinux,否则会报错
↓
查看与关闭SELinux如下图
enforcing:强制执行
permissive:宽容的、放任的
setenforce 0,关闭selinux
setenforce 1,开启selinu
selinux配置文件路径:/etc/selinux/config
上图中除了划横线的那句话外,其他提示都不要管
验证是否成功
↓
[root@localhost ~]# ll /disk/
总用量 24
-rw------- 1 root root 6144 4 月 17 01:08 aquota.group
-rw------- 1 root root 6144 4 月 17 01:08 aquota.user
#/disk 目录中两个配额配置文件已经建立
如果需要给根分区开启配额功能,需要:
[root@localhost ~]# vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,usrquota,grpquota 1 1
#开启/分区的配额功能
[root@localhost ~]# mount -o remount /
#重新挂载/分区
[root@localhost ~]# quotacheck -avugm
// -m是强制以读写的方式扫描文件系统。为什么加m,因为根分区是系统分区,正在给系统文件使用,不强制这个配置文件就生成不了
如果我们自动扫描/分区建立配额配置文件时,因为/分区已经挂载成读写系统,而 quotacheck需要把分区先挂载成只读分区,然后建立配置文件,最后再挂载回来,所以不能直接在/分区建立配置文件。这时就需要使用-m 强制以读写方式扫描文件系统了
给根分区开启配额功能与其他分区的唯一区别在于,quotacheck命令加的选项是 -avugm。其他分区是: quotacheck -avug或者quotacheck -avu
5.5 设置用户和组的配额限制
注意这一步只是设置而已,想要具体生效还得执行第八步的启动和关闭配额
[root@localhost ~]# edquota [选项] [用户名或组名]
选项:
-u 用户名: 设定用户配额
-g 组名: 设定组配额
-t: 设定宽限时间
-p: 复制配额限制。如果已经设定好某个用户的配额限制,其他用户的配额限
制如果和这个用户相同,那么可以直接复制配额限制,而不用都手工指定
我们给 user1 用户设定的配额限制是:磁盘空间软限制是 40MB,硬限制是 50MB;文件个数的软限制是 8 个,硬限制是 10 个(稍微小一点,一会测试时方便测试)。命令如下:
[root@localhost ~]# edquota -u user1
#edquota 命令进入之后,就是标准的 vi 操作方法
Disk quotas for user user1 (uid 500):
#磁盘配额是设定用户 user1(UID 是 500)
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 0 0 0 0 0
#分区名 已占用容量 软限制 硬限制 已占用文件数 软限制 硬限制
blocks和inodes坚决不允许手工修改!
Disk quotas for user user1 (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 40000 50000 0 8 10
#不用对齐,是七列就行
文件空间大小默认单位为KB
再给 user2 用户配置限额,user2 用户要求是空间软限制 250MB,硬限制 250MB,文件个数不做限制:
[root@localhost ~]# edquota -u user2
Disk quotas for user user2 (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 250000 300000 0 0 0
接下来给 test 组配置限额,test 组要求是空间软限制是 450MB,硬限制 500MB,文件个数不做限制:
[root@localhost ~]# edquota -g test
Disk quotas for group test (gid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 450000 500000 0 0 0
5.6 配额复制
user3 用户的配额值和 user2 用户完全一样,我们就可以使用 user2 用户作为模板进行复制。这样我们如果需要建立大量的配额值一致的用户时,就会非常方便,不用一个个手工建立了。复制命令如下:
[root@localhost ~]# edquota -p user2 -u user3
#命令 -p 源用户 -u 目标用户
5.7 修改宽限时间,没什么用
我们要求把宽限时间改为 8 天,修改命令如下:
[root@localhost ~]# edquota –t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sdb1 8days 8days
#分区名 容量的宽限时间 个数的宽限时间
5.8 启动和关闭配额
配额的配置完成,接下来只需要启动配额就大功告成了,启动命令如下:
[root@localhost ~]# quotaon [选项] [分区名]
选项:
-a:依据/etc/mtab 文件启动所有的配额分区。如果不加-a,后面就一定要指定分区名
-u:启动用户配额
-g:启动组配额
-v:显示启动过程的信息
[root@localhost ~]# quotaon -vug /disk/
/dev/sdb1 [/disk]: group quotas turned on
/dev/sdb1 [/disk]: user quotas turned on
#启动/disk 分区的配额
[root@localhost ~]# quotaon –avug
#这条命令也可以
关闭配额的命令如下:
[root@localhost ~]# quotaoff [选项] [分区名]
选项
-a:依据/etc/mtab 文件关闭所有的配额分区。如果不加-a,后面就一定要指定分区名
-u:关闭用户配额
-g:关闭组配额
[root@localhost ~]# quotaoff –a #依据/etc/mtab 文件关闭配额分区
6. 磁盘配额查询
6.1 quota 查询用户或用户组配额:
用来查询某个单独的用户或组
[root@localhost ~]# quota [选项] [用户名或组名]
选项:
-u 用户名: 查询用户配额
-g 组名: 查询组配额
-v: 显示详细信息
-s: 以习惯单位显示容量大小,如 M,G
[root@localhost ~]# quota -uvs user1
6.2 repquota 查询文件系统配额
用来查询文件系统所有的配额
[root@localhost ~]# repquota [选项] [分区名]
选项:
-a: 依据/etc/mtab 文件查询配额。如果不加-a 选项,就一定要加分区名
-u: 查询用户配额
-g: 查询组配额
-v: 显示详细信息
-s: 以习惯单位显示容量大小
[root@localhost ~]# repquota –augvs
7.测试
7.1 注意
-
磁盘配额限制的是普通用户,不能用root用户来测试,所以要先登录user1
-
不能再家目录下写入文件,得进入到挂载目录里写文件,因为我们限制的是分区,分区在挂载点里
3.要将挂载目录的所有者改为user1,不然会提示权限不够
不建议把目录改成777或757
7.2 开始测试
我磁盘配额只有50M,但这里指定了60M,如果我复制了50次后就卡主了
就说明我磁盘配额生效了。反之,磁盘配额没生效
[user1@localhost disk]$ dd if=/dev/zero of=/disk/testfile bs=1M count=60
#建立 testfile 文件,指定大小 60MB
解释下dd命令
dd命令就是加强版的cp命令,可以批量复制,还可以指定大小、指定复制次数
dd if=/dev/zero of=/disk/testfile bs=1M count=60
if=/dev/zero,if后面跟的是源文件。
/dev/zero是一个二进制文件,里面内容全是二进制0,
用cat、vi都看不了里面的内容
of=/disk/testfile,of后面跟的是目标文件
bs=1M,指的是一次复制多少字节(注意默认单位是字节),这里是一次复制1M
count=60,指的是复制多少次,这里一共复制60次
我们最多新建(硬限制数-1)个文件
8. 非交互设定用户磁盘配额
非交互式设定用户磁盘配额的好处:方便写脚本,用程序来实现磁盘配额
[root@localhost ~]# setquota -u 用户名 容量软限制 容量硬限制 个数软限制 \
个数硬限制 分区名
[root@localhost ~]# useradd user4
[root@localhost ~]# passwd user4 #建立用户
[root@localhost ~]# setquota -u user4 10000 20000 5 8 /disk
#设定用户在/disk 分区的容量软限制为 10MB,硬限制 20MB。文件个数软限制 5 个,硬限制#8 个。
原来有4个文件,该用户的硬限制为8,软限制为5
新建了5个文件后开始警告,新建了8个文件后报错
表明最多新建硬限制数-1个文件
关于磁盘配额中文件个数的理解:我们最多新建文件个数为:硬限制数-1个
二、LVM逻辑卷管理
实际工作中应该多使用LVM,因为磁盘动态扩容对于真实生产很重要
实际工作中我们应该用LVM作为标准分区,而不是前面讲得基本分区!!
1. 简介
LVM 是 Logical Volume Manager 的简称,中文就是逻辑卷管理。
-
LVM可以动态调整分区大小,而标准分区方法(fdisk、parted)都不支持分区扩容
-
不支持分区扩容的意思就是当我们旧硬盘空间不够时,如果我们买了块新硬盘,我们不能把新硬盘空间加入到老硬盘老分区里,还得自己重新建分区
-
注意:Linux和Windows下的基本分区默认都不支持动态扩容
-
LVM就相当于windows下的动态磁盘
LVM的原理
- 物理卷(PV,Physical Volume):就是真正的物理硬盘或分区。
我有一块硬盘,我首先要把它分为几个区(也可是整块硬盘作为一个分区),再把这几个区变成物理卷
- 卷组(VG,Volume Group):将多个物理卷合起来就组成了卷组,组成同一个卷组的物理卷
可以是同一个硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一
个逻辑硬盘。
分区变成物理卷后,这些物理卷就可组成卷组,卷组可以动态扩容
组成卷组的这些物理卷,可以来自一块硬盘,也可来自不同硬盘
- 逻辑卷(LV,Logical Volume):卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个
分区我们称作逻辑卷。逻辑卷可以格式化和写入数据。我们可以把逻辑卷想象成为分区。
卷组里面又可按需求分为逻辑卷,想要逻辑卷多大就多大
而且逻辑卷也可以扩容!!
我们真正使用的其实是逻辑卷
- 物理扩展(PE,Physical Extend):PE 是用来保存数据的最小单元,我们的数据实际上都
是写入 PE 当中,PE 的大小是可以配置的,默认是 4MB。
逻辑卷由物理扩展PE组成,它是真实存放数据的
PE是LVM分区的最小单元(或者说它是分区的单位),PE和block很像(或者说是兄弟),但PE不是block。
PE类似与分区中block的概念,也就是LVM的最小存储单位,默认大小为4M;
前面讲的基本分区的单位是柱面(磁道 ),每个柱面8点几MB。
注意:缩减空间有风险,可能造成数据丢失。没有缩减空间的需求!
2.建立 LVM 的步骤:
- 首先需要把物理硬盘分成分区,当然也可以是整块物理硬盘。
- 然后把物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
- 接下来把物理卷整合成为卷组(VG)。卷组就已经可以动态的调整大小了,可以把物理分区
加入卷组,也可以把物理分区从卷组中删除。(不建议删除) - 最后就是把卷组再划分成为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。我们说逻
辑卷可以想象成为分区,所以也需要格式化和挂载。
简述:把硬盘分成一个或多个区,这几个区组成物理卷,物理卷组成卷组。卷组里按需求建立逻辑卷,我们真正使用的就是逻辑卷,逻辑卷也需要格式化和挂载
3.图形界面配置LVM
3.1 CentOS7
新建一个虚拟机,进入安装引导程序
不选择自动创建的话,自己一个一个地建也是没问题的
3.2 CentOS6
新建一个虚拟机,进入安装引导程序
如果boot分区放在LVM里系统无法正常启动
boot分区必须有而且只能是普通分区
大小给它200MB或500MB都可以
上面只分了一个物理卷,当然也可以分多个物理卷
将一个或多个物理卷组成卷组
也可以在这个界面一次性创好逻辑卷
大功告成
LVM就可以看成是分区,之不过他可以动态扩容
4. 物理卷管理(手工命令)
4.1 硬盘分区
创建方式就是使用 fdisk 交互命令,不过需要注意的是分区的系统 ID 不再是 Linux 默认的分区
ID 号 83 了,而要改成 LVM 的 ID 号 8e。
然后按w,保存退出,他会提示重启,咱重启就行。
4.2 建立物理卷
[root@localhost ~]# pvcreate [设备文件名]
建立物理卷时,我们说即可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。如果要把整块硬盘都建立成物理卷,命令如下:
[root@localhost ~]# pvcreate /dev/sdb
在我们的使用中,是要把分区建立成为物理卷,所以执行以下命令:
[root@localhost ~]# pvcreate /dev/sdb5
4.3 查看物理卷
一般用第二个查看命令:pvdisplay
[root@localhost ~]# pvscan
PV /dev/sdb5 lvm2 [1.01 GiB]
PV /dev/sdb6 lvm2 [1.01 GiB]
PV /dev/sdb7 lvm2 [1.01 GiB]
Total: 3 [3.03 GiB] / in use: 0 [0 ] / in no VG: 3 [3.03 GiB]
我们可以看到在我的系统中,/dev/sdb5-7 这三个分区是物理卷。最后一行的意思是:总共 3 个物理卷[大小] / 使用了 0 个卷[大小] / 空闲 3 个卷[大小]。
第二个查询命令是 pvdisplay,它可以查看到更详细的物理卷状态,命令如下:
[root@localhost ~]# pvdisplay
"/dev/sdb5" is a new physical volume of "1.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb5 ←PV 名
VG Name ←属于的 VG 名,还没有分配,所以空白
PV Size 1.01 GiB ←PV 的大小
Allocatable NO ←是否已经分配
PE Size 0 ←PE 大小,因为还没有分配,所以 PE 大小也没有指定
Total PE 0 ←PE 总数
Free PE 0 ←空闲 PE 数
Allocated PE 0 ←可分配的 PE 数
PV UUID CEsVz3-f0sD-e1w0-wkHZ-iaLq-O6aV-xtQNTB PV 的 UUID
一般用第二个查看命令:pvdisplay
4.4 删除物理卷
[root@localhost ~]# pvremove /dev/sdb7
5.卷组管理
5.1 建立卷组
[root@localhost ~]# vgcreate [选项] 卷组名 物理卷名
选项:
-s PE 大小:指定 PE 的大小,单位可以是 MB,GB,TB 等。如果不写默认 PE 大小事 4MB
// 这个选项没什么用,默认4MB很好了,不需要去改
//PE是物理扩展,也是LVM分区的最小单位,是用来保存数据的最小单元
我们又三个物理卷/dev/sdb5-7,我们先把/dev/sdb5 和/dev/sdb6 加入卷组,留着/dev/sdb7 一会实验调整卷组大小,命令如下:
[root@localhost ~]# vgcreate scvg /dev/sdb5 /dev/sdb6
Volume group "scvg" successfully created
5.2 查看卷组
一般用第二个
查看卷组的命令同样是两个,vgscan 主要是查看系统中是否有卷组,而 vgdisplay 则是查看卷组的详
细状态的。命令如下:
[root@localhost ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "scvg" using metadata type lvm2
#scvg 的卷组确实存在
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name scvg ←卷组名
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write ←卷组访问状态
VG Status resizable ←卷组状态
MAX LV 0 ←最大逻辑卷数
Cur LV 0
Open LV 0
Max PV 0 ←最大物理卷数
Cur PV 2 ←当前物理卷数
Act PV 2
VG Size 2.02 GiB ←卷组大小
PE Size 8.00 MiB ←PE 大小
Total PE 258 ←PE 总数
Alloc PE / Size 0 / 0 ←已用 PE 数量/大小
Free PE / Size 258 / 2.02 GiB ←空闲 PE 数量/大小
VG UUID Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ
注意卷组此时还不能使用,因为他还没有逻辑卷
5.3 增加卷组容量
[root@localhost ~]# vgextend scvg /dev/sdb7
Volume group "scvg" successfully extended
#把/dev/sdb7 物理卷也加入 scvg 卷组
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name scvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 3.02 GiB ←卷组容量增加
PE Size 8.00 MiB
Total PE 387 ←PE 总数增加
Alloc PE / Size 0 / 0
Free PE / Size 387 / 3.02 GiB
VG UUID Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ
卷组变成了6G,扩容成功
5.4 减小卷组容量,了解就行
不允许缩减
[root@localhost ~]# vgreduce scvg /dev/sdb7
Removed "/dev/sdb7" from volume group "scvg"
#在卷组中删除/dev/sdb7 物理卷
[root@localhost ~]# vgreduce -a #删除所有的未使用物理卷
5.5 删除卷组,了解
没必要删除卷组
卷组删除之后,才能删除删除物理卷。还要注意的是 scvg 卷组还没有添加任何的逻辑卷,那如果拥有了逻辑卷,记得先删除逻辑卷再删除卷组。删除就是安装的反过程,每一步都不能跳过。
6. 逻辑卷管理
6.1 建立逻辑卷
[root@localhost ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
选项:
-L 容量:指定逻辑卷大小,单位 MB,GB,TB 等 -l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦
-n 逻辑卷名:指定逻辑卷名
那我们就建立一个 1.5GB 的 userlv 逻辑卷吧,建立命令
[root@localhost ~]# lvcreate -L 1.5G -n userlv scvg
Logical volume "userlv" created
#在 scvg 卷组中建立 1.5GB 的 userlv 逻辑卷
建立完逻辑卷之后,还要格式化和挂载之后逻辑卷才能正常使用。格式化和挂载命令和操作普通分区时是一样的,不过需要注意的是逻辑卷的设备文件名是/dev/卷组名/逻辑卷名,如我们的 userlv的设备文件名就是“/dev/scvg/userlv”,具体命令如下:
[root@localhost ~]# mkfs -t ext4 /dev/scvg/userlv
#格式化,注意文件系统是ext4
[root@localhost ~]# mkdir /disklvm
[root@localhost ~]# mount /dev/scvg/userlv /disklvm/
#建立挂载点,并挂载
[root@localhost ~]# mount
…省略部分输出…
/dev/mapper/scvg-userlv on /disklvm type ext4 (rw)
#已经挂载了
当然如果需要开机自动挂载,也要修改/etc/fstab 文件。
6.2 查看逻辑卷
还是推荐用第二个命令
第一个命令
[root@localhost ~]# lvscan
ACTIVE '/dev/scvg/userlv' [1.50 GiB] inherit
#能够看到激活的逻辑卷,大小事 1.5GB
第二个命令是 lvdisplay 可以看到逻辑卷的详细信息,命令如下:
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/scvg/userlv ←逻辑卷设备文件名
LV Name userlv ←逻辑卷名
VG Name scvg ←所属的卷组名
LV UUID 2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
LV Write Access read/write
LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
LV Status available
# open 1
LV Size 1.50 GiB ←逻辑卷大小
Current LE 192
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
6.3 调整逻辑卷大小
[root@localhost ~]# lvresize [选项] 逻辑卷设备文件名
选项:
-L 容量:安装容量调整大小,单位 KB,GB,TB 等。容量前加个+代表增加空间,加个-号代表减少空间。如果直接写容量什么符号都不加,代表设定逻辑卷大小为指定大小。
-l 个数:按照 PE 个数调整逻辑卷大小
我们先在/disklvm 中建立点文件,一会调整完大小,我们看看数据是否会丢失:
[root@localhost ~]# cd /disklvm/
[root@localhost disklvm]# touch testf
[root@localhost disklvm]# mkdir testd
[root@localhost disklvm]# ls
lost+found testd testf
我们刚刚的 userlv 的大小是1.5GB,我们的 scvg 中还有 1.5GB 的空闲空间,那么增加我们的userlv 逻辑卷的大小到 2.5GB 吧:
(注意:不能超过现有卷组剩余空间!!而且不能往小里调!)
[root@localhost disklvm]# lvresize -L 2.5G /dev/scvg/userlv
Extending logical volume userlv to 2.50 GiB
Logical volume userlv successfully resized
#增加 userlv 逻辑卷的大小到 2.5GB
#当然命令也可以这样写 [root@localhost disklvm]# lvresize -L +1G /dev/scvg/userlv
[root@localhost disklvm]# lvdisplay
--- Logical volume ---
LV Path /dev/scvg/userlv
LV Name userlv
VG Name scvg
LV UUID 2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
LV Write Access read/write
LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
LV Status available
# open 1
LV Size 2.50 GiB ←大小改变了
Current LE 320
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
逻辑卷的大小已经改变了,但是好像有些问题啊:
[root@localhost disklvm]# df -h /disklvm/
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-userlv 1.5G 35M 1.4G 3% /disklvm
怎么/disklvm 分区的大小还是 1.5GB 啊?刚刚只是逻辑卷的大小改变了,如果需要让分区使用这个新逻辑卷,我们还要使用 resize2fs 命令来调整分区的大小。不过这里就体现了 LVM 的优势,我们不需要卸载分区,直接就能调整分区的大小。resize2fs 命令如下:
[root@localhost ~]# resize2fs [选项] [设备文件名] [调整的大小]
选项:
-f: 强制调整
设备文件名:指定调整哪个分区的大小
调整的大小:指定把分区调整到多大,要加 M,G 等单位。如果不加大小,会使用整个
分区
那么我们已经把逻辑卷调整到了 2.5GB,这时我们就需要把整个逻辑卷都加入/disklvm 分区,命令如下:
[root@localhost ~]# resize2fs /dev/scvg/userlv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/scvg/userlv is mounted on /disklvm; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/scvg/userlv to 655360 (4k) blocks.
The filesystem on /dev/scvg/userlv is now 655360 blocks long.
#已经调整了分区大小
[root@localhost ~]# df -h /disklvm/
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-userlv 2.5G 35M 2.4G 2% /disklvm
#分区大小已经是 2.5GB 了
[root@localhost ~]# ls /disklvm/
lost+found testd testf
#而且数据并没有丢失
关于resize2fs [选项] [设备文件名] [调整的大小]命令中,[调整的大小]这一参数的理解
这一参数就是问我们当逻辑卷大小调整后,我们想让分区使用多少这个新逻辑卷的容量
假设逻辑卷调整前为2.5G,此时分区大小也是2.5G。然后逻辑卷调整为4G
分区就是逻辑卷对应的挂载点
-
如果不加参数,那么相当于:我逻辑卷调整后为4G,分区可以全部使用这4G,分区也就变成了4G
-
如果[调整的大小]写成3G,那么意思是:我逻辑卷调整后为4G,分区只可以使用4G里的3G,分区变成了3G
-
注意[调整的大小]必须大于原来分区的大小,比如原来分区大小为2.5G,逻辑卷调整为4G后,分区只能使用4G中的1G,这是不行的。得分2.5G以上给分区才行
6.4 删除逻辑卷
[root@localhost ~]# lvremove 逻辑卷设备文件名
我们删除 userlv 这个逻辑卷,记得删除时要先卸载。命令如下:
[root@localhost ~]# umount /dev/scvg/userlv
[root@localhost ~]# lvremove /dev/scvg/userlv
userlv3已卸载,只是图片上没给出
总结
LVM可以动态调整简述:先把分区准备好,并把他们变成物理卷,物理卷组成卷组。当卷组容量满了的时候,我们再往里加物理卷,卷组扩容。卷组扩容后,里面的逻辑卷也能扩容或者往卷组里新添加逻辑卷,这样LVM就一直在动态调整中,而且数据不会丢失。