1 理论基础

1.1 概念

GlusterFS目录限额,允许你根据目录或卷配置限制磁盘空间的使用量

1.2 配额的分类

1.2.1 目录级别(Director level)

根据目录级别去限制空间使用量

1.2.2 卷级别(Volume level)

根据GlusterFS卷级别去限制空间使用量

1.3 关于路径的说明

1)Gluster的路径概念

如果你将卷挂载到某系统的/mnt目录

mount -t glusterfs GlusterH01.cmdschool.org:/gv0 /mnt

如上所示,被挂载的接口目录或被挂载目录视为Gluster磁盘的根,故Gluster根(“/”)是指:

GlusterH01.cmdschool.org:/gv0 #或挂载点(/mnt)

2)在多层次目录结构,严格的磁盘限制将被强制执行。

2 实践

2.1 环境配置

请参阅下文配置分布式存储的一种并创建Gluster卷gv0

http://cmdschool.blog.51cto.com/2420395/1828450

2.2 开启限额

1)命令表达式

gluster volume quota VolumeName enable

2)范例

In GlusterH01:

gluster volume quota gv0 enable

2.3 关闭限额

1)命令表达式

gluster volume quota VolumeName disable

2)范例

In GlusterH01 :

gluster volume quota gv0 disable

2.4 设置或替换磁盘限制

2.4.1 根据卷限制

1)命令表达式

gluster volume quota VolumeName limit-usage / size

2)范例

In GlusterH01:

gluster volume quota gv0 limit-usage / 10GB

2.4.2 根据目录限制

1)命令表达式

gluster volume quota VolumeName limit-usage DirectoryPath LimitSize

2)范例

gluster volume quota gv0 limit-usage /dir1 1GB

你可以在存储环境创建一个新的目录来配置磁盘限制或使用已存在的目录配置磁盘限制,以下演示对新建目录的限制:

In GlusterH01:

step1 挂载卷

mount -t glusterfs GlusterH01.cmdschool.org:/gv0 /mnt

step2 挂载目录下创建文件夹

mkdir /mnt/dir1

step3 卸载挂载

umount /mnt

step4 检查本机目录

ls /dir1

显示如下:

ls: cannot access /dir1: No such file or directory

step5 配置目录限制

gluster volume quota gv0 limit-usage /dir1 1GB

显示如下:

volume quota : success

注:故以上/dir1表示的是“GlusterH01.cmdschool.org:/gv0/dir1”而不是系统目录/dir1。

2.4.3 辅助挂载点

当第一次配置配额限制,通过以下命令可以查看Gluster卷的辅助挂载点:

 ls -l /var/run/gluster/gv0/

2.5 查看磁盘限制信息

2.5.1 查看全局磁盘限制信息

1)命令表达式

gluster volume quota  VolumeName list

2)范例

In GlusterH01:

gluster volume quota  gv0 list

2.5.1 查看目录的磁盘限制信息

1)命令表达式

gluster volume quota  VolumeName list DirectoryPath

2)范例

In GlusterH01:

gluster volume quota  gv0 list /dir1

2.6 配置df工具显示磁盘限制信息

2.6.1 开启df工具显示限额

1)命令表达式

gluster volume set VolumeName quota-deem-statfs on

2)范例

In GlusterH01:

gluster volume set gv0 quota-deem-statfs on

测试:

In GlusterH01 & GlusterGW:

df -hT

显示包含如下行:

localhost:gv0        fuse.glusterfs   10G   49M   10G   1% /var/run/gluster/gv0

2.6.2 关闭df工具显示限额

1)命令表达式

gluster volume set VolumeName features.quota-deem-statfs off

2)范例

In GlusterH01:

gluster volume set gv0 features.quota-deem-statfs off

测试:

In GlusterH01 & GlusterGW:

df -hT

显示包含如下行:

localhost:gv0        fuse.glusterfs  200G   82M  200G   1% /var/run/gluster/gv0

2.7 更新内存缓存大小

2.7.1 设置超时

基于性能考量,配额缓存在客户端的目录容量里,你可以配置超时缓存目录容量的最大有效时间,这个时间从目录被保护的那一刻算起。

如果多个客户端都往同一个目录写数据,可能有一种可能是,某些客户端会一直写入数据到目录直到超出配额限制。

但是,这种新的文件大小直到缓存由于超时而变得过时,客户端上都没有反应过来。

在此期间,即使超出目录的磁盘容量限制,客户端上依然允许写入数据,因为缓存大小和真实的大小是不同步的。

当出现超时,服务器会更新缓存大小,然后同步,才不会允许进一步的数据写入。

1)命令表达式

gluster volume set VolumeName features.quota-timeout time

注:时间为秒

2)范例

In GlusterH01:

gluster volume set gv0 features.quota-timeout 5

2.7.2 设置提醒时间

提醒时间是一个当你的使用信息达到软限制写入日志后的提醒频率

1)配置表达式

gluster volume quota VolumeName alert-time time

注:默认为一周

2)范例

In GlusterH01:

gluster volume quota gv0 alert-time 1d

2.8 删除磁盘限制

1)配置表达式

gluster volume quota VolumeName remove DirectoryPath

2)范例

In GlusterH01:

gluster volume quota gv0 remove /dir1

注:以上如有错漏之处烦请指正,谢谢!

----------------------------------------------------------

参阅文献:

http://gluster.readthedocs.io/en/latest/Administrator%20Guide/Directory%20Quota/

鸣谢:娇总的部分翻译