Linux高级文件系统

课程知识点

磁盘配额

LVM逻辑卷管理

磁盘阵列

技术目标

掌握磁盘配额的应用及配置方法

掌握LVM逻辑卷的应用及配置方法

掌握磁盘阵列的应用及配置方法

课程内容

一、磁盘配额

1.1 磁盘配额的概念

quota 磁盘配额功能只在指定的文件系统(分区)内有效,未设置配额的文件系统不受限制。

quota 针对指定的用户账号、组账号进行限制,其他用户或组不受影响。

磁盘配额可以进行两方面的限制:磁盘容量、文件数量。 

磁盘容量:限制用户能够使用的磁盘数据块(block)大小,也就是限制磁盘空间大小,

默认单位为 KB。

文件数量:限制用户能够拥有的文件个数。

磁盘配额的限制方法分为软限制和硬限制两种。 

软限制:指设定一个软性的配额数值(如 500MB 磁盘空间、200 个文件),在固定的宽限期(默认为 7 天)内允许暂时超过这个限制,但系统会给出警告信息。

硬限制:指设定一个硬性的配额数值(如 1GB 磁盘空间、500 个文件),而且绝对禁止用户超过该限值。硬限制的配额值应大于相应的软限制值,否则软限制值将失效。

通过quota磁盘配额可以方便地对单个用户或用户组的可用磁盘空间进行限制,使磁盘管理工作具有更大的灵活性。在生产环境中具体应用时还应注意quota是以每一个使用者,每一个文件系统为基础的,它不能跨文件系统对用户做出配额,如果使用者可能在超过一个以上的系统中建立文件,那么必须在每一个文件系统上分别设定quota配额。另外,由于root用户在Linux环境中具有最高的管理权限,所以无法对root用户设置配额。

1.2 磁盘配额的条件

1.2.1 内核必须支持磁盘配额

[root@localhost ~]# grep CONFIG_QUOTA /boot/config-2.6.32-279.el6.i686

CONFIG_QUOTA=y

CONFIG_QUOTA_NETLINK_INTERFACE=y

[root@localhost ~]# CONFIG_QUOTA_DEBUG is not set

CONFIG_QUOTA_TREE=y

CONFIG_QUOTACTL=y

1.2.2 系统中必须安装了 quota 工具

我们的 Linux 默认是安装了 quota 工具的,查看命令如下

[root@localhost ~]# rpm -qa | grep quota

支持磁盘配额的分区必须开启磁盘配额功能,这个功能需要手工开启,不是默认开启的。

需要关闭selinux安全机制,可以输入setenforce 0将保护状态关闭

1.3 配置磁盘配额

下面以“/dev/sdb1”分区为例,先将其挂载到“/data”目录下,然后在文件系统中实现磁盘配额。

1.3.1 启用quota 磁盘配额

方法一:使用mount命令挂载并启用,但只能临时生效。

[root@localhost ~]# mount -o remount,usrquota,grpquota /disk1

方法二:修改配置文件“/etc/fstab”的方式启用 quota 磁盘配额。

        [root@localhost var]# vim /etc/fstab

/dev/sdb1 /data ext4 defaults,usrquota,grpquota 0 0

将该文件系统重新挂载

# mount -o remount /data

执行 mount 命令查看已经挂载的文件系统,检查是否已经启用了 usrquota 和grpquota 功能[root@localhost ~]# mount | grep sdb1

/dev/sdb1 on /data type ext4 (rw,usrquota,grpquota)

1.3.2 生成配额文件

quotacheck 命令可以对文件系统进行磁盘配额检测,发现哪些文件系统启用了磁盘配额功能,并在这些文件系统中生成配额文件 aquota.user 和 aquota.group。

[root@localhost ~]# quotacheck -cvug /data

相关选项的作用:

-a:扫描/etc/mtab 文件中所有启用磁盘配额功能的分区。如果加入此参数,命令后面

就不需要加入分区名了

-c:不管原有的配置文件,重新扫描并建立新的配置文件

-u:建立用户配额的配置文件,也就是生成 aquota.user 文件

-g:建立组配额的配置文件,会生成 aquota.group 文件

-v:显示扫描过程

-m:强制以读写的方式扫描文件系统,和-M 类似。一般扫描根分区时使用。

-f:强制扫描文件系统,并写入新的配置文件。一般扫描新添加的硬盘分区时使用

[root@localhost ~]# setenforce 0 ’将 SELinux 设为许可模式

[root@localhost ~]# quotacheck -cvug /data ’再次执行 quotacheck 命令[root@localhost ~]# ls /data ’查看生成的配额

aquota.group aquota.user lost+found

1.3.3 编辑用户和组的配额设置

1)编辑用户的配额设置

方法一:交互式编辑用户的配额

使用 edquota 命令结合“-u”、“-g”选项可用于编辑用户或组的配额设置。创建 financial 组,创建用户 jerry,将 financial 指定为 jerry 的基本组。

[root@localhost ~]# edquota -u jerry ’设置用户 jerry 的磁盘配额

    

Filesystem:表示本行配置对应的文件系统(分区),即配额的作用范围。

blocks:表示当前已使用的磁盘容量,默认单位为 KB。该值由 edquota 程序自动计算生成。

soft:第 3 列中的 soft 对应为磁盘容量的软限制数值,默认单位为 KB; 第 6 列中的 soft 对应为文件数量的软限制数值位为个。

hard:第 4 列中的 hard 对应为磁盘容量的硬限制数值,默认单位为 KB;,默认单第 7 列中的hard 对应为文件数量的硬限制数值,默认单位为个;

inodes:表示当前已拥有的文件数量。该值由 edquota 程序自动计算生成。

方法二:非交互设定用户磁盘配额

[root@localhost ~]# setquota -u 用户名 容量软限制 容量硬限制 个数软限制 \ 个数硬限制 分区名[root@localhost ~]# setquota -u user4 10000 20000 5 8 /disk

设定用户在/disk分区的容量软限制为10MB,硬限制 20MB;文件个数软限制5个,硬限制8个。

2)编辑组的配额设置

[root@localhost ~]# edquota -g financial ’设置 financial 组的磁盘配额

配额设置仅对基本组生效。如用户 jerry 所属的基本组是“financial”,所属的附加组是“technology”,那么只有针对“financial”组设置的配额才对 jerry 有效,而针对“technology”组设置的配额则对 jerry 没有限制。

3)激活磁盘配额

[root@localhost ~]# quotaon -ugv /data ’激活“/data”文件系统的用户、组配额

/dev/sdb1 [/data]: group quotas turned on

/dev/sdb1 [/data]: user quotas turned on

相关选项的作用:

-u,激活用户磁盘配额。

-g,激活组磁盘配额。

-v,显示详细信息。

(4)验证并查看磁盘配额

下面使用受配额限制的用户帐号(jerry)登录 Linux 系统,并向应用了配额的文件系统进行复制文件等写操作,测试所设置磁盘配额项是否有效。为了方便测试,将用户 jery 的基本组设为financial,对用户和组的磁盘配额功能一并进行测试。

用 dd 命令生成指定大小的测试文件,从设备文件/dev/zero 中复制数据到/home/jerry/test 文件,读取 210 个大小为 1MB 的数据块。

[root@localhost ~]#chmod 777 /data   开放 data/的写入权限

[jerry@localhost ~]# dd if=/dev/zero of=/mnt/data bs=1MB count=5 

使用 quota 命令结合“-u”、“-g”选项分别查看指定用户和组的配额使用情况。

执行 repquota /data 查看/data 文件系统的配额使用情况报告

(5)配额复制

tom 用户的配额值和 jerry用户完全一样,我们就可以使用 jerry用户作为模板进行复制。这 样我们如果需要建立大量的配额值一致的用户时,就会非常方便,不用一个个手工建立了。复制命令 如下:

[root@localhost ~]# edquota -p jerry -u tom         命令: -p 源用户  -u 目标用户

(6)修改宽限时间

我们要求把宽限时间改为 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

分区名         容量的宽限时间               文件个数的宽限时间

(7)关闭磁盘配额

利用 quotaoff -vug 命令关闭磁盘配额

      

二、LVM逻辑卷管理

2.1 LVM简介 

LVM 是 Logical Volume Manager 的简称,中文就是逻辑卷管理。

物理卷(PV,Physical Volume)

真正的物理硬盘或分区。

卷组(VG,Volume Group)

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

逻辑卷(LV,Logical Volume)

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

物理扩展(PE,Physical Extend)

PE 是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中,PE 的大小是可以配置的,默认是 4MB。

2.2 建立 LVM 的步骤

(1) 将物理硬盘分成分区,当然也可以是整块物理硬盘。 (分区后修改为8e(LVM)以支持逻辑卷)

fdisk /dev/sdb

>n

>p

>回车

>回车

>回车

>t

>8e

>w

功能

物理卷管理

卷组管理

逻辑卷管理

scan 扫描

pvscan

vgscan

lvscan

Create 建立

pvcreate

vgcreate

lvcreate

Display 显示

pvdisplay

vgdisplay

lvdisplay

Remove 删除

pvremove

vgremove

lvremove

Reduce 缩减

vgreduce

lvreduce

Extend 扩展

vgextend

lvextend

(2) 将物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。

(3) 将物理卷整合成为卷组(VG)。卷组可以动态调整大小,可以将物理分区加入卷组,也可以将物理分区从卷组中删除。

(4) 将卷组再划分成为逻辑卷(LV),逻辑卷也是可以直接调整大小的。

(5) 对逻辑卷进行格式化并挂载使用。

2.3 物理卷管理命令

2.4 物理卷管理

2.4.1 硬盘分区

创建方式就是使用 fdisk 交互命令,不过需要注意的是分区的系统 ID 不再是 Linux 默认的分区ID 号 83 了,而要改成 LVM 的 ID 号 8e。

2.4.2 建立物理卷

[root@localhost ~]# pvcreate [设备文件名]

建立物理卷时,我们说即可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。如果要把整块硬盘都建立成物理卷,命令如下

[root@localhost ~]# pvcreate /dev/sdb

在我们的使用中,是要把分区建立成为物理卷,所以执行以下命令:

[root@localhost ~]# pvcreate /dev/sdb5

2.4.3 查看物理卷

[root@localhost ~]# pvscan

第二个查询命令是 pvdisplay,它可以查看到更详细的物理卷状态,命令如下:

[root@localhost ~]# pvdisplay

2.4.4 删除物理卷

[root@localhost ~]# pvremove /dev/sdb7

2.5 卷组管理

2.5.1 建立卷组

[root@localhost ~]# vgcreate [选项] 卷组名 物理卷名

选项: 

-s  PE大小:指定PE的大小,单位可以是 MB,GB,TB等,如果不写默认 PE 大小为4MB。

把/dev/sdb5 和/dev/sdb6 加入卷组scvg,命令如下:

[root@localhost ~]# vgcreate -s 8MB scvg /dev/sdb5 /dev/sdb6

Volume group "scvg" successfully created

2.5.2 查看卷组

查看卷组的命令同样是两个,vgscan 主要是查看系统中是否有卷组,而 vgdisplay 则是查看卷组的详细状态的。命令如下:

[root@localhost ~]# vgscan

[root@localhost ~]# vgdisplay

2.5.3 增加卷组容量

[root@localhost ~]# vgextend scvg /dev/sdb7

Volume group "scvg" successfully extended

#把/dev/sdb7 物理卷也加入 scvg 卷组

2.5.4 减小卷组容量

[root@localhost ~]# vgreduce scvg /dev/sdb7

Removed "/dev/sdb7" from volume group "scvg"

#在卷组中删除/dev/sdb7 物理卷

[root@localhost ~]# vgreduce -a

#删除所有的未使用物理卷

2.5.5 删除卷组

[root@localhost ~]# vgremove scvg

Volume group "scvg" successfully removed

卷组删除之后,才能删除删除物理卷。还要注意的是 scvg 卷组还没有添加任何的逻辑卷,那如果拥有了逻辑卷,记得先删除逻辑卷再删除卷组。还记得我刚说的吗?删除就是安装的反过程,每一步都不能跳过。

2.6 逻辑卷管理

2.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

[root@localhost ~]# mkdir /disklvm

[root@localhost ~]# mount /dev/scvg/userlv /disklvm/

当然如果需要开机自动挂载,也要修改/etc/fstab 文件。

2.6.2 调整逻辑卷大小

[root@localhost ~]# lvresize [选项] 逻辑卷设备文件名

选项说明:

-L 容量:安装容量调整大小,单位 KB,GB,TB 等。使用+代表增加空间,-号代表减少

空间。如果直接写容量,代表设定逻辑卷大小为指定大小。

-l 个数:按照 PE 个数调整逻辑卷大小

【举例】增加 userlv 逻辑卷的大小到 2.5GB

[root@localhost disklvm]# lvresize -L 2.5G /dev/scvg/userlv

当然命令也可以这样写:

[root@localhost disklvm]# lvresize -L +1G /dev/scvg/userlv

虽然逻辑卷的大小已经改变,但/disklvm 分区的大小还是原来的大小,刚刚只是逻辑卷的大小改变了,如果要让分区使用这个新逻辑卷,我们还要使用 resize2fs 命令来调整分区的大小。

[root@localhost ~]# resize2fs [选项] [设备文件名] [调整的大小]

-f: 强制调整

设备文件名:指定调整哪个分区的大小

调整的大小:把分区调整到多大,要加M、G等单位。如果不加大小,会使用整个分区。

【举例】[root@localhost ~]# resize2fs /dev/scvg/userlv

2.6.3 删除逻辑卷

[root@localhost ~]# lvremove 逻辑卷设备文件名

在删除 userlv 这个逻辑卷之前,要先卸载。命令如下:

[root@localhost ~]# umount /dev/scvg/userlv

[root@localhost ~]# lvremove /dev/scvg/userlv

三、磁盘阵列

磁盘阵列(Redundant Arrays of Independent Disks,RAID),是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,将数据切割成许多区段,分别存放在各个硬盘上,从而提升整个磁盘系统的效能。磁盘阵列还能利用同位检查(Parity Check)的观念,当数组中任意一个硬盘发生故障时,仍可读出数据。在数据重构时,可将数据经计算后重新置入新硬盘中。

3.1 功能

RAID技术主要有以下三个基本功能:

通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度

通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。

通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。

3.2 分类

磁盘阵列有三种:外接式磁盘阵列柜、内接式磁盘阵列卡,利用软件来仿真。

外接式磁盘阵列柜

常用于大型服务器,具有可热交换(Hot Swap)特性,不过这类产品的价格都很贵。

内接式磁盘阵列卡

因为价格便宜,但需要较高的安装技术,适合技术人员使用操作。硬件阵列能够提供在线扩容、动态修改阵列级别、自动数据恢复、驱动器漫游、超高速缓冲等功能。它能提供性能、数据保护、可靠性、可用性和可管理性的解决方案。阵列卡专用的处理单元来进行操作。 

利用软件仿真

是指通过网络操作系统自身提供的磁盘管理功能将连接的普通SCSI卡上的多块硬盘配置成逻辑盘,组成阵列。软件阵列可以提供数据冗余功能,但是磁盘子系统的性能会有所降低,有的降低幅度还比较大,达30%左右。因此会拖累机器的速度,不适合大数据流量的服务器

3.3 RAID级别

3.3.1 RAID0 带区卷

RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。其特点如下:

磁盘空间使用率:100%,成本最低。

读性能:N*单块磁盘的读性能

写性能:N*单块磁盘的写性能

冗  余:无,任何一块磁盘损坏都将导致数据不可用。

3.3.2 RAID1镜像卷

RAID1通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。其特点如下:

磁盘空间使用率:50%,故成本最高。

读性能:只能在一个磁盘上读取,取决于磁盘中较快的那块盘

写性能:两块磁盘都要写入,虽然是并行写入,但因为要比对,故性能单块磁盘慢。

冗  余:只要系统中任何一对镜像盘中有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行。

3.3.3 RAID5

RAID 5是RAID 0和RAID 1的折中方案。RAID 5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。其特点如下:

磁盘空间利用率:(N-1)/N,即只浪费一块磁盘用于奇偶校验。

读性能:(n-1)*单块磁盘的读性能,接近RAID0的读性能。

写性能:比单块磁盘的写性能要差

冗余:只允许一块磁盘损坏。

3.3.4 RAID10

RAID10也被称为镜象阵列条带。象RAID0一样,数据跨磁盘抽取;象RAID1一样,每个磁盘都有一个镜象磁盘, 所以RAID 10的另一种会说法是 RAID 0+1。RAID10提供100%的数据冗余,支持更大的卷尺寸,但价格也相对较高。对大多数只要求具有冗余度而不必考虑价格的应用来说,RAID10提供最好的性能。使用RAID10,可以获得更好的可靠性,因为即使两个物理驱动器发生故障(每个阵列中一个),数据仍然可以得到保护。其特点如下:

磁盘空间利用率:50%。

读性能:N/2*单块硬盘的读性能

写性能:N/2*单块硬盘的写性能

冗  余:只要一对镜像盘中有一块磁盘可以使用就没问题。

3.3.5 RAID磁盘管理

1)首先安装mdadm工具

#yum install -y mdadm

2)mdadm命令参数
-a 增加设备 
-n 指定设备数量
-l 指定RAID等级
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止

(3)做RAID0(两块硬盘)

第一步:对需要做阵列的磁盘进行分区,分区编号:fd

第二步:创建RAID0

#mdadm -Cv /dev/md0 -a yes -n2 -l0 /dev/sdb /dev/sdc

第三步:格式化磁盘并挂载

#mkfs -t ext4 /dev/md0

#mkdir /mnt/md0

#mount /dev/md0 /mnt/md0

第四步:建立测试文件

#vim 1.txt

第五步:查看详细信息

#mdadm -D /dev/md0

     第六步:模拟一个磁盘损坏再查看文件已经丢失

(4)做RAID1(两块硬盘)

第一步:对磁盘进行分区,分区编号为:fd

第二步:做RAID1

        #mdadm -Cv /dev/md1 -a yes -n2 -l1 /dev/sd[bc]1

第三步:格式化并挂载

# mkfs -t ext4 /dev/md1

#mkdir /mnt/md1

#mount /dev/md1 /mnt/md1

第四步:模拟一个磁盘损坏,查看文件还存在。

# mdadm /dev/md1 -a /dev/sdd1

# mdadm /dev/md1 -f /dev/sdc1

(5)RAID5卷(三块硬盘)

第一步:对磁盘进行分区,分区编号为:fd

第二步:做RAID1

        #mdadm -Cv /dev/md5 -a yes -n2 -l5 /dev/sd[bc]1

第三步:格式化并挂载

#mkfs -t ext4 /dev/md5

#mkdir /mnt/md5

#mount /dev/md5 /mnt/md5

第四步:模拟一个磁盘损坏,查看文件还存在。

#mdadm /dev/md5 -a /dev/sdd1

#mdadm /dev/md5 -f /dev/sdc1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值