你好! 这是我第一次使用 微博 。希望大家一起进步。
在这里简单总结下,磁盘配额、raid以及逻辑卷管理器。具体的还是要请大家去查查书《鸟哥的Linux私房菜》,哈哈
当硬盘有多个用户写入磁盘时,如果无节制写入的话,一旦,一个用户不断写入的话,会将空间占满,其他用户无法写入。因此,限制用户写入大小,这里称为配额。
假定,我们设置的1G和800Mb,当我们达到800Mb,时系统会给我们一个警告,我们称为软限制。达到1G时,我们无法写入,我们称为硬限制。
默认情况下,默认每个用户无磁盘配额。
首先,划分一个分区出来。
放图
利用fdisk命令具体的,在之前的章节中会有,自行查阅:
接下来,别忘了更新数据表
partprobe /dev/sda
然后格式化下
mkfs.ext3 /dev/sda3
mount -o usrquota,grpquota /dev/sda3 /xx
mount | grep xx
此时,就支持磁盘配额了,默认情况,是没有磁盘配额的
为了记录信息,要创建对应的数据库
下面开始创建,这里是用户磁盘配额:
quotacheck -cu /dev/sda3
quotaon -u /dev/sda3
如果想创建组的话,u变为g,创建两个的话,u变为ug。下面依此类推,(如:edquota)
如果关闭的话,为
quotaoff -u /dev/sda3
假定对tom(用户),做磁盘配额
edquota -u tom
补充:edquota -p smith tom (将tom(!!已经创建!!)的配置赋给smith)
补充:edquota -t(对所有用户进行,时间进行设置)
edquota -t tom -T(对tom用户进行,时间进行设置)
从左到右:
blocks:文件大小
soft:软限制(单位为K)
hard:硬限制(单位为K)
inodes:实时记录文件个数
soft:软限制(单位为个)
hard:硬限制(单位为个)
前面为文件大小的配额,后面为文件个数的配额。
终于,开始测试了!!!
首先,加上写权限(在root下),chomd o+w /xx
然后,进入到/xx下,切换到tom用户下。su - tom
我们首先写入99M的文件没有警告,后面再写入1M时,系统立马给出警告
[当达到满配额时,会一点都无法写入:
此时,切换到root下,
从左到右:
blocks:文件写入情况、
quota:软配额
limit:硬配额
files:文件个数
其他查看方式:repquota -a
警告设置:warnquota(系统对tom用户及root,发送邮件,进行配额提醒,默认情况不会发)
发送格式更改:vim /etc/warnquota.conf
对磁盘数据进行备份。
RAID0:至少2个磁盘,记为A与B。
写数据时,数据1写入A,数据2写入B,数据3写入A,提高读取与写入速率。
缺点:如果2个磁盘有一个损坏,数据全部丢失,无备份功能。
RAID1:至少2个磁盘,记为A与B。
写数据时,数据同时写入A与B,有备份功能。
缺点:没有提高效率,并且磁盘利用率只有1/2
目前常用为RAID0+RAID1或RAID1+RAID0。
以RAID0+RAID1进行介绍:将4个硬盘,两两分为A、B两组,4个硬盘记为A1,A2,B1,B2。
写数据时,先对A与B写入,采用RAID0。
但是,在A与B组内写入时,对A1与A2,或B1与B2采用RAID1写入方式。
补充:RAID5:至少3个磁盘,记为A、B、C。
写数据时,数据1,数据2,分别进入A与B,然后进行一次校验和,存入C。接下来数据3,数据4,分别存入B与C,然后进行一次校验和,存入A。依此类推。提高写入速度,也提高了读取速度,也具有备份功能
缺点:磁盘利用率为N-1/N。
hardware RAID:主板上有一个RAID卡,自带CPU与内存,做hardware RAID用的是RAID卡的资源
software RAID:用的是电脑的资源。
两者工作原理,其实是一样的。是不是感觉之前被骗了?以为多高大上
下面我们用的是软RAID,其实我们要用硬盘来做,在此,我们只有一个硬盘,因此,采用分区来做,只是做实验。!!实际中用分区做,没用处!!
划分分区(上面有介绍,就不罗嗦了),划出/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8
要改下System格式,改为选项fb,如图
记得用w保存啊!
然后更新(partprobe /dev/sda)
查看命令:cat /proc/mdstat
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sda{5,6,7,8}
-C:创建
-a:是否用标准命名方式
-l:RAID级别(0,1,5)
-n:使用磁盘数目
-x:备份磁盘数目(一旦-n的设备有一个损坏,-x立马生效)
格式化他:mkfs.ext3 /dev/md0
使用(挂载)它:
mkdir /yy
mount /dev/md0 /yy
查看信息
再次查看:cat /proc/mdstat
属性信息查看:mdadm -D /dev/md0(或者mdadm --detail /dev/md0)
RAID级别信息查看:mdadm -E /dev/sda5
动态查询:watch -n .5 'cat /proc/mdstat'(每隔0.5s执行一次)
开始测试:
先复制进来一些文件
cp /etc/services /yy
模拟sda5坏了(5,6,7用来存储,8是备用,用来备份)
mdadm /dev/md0 -f /dev/sda5
恢复中
恢复结束(查看mdadm -D /dev/md0
),然后删掉坏的mdadm /dev/md0 -r /dev/sda5
内部数据没有损坏(ls /yy
和cat /yy/services
)
关闭RAID:
首先卸载挂载点:umount /yy
再进行:mdadm -S /dev/md0
成功?(查看命令):cat /proc/mdstat
再次启用(已经创建):
mdadm -A /dev/md0 /dev/sda{5,6,7,8}
添加磁盘
mdadm /dev/md0 -a /dev/sda5
总结:RAID5只能能坏1块,6是可以坏2块,在这里不再啰嗦,可以自行查看。
自动挂载这里,在之前章节提到(待补充),修改/etc/fstab文件
这里补充一个:修改/etc/rc.d/rc.local文件
将mount命令添加进rc.local文件是另一种实现开机自动挂载的方式
mount /your_name_RAID /your_name_file
保存文件。设置完成。重启系统进行检查。
传统物理分区:
在没有可分配空间时,要扩展某一分区,必须要格式化2个盘,难以动态增加或减小,每个分区大小难以互相“借”。这是由于划分分区的分割点是死的。
LVM:
先将普通的传统分区进行初始化,变为PV(物理卷),然后,可以将物理卷(PV)组成一个整体(VG),叫做卷组,然后划分出,逻辑卷(LV)。以上的概念是计算机模拟出的,实际不存在。
PE 指的是 Process Element, 就是逻辑核心(logic core),一个逻辑核心上可以跑一个线程。这个概念引出是由于现在有很多双线程的处理器(double-thread core),可以一个核心运行两个完全不同的任务/线程, 一个当两个用,所以不能单单当成一个核了,就说一个核有两个PE。
(下面提到了PE,往下看)
划分分区
划分分区(上面有介绍,就不罗嗦了),划出/dev/sda9,/dev/sda10,/dev/sda11,/dev/sda12
要改下System格式,改为选项8e(不改也没关系,推荐修改),如图
从上面介绍可知,分为以下几个工作;
检测命令:pvscan
创建命令:pvcreate /dev/sda{9,10,11,12}
组成vg0(卷组)
一个卷组,组成单位为PE,大小为4M
检测命令:vgscan
创建命令:vgcreate vg0 /dev/sda{9,10,11}
补充:vgcreate -s 8 vg0 /dev/sda{9,10,11}
这里的-s指明,PE大小
tip(其他操作):
重命名为smith:vgrename vg0 smith
查看所有vg及其属性信息:vgdisplay
查看某个vg及其属性信息(例如:vg0):vgdisplay vg0
添加某个硬盘:vgextend vg0 /dev/sdc
删除某个硬盘:vgreduce vg0 /dev/sdc(例如:vgreduce vg0 /dev/sda12)
在这里,没有硬盘,添加个分区吧(模拟要用)
vgextend vg0 /dev/sda12
检测命令:lvscan
创建命令:lvcreate -n lv0 -L 100M vg0
含义:在vg0中创建一个大小为100M的LV,名字是lv0
lvcreate :
-n:指出LV名字
-L:指出大小
用另外一个形式创建:lvcreate -n lv1 -l 25 vg0
lvcreate :
-l:指出大小,默认单位为M,(小写L)
创建(有个要点):lvcreate -n lv2 -L 103M vg0
就这样:
!!为啥这里是104,而不是103??!!
!!PE是4M,那么,创建的大小必须是PE的整数倍!!
删除命令(有询问):lvremove /dev/vg0/lv2
删除命令(强制删除):lvremove -f /dev/vg0/lv1
格式化:mkfs.ext3 /dev/vg0/lv0
创建文件夹:mkdir /lv
挂载:mount /dev/vg0/lv0 /lv/
扩大lv0:lvextend -L +100M /dev/vg0/lv0
调整命令:resize2fs /dev/vg0/lv0
查看命令:df -h
!!极力不推荐,容易机器崩溃!!
!!严格如此执行,4个命令!!
卸载挂载点:umount -lv
检查磁盘:fsck -f /dev/vg0/lv0
调整命令:resize2fs /dev/vg0/lv0 64M(!!减小到64M!! )
减小命令:lvreduce -L -136M /dev/vg0/lv0 (!!减少了136 M,本来200M,减少136M,剩余64M!!)
看一下
挂载:mount /dev/vg0/lv0 /lv/
查看文件命令:df -h
查看LV命令:lvscan
相当于VM(VMware)中的克隆。
lv0快照出lv1,当lv1使用出乱,删掉lv1,再快照一份
测试开始
touch /lv/smith
ls /lv/
lv中有smith与services,2个文件夹
创建快照(!!千万不要格式化!!)
lvcreate -n lvs -L 32M -s /dev/vg0/lv0
-n:指出快照的名字
-L: 快照的大小,理论为原文件的1/4就行,这里用1/2
-s:指出是快照
配置它
mkdir /aa
mount /dev/vg0/lvs /aa/
差异检测命令:diff /aa /lv
使用下(工作中,我不小心删错了)
rm -rf *
重新弄一个(不要格式化!!!)
卸载挂载点:umount /aa
删掉快照:lvremove -f /dev/vg0/lvs
再弄一个:lvcreate -n lvs -L 32M -s /dev/vg0/lv0
挂载上去:mount /dev/vg0/lvs /aa/
快速操作提示:写个脚本
有执行过程输出
#!/bin/bash
umount /aa
lvremove -f /dev/vg0/lvs
lvcreate -n lvs -L 32M -s /dev/vg0/lv0
mount /dev/vg0/lvs /aa/
无执行情况的输出
#!/bin/bash
umount /aa
( lvremove -f /dev/vg0/lvs ) &> /dev/null
( lvcreate -n lvs -L 32M -s /dev/vg0/lv0 ) &> /dev/null
mount /dev/vg0/lvs /aa/
创建时候,从上往下创建。删除则相反
1.卸载掉他
umount /lv
umount /aa
2.删除LV
lvremove -f /dev/vg0/lvs
lvremove -f /dev/vg0/lv0
3.删除VG
vgremove vg0
4.删除PV
pvremove /dev/sda{9,10,11,12}