linux从入门到精通十:高级文件系统管理

视频与文档都来自尚硅谷,点此链接(http://www.atguigu.com/linux_video.shtml#linux_yw)

文章目录


前言

本章的内容仍然是讲分区,主要讲磁盘配额(磁盘配额针对的是分区)和LVM

不需要背,做出文档,以后遇到了看文档就行


一、磁盘配额(quota)

1、磁盘配额概念

限制普通用户或用户组在分区上使用磁盘空间和文件大小、个数

换句话说我给你分配个使用空间,我让你用多大你就只能用多大

磁盘配额不能限制超级用户




2、磁盘配额条件

  1. 内核必须支持磁盘配额
[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


在这里插入图片描述
如果出现了上面那些语句,就说明内核支持磁盘配额



  1. 系统中必须安装了 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、磁盘配额规划,下面的实验跟这个磁盘配额规划会有一些不同,大致了解一下这个规划就行

我们开始磁盘配额实验,首先我们来规划下我们的实验:

  1. 磁盘配额是限制普通用户在分区(可以限制/分区,但不能限制swap分区,swap分区是给内核用的)上使用磁盘空间和文件个数的(两个关键点:一个是普通用户 第二个是分区),所以我们需要指定一个分区。那么我们手工建立一个 5GB 的/dev/sdb1 分区,把它挂载到/disk 目录当中。

  2. 还有我们需要建立被限制的用户和用户组。那么我们假设需要限制 user1、user2 和 user3用户,这三个用户属于 test 用户组。
    注意:组配额在实际工作中包括本次实验中几乎没办法使用,了解以下就行了

  3. 其中 test 组磁盘容量硬限制为 500MB,软限制 450MB,文件个数不做限制。user1 用户为了便于测试,磁盘容量硬限制为 50MB,软限制为 40MB,文件个数硬限制限制为 10 个,软限制为 8 个。user2 和 user3 用户磁盘容量硬限制为 250MB,软限制为 200MB,文件个数不做限制。

  4. 大家发现 user1、user2 和 user3 用户加起来的磁盘容量限制为 550MB,超过了 test 组的磁盘容量限制 500MB。这样的话,某个用户可能达不到自己的用户限制,而达到组限制时就不能再写入数据了。也就是说,如果用户限制和组限制同时存在,那么哪个限制更小,哪个限制优先生效。(再提醒一遍:组配额不是平均分配,是先到先得)

  5. 系统宽限时间我们改为 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 注意

  1. 磁盘配额限制的是普通用户,不能用root用户来测试,所以要先登录user1
    在这里插入图片描述



  2. 不能再家目录下写入文件,得进入到挂载目录里写文件,因为我们限制的是分区,分区在挂载点里
    在这里插入图片描述



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 的简称,中文就是逻辑卷管理。

  1. LVM可以动态调整分区大小,而标准分区方法(fdisk、parted)都不支持分区扩容

  2. 不支持分区扩容的意思就是当我们旧硬盘空间不够时,如果我们买了块新硬盘,我们不能把新硬盘空间加入到老硬盘老分区里,还得自己重新建分区

  3. 注意:Linux和Windows下的基本分区默认都不支持动态扩容

  4. LVM就相当于windows下的动态磁盘



LVM的原理

在这里插入图片描述

  1. 物理卷(PV,Physical Volume):就是真正的物理硬盘或分区。

我有一块硬盘,我首先要把它分为几个区(也可是整块硬盘作为一个分区),再把这几个区变成物理卷

  1. 卷组(VG,Volume Group):将多个物理卷合起来就组成了卷组,组成同一个卷组的物理卷
    可以是同一个硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一
    个逻辑硬盘。

分区变成物理卷后,这些物理卷就可组成卷组,卷组可以动态扩容

组成卷组的这些物理卷,可以来自一块硬盘,也可来自不同硬盘

  1. 逻辑卷(LV,Logical Volume):卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个
    分区我们称作逻辑卷。逻辑卷可以格式化和写入数据。我们可以把逻辑卷想象成为分区。

卷组里面又可按需求分为逻辑卷,想要逻辑卷多大就多大
而且逻辑卷也可以扩容!!
我们真正使用的其实是逻辑卷

  1. 物理扩展(PE,Physical Extend):PE 是用来保存数据的最小单元,我们的数据实际上都
    是写入 PE 当中
    PE 的大小是可以配置的默认是 4MB

逻辑卷由物理扩展PE组成,它是真实存放数据的

PE是LVM分区的最小单元(或者说它是分区的单位),PE和block很像(或者说是兄弟),但PE不是block。

PE类似与分区中block的概念,也就是LVM的最小存储单位,默认大小为4M;

前面讲的基本分区的单位是柱面(磁道 ),每个柱面8点几MB。

注意:缩减空间有风险,可能造成数据丢失。没有缩减空间的需求!




2.建立 LVM 的步骤:

  1. 首先需要把物理硬盘分成分区,当然也可以是整块物理硬盘。
  2. 然后把物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
  3. 接下来把物理卷整合成为卷组(VG)。卷组就已经可以动态的调整大小了,可以把物理分区
    加入卷组,也可以把物理分区从卷组中删除。(不建议删除)
  4. 最后就是把卷组再划分成为逻辑卷(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
分区就是逻辑卷对应的挂载点


  1. 如果不加参数,那么相当于:我逻辑卷调整后为4G,分区可以全部使用这4G,分区也就变成了4G
    在这里插入图片描述



  2. 如果[调整的大小]写成3G,那么意思是:我逻辑卷调整后为4G,分区只可以使用4G里的3G,分区变成了3G
    在这里插入图片描述



  3. 注意[调整的大小]必须大于原来分区的大小,比如原来分区大小为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就一直在动态调整中,而且数据不会丢失

LVM已经很成熟了,实际生产中一定要使用LVM。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值