Linux配置磁盘配额与管理RAID卷

| 文章字数:3.5k | 阅读时长:13min
这是一篇更新于 556 天前的文章,其中的信息可能已经有所发展或是发生改变。

当Linux根分区的磁盘空间耗尽时,系统将无法在建立新的文件,从而出现服务程序崩溃,系统无法启动等故障现象,为了避免在服务器中出现类似磁盘空间不足的问题,可以设置启用磁盘的配额的功能。对用户在指定文件系统中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或者无意间占用大量磁盘空间,保持系统存储空间的稳定性和持续可用性。

任务一

配置用户基本磁盘配额限制

背景一公司现有用户名为yhy的邮件用户,经常上传大量的邮件附件,占用服务器的硬盘资源,他的邮件存放路径为/mail目录,挂载分区为/dev/sdb1,现在需要限制yhy用户磁盘的最大使用量为10MB,超过7MB发出警告,超过10MB就不能再在/mail中存储数据。

确认quota软件包的安装情况

1
2
rpm -qa |grep quota
rpm -ql quota | grep sbin

(づ ̄3 ̄)づ╭❤~有信息返回则说明已安装,centos系统一般安装系统时已经默认安装。

创建用户

1
2
useradd yhy
passwd yhy

创建文件夹,并设置权限

1
2
mkdir /mail
chmod 777 /mail

磁盘分区,格式化

添加一块磁盘进行测试

1
2
3
fdisk  -l /dev/sdb    //查看磁盘使用情况
fdisk /dev/sdb //磁盘分区
mkfs.ext4 /dev/sdb1 //创建文件系统并格式化

磁盘分区具体步骤,由于十分简单在这里省略

挂载

1
2
mount -o usrquota /dev/sdb1 /mail 	//挂载
tail /etc/mtab //查看系统挂载的分区

- o usrquota为用户的配额属性

开机自动挂载

1
vim /etc/fstab

在文件最后一行添加如下图所示内容

参数grpquota表示增加组的配额属性。

重新挂载/dev/sdb1到/mail目录ლ(′◉❥◉`ლ)

1
2
mount -o remount /dev/sdb1
mount //查看挂载分区情况

检测配额并生成配额文件

此处要关闭selinux,关闭selinux的命令是setenforce 0,不然可能无法创建aquota.user和aquota.group文件。

1
2
quotacheck -ugcv /dev/sdb1   //检测配额文件并生成配额文件
ls -l /mail/

可以看到在/mail目录下自动生成aquota.group和aquota.user两个配置文件。

备注:上面参数具体含义如下

-u,检测用户的配额信息;

-g,检测组配额信息;

-c,创建新的配额文件;

-v,显示命令执行过程中的细节信息

编辑用户yhy的配额

1
2
setquota -u yhy 7000 10000 0 0 /dev/sdb1 //配置yhy用户的磁盘配额
edquota -u yhy

激活配额

1
quotaon /dev/sdb1

验证配额

(1)创建文件,把文件所有权给用户

1
2
mkdir /mail/quotayhy
chown yhy /mail/quotayhy

使用vim创建一个文件,写入任意内容。(只是后面测试用的)

(2)切换用户,查看结果

1
2
3
su - yhy
cd /mail/quotayhy
quota

(3)新建文件,查看具体情况

1
dd if=/dev/zero of=fileyhy bs=100K count=200

建立一个文件名为fileyhy、每块大小为100K、块数为200的20MB的文件

由上图可知,提示超出磁盘配额限制,只能建立10MB大小的文件,并且已经满了。

(4)再建立一个1K*200的文件

1
dd if=/dev/zero of=fileyhy1 bs=1K count=200

使用ll命令查看文件大小

关闭磁盘配额

1
2
quotaoff /dev/sdb1	//关闭磁盘配额
rm /etc/mtab //删除配置文件

删除/ect/fstab里面最后一行

任务二

配置配额Samba服务器

背景公司有多个部门,有时候同一个部门要占用同一个共享硬盘空间,而文件服务器的空间是有限的,为了限制一个部门过多地占用共享空间而让其他部门的文件无法存放,就要给共享硬盘做一个配额,规定某一个部门最多占用一定的空间。现企业需要限制市场部的用户使用服务器的磁盘空间大小,设置用户yhy的最大使用量为100MB,超过70MB时警告。

重新设置挂载

1
vim /etc/fstab

修改开机自动挂载文件,并设置配额usrquota,groupquota

然后重启系统来完成上述设置的开机自动挂载,开机后使用mount命令来查看磁盘的挂载情况。

对用户和用户组建立配额文件

1
quotacheck -cumg /

系统会在根目录下自动生成两个文件’aquota.group’和’aquota.user’.

给用户配额

1
edquota -u yhy

参数-u表示为用户配置,若为用户组配置的话则加参数-g即可。具体配置内容如下

软限制为70MB,硬限制为100MB

启动配额项

1
quotaon -avug

修改配额

若想要修改磁盘的配额项必须先使用quotaoff -a命令来停止配额功能,然后才可以修改配置文件,配置完成后再使用quotaon -avug启动配额功能,使修改生效。

配额测试

首先使用su - yhy切换到yhy用户

1
2
3
4
dd if=/dev/zero of=yhy1 bs=1M count=20 //建立大小为20MB的yhy1文件
dd if=/dev/zero of=yhy2 bs=1M count=20 //建立大小为20MB的yhy1文件
dd if=/dev/zero of=yhy3 bs=1M count=20 //建立大小为20MB的yhy1文件
dd if=/dev/zero of=yhy4 bs=1M count=20 //建立大小为20MB的yhy1文件

当创建第四个文件时候,文件达到80MB,超过了所要求的70MB。系统给出提示警告dm-0: warning, user block quota exceeded.

继续使用命令创建文件,创建一个大小为66MB的文件yhy5,系统会提示超过磁盘配额限制。

1
dd if=/dev/zero of=yhy5 bs=1M count=66

使用du -sh可以查看到用户使用的磁盘空间为98M.

配置Samba文件

使用vim /etc/samba/smb.conf命令编辑配置文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
[global]
44workgroup=MYGROUP
44security=user
44passdb backend=tdbsam
44load printers=yes
44cups options= raw
[disk]
44path= /disk
44browseable=yes
44writable=yes
44guest ok=no
44valid users= yhy

创建/disk目录,并设置相关权限

1
2
3
mkdir /disk
chown yhy.yhy /disk
chmod 700 /disk

测试

在windows上使用\\serverIP\disk

找个大于100MB的文件来测试下,就拿b站后端源码好了,由于超过100MB所以文件并不能全部复制进去。

配置企业quota的组限定

因为在日常的实际工作之中并不会对于单独的某一个用户进行限定,而是给一个组。例如一个部门,每人都有自己的用户名,同时能访问到属于这个部门的共享空间。只要把这些用户名同属于一个组,然后对于组进行限定即可。

(1)建立用户组以及用户

1
2
3
4
5
6
7
groupadd markets		//建立市场部所在组
useradd -g markets mk1
useradd -g markets mk2
useradd -g markets mk3 //建立所属markets组下的用户mk3
useradd Tom
useradd Jane
useradd John

(2)设定配额

使用edquota -g markets命令来编辑用户组markets以及用户Tom、Jane、John的配额文件,设置为跟上面的一样。均为超过70MB警告,最大使用量为100MB。配置好后quotaoff -a关闭磁盘配额功能,再使用quotaon -avug命令开启磁盘的配额功能。

(3)设定Samba用户

1
2
3
4
5
6
smbpasswd -a mk1
smbpasswd -a mk2
smbpasswd -a mk3
smbpasswd -a Tom
smbpasswd -a Jane
smbpasswd -a John

(4)配置smb.conf文件

使用vim /etc/samba/smb.conf命令编辑配置文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
[global]
44workgroup= MYGROUP
44security= user
44passdb backend= tdbsam
44load printers= yes
44cups options= raw

[disk]
44path= /disk
44browseable=yes
44writable=yes
44guest ok=no
44valid users= Tom,Jane,John,mk1,mk2,mk3

(5)改变共享目录所属组与权限

使用chown .markets /disk把共享目录的属组设置为markets,然后使用chmod 770 /disk命令给目录的属组加上完全控制的权限。

(6)重启服务service smb restart

测试

经过测试发现mk1,mk2,mk3三个用户共享的相同的空间,大小为100MB。Tom,Jane,John三个用户的空间为100MB。

在这里只是为了说明三个用户的空间为100MB,当然你也可以让1个用户使用100MB的空间,只不过其余两个用户无法再往里面写入数据。

思考在上面我们对markets组进行了配额,那么如果我们同时对属于markets组的用户mk1也进行配额那么会怎么样?

测试一

设定quota

1
2
3
edquota -u mk1
quotaoff -a
quotaon -avug

在这设为30MB警告,最大可用空间为60MB。

在mk1用户使用60M以后mk2只能使用40MB。

测试二

1
2
3
edquota -u mk1
quotaoff -a
quotaon -avug

在这设为80MB警告,最大可用空间为110MB。

mk1用户存储文件达到70MB时,系统警告。mk1用户最大的使用空间为100MB。

可见在对于组以及属于这个组的某个用户做了不同限定以后,系统采用最小化原则,让最小的生效。

任务三

配置系统用户的磁盘空间限制

Linux是一个多任务、多用户的操作系统,一般情况下每个用户都有一个自己的家目录,每个用户对自己的家目录都具有读写的权限,如果管理员不对用户的家目录进行磁盘限制,用户就可能会把磁盘塞满,这是任何一个管理员都不希望看到的,下面我们将采用quota来实现对系统用户使用磁盘空间的限制。

在一台Linux服务器上主要有以下几个用户,分别为wang、user1、user2、user3、user4五个用户。下面对其进行配置修改。

文件与权限

1
2
3
4
cd /home
touch quota.user
touch quota.group
chmod 600 quota.user quota.group

修改/etc/fstab

把文件内容中的/dev/sdb1修改为挂载到/home下并且在后面加上quota.user,quota.group.具体内容如下

1
/dev/sdb /home ext3 defaults,usrquota,grpquota 1 2

重启电脑

使用`inin 6’和’reboot‘均可以重启电脑。然后以root身份登录系统

生成配额文件

1
2
3
setenforce 0
quotacheck -ugcv /dev/sdb1 //生成配额文件
edquota -u wang //为用户配置

在这里-u表示为用户配置,若想为组配置的话参数改为-g即可。

在这里限制用户的使用空间为5MB,最大不可超过10MB,文件总数为2000个,最多不能超过2500个。切换到wang用户,经过测试发现配额成功。

其余用户配置

可以使用edquota -p wang -u user1 user2 user3 user4复制wang用户的配置至user1 user2 user3 user4用户。经过测试同样可以发现空间限制是和wang用户一样的。

quota -u usrname可以用来查看某个用户当前的磁盘使用情况

repquota -a显示所有用户当前磁盘使用情况。

任务四

RAID 5卷的配置与应用

RAID全称Redundant Arrays of Independent Drives,即磁盘冗余阵列。RAID可分为RAID和硬RAID,软RAID是通过软件实现多块硬盘冗余,而硬RAID一般是通过RAID卡来实现RAID。软RAID配置简单,管理也比较灵活,对于中小企业来说是最佳选择。硬RAID往往比较贵,但是性能上有十分大的优势。

RAID种类与释义对照表
种类 释义
RAID 0 存取速度最快,没有容错功能(带区卷)
RAID 1 完全容错,成本高,硬盘使用率低(镜像卷)
RAID 3 写入性能好,没有多任务功能
RAID 4 具备多任务及容错功能,但是奇偶校验磁盘驱动器会造成性能瓶颈
RAID5 具备多任务及容错功能,写入时有额外开销
RAID 0+1 速度快,完全容错,成本高

磁盘分区

使用fdisk /dev/sdc命令给磁盘分区,n代表新建分区,p代表主分区,t表示转换磁盘分区格式,fd表示转换为RAID卷格式。

创建RAID卷

1
mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd[b-f]
mdadm命令参数对照表
参数 释义
–create 创建RAID
–auto=/yes /dev/md0 新建立的软件磁盘陈列设备为md0,md序列号可以为0~9
–level=5 磁盘阵列的等级,这里是RAID5
–raid-devices 添加作为预备磁盘的块数
/dev/sd[b-f] 磁盘阵列所用的设备,还可以写成“/dev/sdb /dev/sdd /dev/sde /dev/sdf”

上述命令还可缩写为mdadm -C /dev/md0 -l5 -n4 -x1 /dev/sd[b-f]

查看RAID卷

查看RAID是否创建成功,是否运行正常,有两种方法。

(1)查看详细信息,使用mdadm --detial /dev/md0来查看raid的详细信息

(2)查看简单信息,使用cat /proc/mdstat命令可以较为简单的查看到RAID运行的情况

格式化并且挂载和使用创建的RAID

使用如下命令格式化并且挂载和使用创建的RAID

1
2
3
4
mkfs.ext3 /dev/md0 //格式化为ext3
mkdir /mnt/raid5 //创建挂载文件夹
mount /dev/md0/ /mnt/raid5 //挂载
df -Th

开机启动RAID

1
2
mdadm --detail --scan> /etc/mdadm.conf 
vim /etc/mdadm.conf

mdadm.conf文件默认是不存在的,需要自己手动创建,其主要作用是系统启动时能够自动加载软RAID,同时方便自己日后管理。创建完成后删除文件中spares=1

备注:mdadm.conf文件主要由devices和array组成。devices选项指定组成raid的所有设备,array选项指定阵列的设备名、raid级别、阵列中活动设备的数目以及设备的UUID号。

设置开机自动挂载

修改/etc下的fstab文件在最后加上如下内容

1
/dev/md0	/mnt/raid5		ext3   detaults 0 0

验证sapre磁盘的功能

在raid中一块磁盘损坏后,设置的spare盘会立即替换坏掉的磁盘进行raid的重建,以保障数据的安全性。

1
2
3
mdadm --manage /dev/md0 --fail /dev/sdd //设置出错状态
mdadm --detial /dev/md0
cat /proc/mdstat

最终结果如下图所示

现在磁盘sdd显示为损坏的,开始设置的预备盘已经激活对其进行替换。下面查看raid5是否可用,向里面写入数据发现可以正常写入。后续步骤移除出错的磁盘,加入一块新的磁盘做备用的spare磁盘。

1
2
3
mdadm --manage /dev/md0 --remove /dev/sdd
mdadm -manage /dev/md0 --add /dev/sdd
mdadm --detail /dev/md0

关闭RAID

注释掉刚刚在/dev/fstab中做的配置,使用umount /dev/md0解除挂载。

扫码加我微信