七、磁盘配额与磁盘阵列
7.1 Quota的使用
使用方向:
(1)限制某一群组的最大磁盘配额
(2)限制某一用户的最大磁盘配额
使用限制:
(1)仅能针对整个文件系统(即整个分区)。(系统文件是包括在一个磁盘(包括光盘、软盘、闪盘以及其它存储设备)或分区的目录结构;一个可用的磁盘设备可以包括一个或多个文件系统)
(2)Linux核心必须支持quota。
(3)对于普通用户才有效,对root无效。
使用方式:
(1)容量限制或文件数量限制
前者通过限制block用量实现,后者通过限制inode用量实现。
(2)软限制和硬限制
软限制表示低于软限制限值时,可以正常使用磁盘,但若超过软限制限制而低于硬限制限值,则每次用户登录系统都会收到磁盘即将爆满的警告,但会被给予一个宽限时间。如在该宽限时间内磁盘未降回软限制限值,则系统会锁住用户的磁盘使用权,而无法新增文件。
硬限制表示用户用量超过该限值,则系统会锁住用户的磁盘使用权。
7.2 Quota基本指令
quota -- 显示指定群组或使用者的quota限值。
语法: quota [-guvs] [user,group]
选项:
-g 显示群组
-u 显示用户
-v 显示quota的值
-s 选择inode或硬盘空间来显示
示例:
# quota -guvs -- 显示当前用户的quota值
# quota -uvs myuser --显示用户myuser的quota值
quotacheck -- 扫瞄某一个磁盘的 quota 空间。
quotacheck [-auvg] /filepath
选项:
-a 扫瞄所有在 /etc/mtab 里头已经 mount 的具有 quota 支持的磁盘
-u 扫瞄使用者的档案与目录
-v 显示扫瞄过程
-g 扫瞄群组使用的档案与目录
-m 强制进行 quotacheck
示例:
# quotacheck -uvg /home <==开始扫瞄 /home 这一个独立扇区的目录
quotacheck: Scanning /dev/hda3 [/home] done <==显示 /home 扇区为 /dev/hda3 !
quotacheck: Checked 35 directories and 342 files <==扫瞄完毕,有 35 目录与 342 档案。
[root@test root ]# ls -l /home <==查看一下 /home 这个目录底下,两个档案产生了!
-rw------- 1 root root 7168 May 6 18:37 aquota.group
-rw------- 1 root root 7168 May 6 18:37 aquota.user
说明:
本指令主要的目的在扫瞄某一个磁盘的 quota 空间,它会针对该磁盘进行扫瞄,并且,由于该磁盘若持续运作时,可能扫瞄的过程中,档案可能会增减,造成 quota 扫瞄的错误发生,因此,当使用 quotacheck 时,该磁盘将自动被设定成为只读扇区(read-only)。
扫瞄完毕之后,扫瞄所得的磁盘空间结果会写入该扇区最顶端(例如:扫瞄 /home 这个 /dev/hda3 的扇区,如果是初次扫瞄,那么扫瞄完毕之后会产生 aquota.user 与 aquota.group ,会放置在 /home/aquota.xxx 底下!而如果是建立 quota 后的扫瞄,那么就会更新这两个档案!)。
另外, Linux 也特别强调 quota 在使用的时候,需要特别注意在 reboot 时,得先将 quota 关闭才好!
edquota -- 编辑quota值
语法:edquota [-u user] [-g group] [-t]
选项:
-u 编辑 user 的 quota
-g 编辑 group 的 quota
-t 编辑宽限时间(就是超过 quota 值后,还能使用硬盘的宽限期限)
-p copy模板(以建立好的使用者或群组)到另一个使用者(或群组)
示例:
(1)设置用户test的quota值
# edquota -u test <==设定test这个使用者的 quota 数值,会直接进入vi界面。
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 8 0 0 5 0 0
修改一下成为:
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 8 50005000 5 50005000
(2)复制quota资料
# edquota -p test -u test2 <==将 test 这个人的 quota 资料复制给 test2 这个人!
(3)设置宽限时间
# edquota -t <==设定宽限时间,也就是超过 quota 值之后的修正时间啦!
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/hda3 0minutes 0minutes
setquota -- 直接用指令输入限值来设置quota值
语法: setquota [-u|-g] 账号 block(soft) block(hard) inode(soft) inode(hard) 文件系统
选项:
block(soft) 容量的软限制
block(hard) 容量的硬限制
inode(soft) 文件数量的软限制
inode(hard) 文件数量的硬限制
示例:
# setquota -u myuser 100000 200000 0 0 /home
quotaon -- 启动quota
语法: quotaon [-a] [-uvg directory]
选项:
-a 全部的 quota 设定都启动(会自动去寻找 /etc/mtab 的设定)
-u 使用者的 quota 启动
-g 群组的 quota 设定启动
-s 显示讯息
范例:
# quotaon -a <==全部的 quota 限制都启动
# quotaon -uv /home <==只有激活 /home 底下的使用者quota限额,group不激活!
quotaoff -- 关闭quota
语法:quotaoff -a
选项:
-a 全部的 quota 设定都关闭(会自动去寻找 /etc/mtab 的设定)。
warnquota -- 对超额的用户发出警告信
语法:warnquota。
7.3 Quota配置步骤:
(1)开启磁盘的quota功能:编辑/etc/fstab,使主要要开放的quota磁盘支持quota。
(2)预扫描磁盘使用情况:使用quotacheck扫描磁盘。
(3)建立quota:使用edquota编辑各用户或群组的可使用空间。
(4)启动quota:使用quotaon启动quota。
7.4 磁盘阵列
磁盘阵列的级别:
RAID-0 (等量模式),资料会被切割后依序放到各个磁盘中,可以减轻各个硬盘的负担,但同时存在一毁俱毁的风险。
RAID-1 (映像模式),资料会分别写入2个磁盘,2个磁盘中的数据一摸一样。写入性能不好,但读取性能还行。
RAID-5 (性能与数据安全的均衡考虑),需要3颗以上的磁盘,写入有点类似RAID-0,但在写入过程中,每个磁盘还会加入一个同位检查码(Parity),该数据会记录其他磁盘的备份数据。当任一个磁盘损毁时都会通过其他磁盘的同位检查码来重建原本磁盘内的数据。RAID5的磁盘总量会是整体磁盘数量减一颗。
Spare Disk (预备磁盘):预备磁盘就是一颗或多颗没有包含在原本磁盘阵列等级中的磁盘,该磁盘平时并不会被磁盘阵列所使用,当磁盘阵列有任何磁盘损毁时,这颗预备磁盘会被主动地拉近磁盘阵列中,并将坏掉的那颗磁盘移除磁盘阵列。
7.5 软件磁盘阵列 -- mdadm
软件磁盘阵列以磁盘分区作为软件磁盘阵列的组成单元,我们可以把多个分区(包括同一个磁盘的不同分区)组成软件磁盘阵列的设备。
创建软件磁盘阵列 -- mdadm指令
语法:mdadm --create --auto=yes /dev/md[0-9] --raid-devices=N --level=[015] --spare-devices=N /dev/sdx /dev/hdx...
选项:
--create 建立RAID
--auto=yes 决定建立后接的软件磁盘阵列装置,也就是/dev/md0,/dev/md1,……,/dev/md9
--raid-devices=N 使用N个磁盘作为磁盘阵列的装置
--spare-devices=N 使用N个磁盘作为备用装置
--level=[015] 设定磁盘阵列的等级,RAID-0、RAID-1还是RAID-5
--detail 查看后接的磁盘阵列装置的详细信息
示例:
#mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/hda6 /dev/hda7 /dev/hda8 /dev/hda9 /dev/hda10
查看软件磁盘阵列情况: # cat /proc/mdstat
移除出错的磁盘插入新的磁盘: # mdadm --manage /dev/md0 --add /dev/hda11 --remove /dev/hda8
7.1 Quota的使用
使用方向:
(1)限制某一群组的最大磁盘配额
(2)限制某一用户的最大磁盘配额
使用限制:
(1)仅能针对整个文件系统(即整个分区)。(系统文件是包括在一个磁盘(包括光盘、软盘、闪盘以及其它存储设备)或分区的目录结构;一个可用的磁盘设备可以包括一个或多个文件系统)
(2)Linux核心必须支持quota。
(3)对于普通用户才有效,对root无效。
使用方式:
(1)容量限制或文件数量限制
前者通过限制block用量实现,后者通过限制inode用量实现。
(2)软限制和硬限制
软限制表示低于软限制限值时,可以正常使用磁盘,但若超过软限制限制而低于硬限制限值,则每次用户登录系统都会收到磁盘即将爆满的警告,但会被给予一个宽限时间。如在该宽限时间内磁盘未降回软限制限值,则系统会锁住用户的磁盘使用权,而无法新增文件。
硬限制表示用户用量超过该限值,则系统会锁住用户的磁盘使用权。
7.2 Quota基本指令
quota -- 显示指定群组或使用者的quota限值。
语法: quota [-guvs] [user,group]
选项:
-g 显示群组
-u 显示用户
-v 显示quota的值
-s 选择inode或硬盘空间来显示
示例:
# quota -guvs -- 显示当前用户的quota值
# quota -uvs myuser --显示用户myuser的quota值
quotacheck -- 扫瞄某一个磁盘的 quota 空间。
quotacheck [-auvg] /filepath
选项:
-a 扫瞄所有在 /etc/mtab 里头已经 mount 的具有 quota 支持的磁盘
-u 扫瞄使用者的档案与目录
-v 显示扫瞄过程
-g 扫瞄群组使用的档案与目录
-m 强制进行 quotacheck
示例:
# quotacheck -uvg /home <==开始扫瞄 /home 这一个独立扇区的目录
quotacheck: Scanning /dev/hda3 [/home] done <==显示 /home 扇区为 /dev/hda3 !
quotacheck: Checked 35 directories and 342 files <==扫瞄完毕,有 35 目录与 342 档案。
[root@test root ]# ls -l /home <==查看一下 /home 这个目录底下,两个档案产生了!
-rw------- 1 root root 7168 May 6 18:37 aquota.group
-rw------- 1 root root 7168 May 6 18:37 aquota.user
说明:
本指令主要的目的在扫瞄某一个磁盘的 quota 空间,它会针对该磁盘进行扫瞄,并且,由于该磁盘若持续运作时,可能扫瞄的过程中,档案可能会增减,造成 quota 扫瞄的错误发生,因此,当使用 quotacheck 时,该磁盘将自动被设定成为只读扇区(read-only)。
扫瞄完毕之后,扫瞄所得的磁盘空间结果会写入该扇区最顶端(例如:扫瞄 /home 这个 /dev/hda3 的扇区,如果是初次扫瞄,那么扫瞄完毕之后会产生 aquota.user 与 aquota.group ,会放置在 /home/aquota.xxx 底下!而如果是建立 quota 后的扫瞄,那么就会更新这两个档案!)。
另外, Linux 也特别强调 quota 在使用的时候,需要特别注意在 reboot 时,得先将 quota 关闭才好!
edquota -- 编辑quota值
语法:edquota [-u user] [-g group] [-t]
选项:
-u 编辑 user 的 quota
-g 编辑 group 的 quota
-t 编辑宽限时间(就是超过 quota 值后,还能使用硬盘的宽限期限)
-p copy模板(以建立好的使用者或群组)到另一个使用者(或群组)
示例:
(1)设置用户test的quota值
# edquota -u test <==设定test这个使用者的 quota 数值,会直接进入vi界面。
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 8 0 0 5 0 0
修改一下成为:
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 8 50005000 5 50005000
(2)复制quota资料
# edquota -p test -u test2 <==将 test 这个人的 quota 资料复制给 test2 这个人!
(3)设置宽限时间
# edquota -t <==设定宽限时间,也就是超过 quota 值之后的修正时间啦!
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/hda3 0minutes 0minutes
setquota -- 直接用指令输入限值来设置quota值
语法: setquota [-u|-g] 账号 block(soft) block(hard) inode(soft) inode(hard) 文件系统
选项:
block(soft) 容量的软限制
block(hard) 容量的硬限制
inode(soft) 文件数量的软限制
inode(hard) 文件数量的硬限制
示例:
# setquota -u myuser 100000 200000 0 0 /home
quotaon -- 启动quota
语法: quotaon [-a] [-uvg directory]
选项:
-a 全部的 quota 设定都启动(会自动去寻找 /etc/mtab 的设定)
-u 使用者的 quota 启动
-g 群组的 quota 设定启动
-s 显示讯息
范例:
# quotaon -a <==全部的 quota 限制都启动
# quotaon -uv /home <==只有激活 /home 底下的使用者quota限额,group不激活!
quotaoff -- 关闭quota
语法:quotaoff -a
选项:
-a 全部的 quota 设定都关闭(会自动去寻找 /etc/mtab 的设定)。
warnquota -- 对超额的用户发出警告信
语法:warnquota。
7.3 Quota配置步骤:
(1)开启磁盘的quota功能:编辑/etc/fstab,使主要要开放的quota磁盘支持quota。
(2)预扫描磁盘使用情况:使用quotacheck扫描磁盘。
(3)建立quota:使用edquota编辑各用户或群组的可使用空间。
(4)启动quota:使用quotaon启动quota。
7.4 磁盘阵列
磁盘阵列的级别:
RAID-0 (等量模式),资料会被切割后依序放到各个磁盘中,可以减轻各个硬盘的负担,但同时存在一毁俱毁的风险。
RAID-1 (映像模式),资料会分别写入2个磁盘,2个磁盘中的数据一摸一样。写入性能不好,但读取性能还行。
RAID-5 (性能与数据安全的均衡考虑),需要3颗以上的磁盘,写入有点类似RAID-0,但在写入过程中,每个磁盘还会加入一个同位检查码(Parity),该数据会记录其他磁盘的备份数据。当任一个磁盘损毁时都会通过其他磁盘的同位检查码来重建原本磁盘内的数据。RAID5的磁盘总量会是整体磁盘数量减一颗。
Spare Disk (预备磁盘):预备磁盘就是一颗或多颗没有包含在原本磁盘阵列等级中的磁盘,该磁盘平时并不会被磁盘阵列所使用,当磁盘阵列有任何磁盘损毁时,这颗预备磁盘会被主动地拉近磁盘阵列中,并将坏掉的那颗磁盘移除磁盘阵列。
7.5 软件磁盘阵列 -- mdadm
软件磁盘阵列以磁盘分区作为软件磁盘阵列的组成单元,我们可以把多个分区(包括同一个磁盘的不同分区)组成软件磁盘阵列的设备。
创建软件磁盘阵列 -- mdadm指令
语法:mdadm --create --auto=yes /dev/md[0-9] --raid-devices=N --level=[015] --spare-devices=N /dev/sdx /dev/hdx...
选项:
--create 建立RAID
--auto=yes 决定建立后接的软件磁盘阵列装置,也就是/dev/md0,/dev/md1,……,/dev/md9
--raid-devices=N 使用N个磁盘作为磁盘阵列的装置
--spare-devices=N 使用N个磁盘作为备用装置
--level=[015] 设定磁盘阵列的等级,RAID-0、RAID-1还是RAID-5
--detail 查看后接的磁盘阵列装置的详细信息
示例:
#mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/hda6 /dev/hda7 /dev/hda8 /dev/hda9 /dev/hda10
查看软件磁盘阵列情况: # cat /proc/mdstat
移除出错的磁盘插入新的磁盘: # mdadm --manage /dev/md0 --add /dev/hda11 --remove /dev/hda8