Open jinhucheung opened 8 years ago
在Linux系统中,多用户多任务的环境会经常抢占资源,quota则是制定用户/用户组,对硬盘资源的进行配额 , 妥善分配资源。
下面以/home的文件系统为例
# 查看/home是否启用quota
# mount | grep home
/dev/mapper/vg1-lv1 on /home type ext4 (rw) # 没有
# 启用 quota (用户限制与用户组限制)
# mount -o remount,usrquota,grpquota /home
/dev/mapper/vg1-lv1 on /home type ext4 (rw,usrquota,grpquota)
# 如果要开机就启用quota
# 可以修改/etc/fstab文件系统的选项
quota日志文件除了进行日志记录时,也是对用户/用户组的额度进行配置
使用quotacheck
: 扫描文件系统并新建quota日志文件(aquota.user aquota.group)
命令格式 : quotacheck -vug /mount_point
: v
:显示进度 u
:新建用户日志 g
:新建用户组日志
启动quota:quotaon /mount_point 停止quota:quotaoff /mount_point
限制值设置:edquota与setquota
# 以限制用户额度为例
# edquota -u user1 [-g groupname] #其会打开一个关于此用户限值设置的文档
FileSystem Blocks soft hard Inodes soft hard
/dev/sda9 80 0 0 10 0 0
FileSystem:针对的文件系统
Blocks:磁盘容量,单位KB
soft:blocks的soft 单位KB,0表示不限制
hard:block的hard
inodes: Inode数量,单位个数
soft:Inode的soft
hard: Inode的hard
我们通常只会设置block的soft与hard
setquota可以帮助我们在shell script中设置quota
其格式为:setquota [-u name][-g name] blockSoft blockHard inodeSoft inodeHard /mount_point
设置宽限时间
edquota -t
针对用户/用户组的报表 : quota [-u|-g]vs name 针对文件系统的报表: repquota -augvs
发送警告信息:warnquota(当有用户超过soft时,才会成功送出两份mail,分别给root与该用户),如果要明天定时执行warnquota,可以在/etc/cron.daily/warnquota中写入warnquota命令的绝对路径
磁盘阵列(RAID),即容错廉价磁盘阵列,其有多个较小的磁盘整合成一个较大的磁盘。其不只具有存储功能,还有数据保护和性能优化等功能。 特别是用相同型号等大小的磁盘组成时性能最优,以下是其整合模式。
数据依次放到各个磁盘中,由于磁盘是交错放置数据的,所以数据会被等量分到各个磁盘中。此中模式性能最优,但是没有对数据毁坏的处理。
一份数据会存放在RAID中存放两次。所以RAID-1的容量只是组成磁盘总容量的一半(或者更小)。优点是完整备份数据,性能较差。
磁盘先组成RAID0或1,再去组成RAID1或0,这种模式优化了性能,又备份了数据。但是组成的硬盘较多,容量也只有这些硬盘的一半。
RAID-5:至少需要3个硬盘以上。数据以RAID-0方式依次循环写硬盘中,但是一个循环过程会在某个硬盘写入一同步检查码(其可以恢复此轮循环中写入其他盘的数据),由于检查码会用掉一个硬盘,所以RAID-5的总量等于硬盘-1的容量。
组成RAID时,会多准备出几个空盘,当RAID中某盘坏掉时,系统会抽出坏盘,抽入一个预备盘。
软磁盘阵列,相对与硬磁盘阵列,是用软件来模拟出RAID的功能,但实际上盘是不会改变的,坏盘了还是GG.
使用如下的命令
# 创建一个名为md0的RAID,RAID模式5,用sda8,9,10构成RAID,用sda11,12构成预备盘
mdadm --create --auto=yes /dev/md0 --raid-devices=3 --level=5 --spare-devices=2 /dev/sda{8,9,10,11,12}
# 查看md0情况
mdadm --detail /dev/md0
使用如下命令对raid进行管理
mdadm --manage /dev/md0 [--add 设备名] [--remove 设备名] [--fail 设备名]
# 其中fail是设置raid中的设备出错
# 首先查出raid设备的uuid
mdadm --detail /dev/md0
# 设置mdadm的映射关系
在/etc/mdadm.conf中添加`ARRAY /dev/md0 UUID=值
# 设置etc/fstab
首先先停止RAID的挂载,再执行mdadm --stop
,最后可能会要修改回/etc/mdadm.conf
LVM可以弹性调整文件系统的容量,其可以整合多个物理分区成为一个逻辑分区,当然也可以从逻辑分区中删除物理分区。
其作法是:将几个物理分区(PV)组合成一个分区组(VG),在从VG中划分从逻辑区(LV)供文件系统挂载。 LVM中的最小单位是物理扩展块(PE),有点类似blocks,PE是PV的最小单位,其可以指定大小(需2的倍数),我们可以通过LV中PE的数量来调整LV的大小。
PE/VG/LV关系图如下 这图可以将每两组看作一个PV,更好理解LVM各单位的关系
LVM实现过程如下图:
pvcreate /dev/sda{6,7,8,9} #pv名同设备名
vgcreate -s PE大小 VG名 PV名
vgextend VG名 PV名
vgchange -a n vg名
vgcreate -s 4M vg1 /dev/sda{6,7,8} #构成出的vg1设备名是/dev/vg1
vgextend vg1 /dev/sda9
lvcreate -l num -n lv名 vg名
lvcreate -l 365 -n lv1 /dev/vg1 # 构建成的lv 设备名是/dev/vg1/lv1
最后就可以直接格式话化lv,并进行挂载
其过程可以在线完成(即vg活动时),一般步骤如下:
resize2fs 设备 [size]
以下将sda10加入到vg,以扩展lv# 创建pv
pvcreate /dev/sda10
# 向vg添加pv
vgextend vg1 /dev/sda10
# 放大lv容量
lvresize -l +179 /dev/vg1/lv1
# 修改文件系统容量
resize2fs /dev/vg1/lv1
缩小lv容量不能在vg活动时进入,具体过程就是放大lv容量的逆过程(注意:一定要先resize2fs,不然可能文件系统损坏) 以下将/dev/sda10移出vg1
# 系统要求在resize2fs时先进行磁盘检查
e2fsck -f /dev/vg1/lv1
# 修改文件系统size,以减去/dev/sda10的大小
resize2fs /dev/vg1/lv1 6900M
# 失活vg1
vgchange -a n vg1 (-a y 是激活)
# lv缩小容量
lvresize -l -179 /dev/vg1/lv1
# vg1移出/dev/sda10
vgreduce vg1 /dev/sda10
# /dev/sda10删除pv属性
pvremove /dev/sda10
# 激活vg1
vgchange -a y vg1
LVM的快照区会保存建立快照时的文件系统中的数据,当然这个快照区有一定的最值,当系统变化太多时,快照区就会饱满,通过我们建立快照区来备份某个时刻的数据,以恢复文件系统(比如,教学环境中,老师会将系统建立快照区,再将挂载快照区的文件系统供学生使用.这样并不会影响到原文件系统)
建立快照区的命令
# 建立了lv1的100M快照区
lvcreate -L 100M -s -n lv1ss /dev/vg1/lv1
# 之后我们可以挂载这个快照区
mount /dev/vg1/lv1ss /mnt/tmp
# 再备份数据出来待恢复使用
tar -jcv -f /mnt/backup/lv1.backup /mnt/tmp
# 注意不能直接从快照区复制数据到原区,原区数据会覆盖删去后都转到快照区的
LVM相关命令汇总如下图:
LVM的关闭步骤如下:
Index