您的位置:首页 > 运维架构 > Linux

linux基础(十五)文件访问控制ACL和RAID

2011-05-18 23:03 666 查看
今天简单谈下linux的acl文件访问控制列表的认识和对常见RAID的介绍,LVM逻辑磁盘管理器的运用。
首先说下ACL:ACL是访问控制列表(Access
Control Lists)的缩写,ACL是标准Unix文件属性(r,w)的附加扩展。给予用户和管理员更好控制文件爱能读写和权限赋予的能力。我们在使用ACL功能时首先就要在挂载的时候加上其具有ACL控制的能力,可以使用mount –o acl Filename或者在格式文件时就让其就有其能力tune2fs –o acl Filename
我们编辑开机自动挂载文件系统的文件/etc/fstab例如/dev/sdb /data ext3 defaults,acl 0 0在默认一项后面追加acl选项。
文件扩展属性(隐藏属性)一般使用ls –l是不会显示出来的,查看文件扩展属性使用:lsattr,改变文件的隐藏属性:chattr 具体参数:
-A:禁止更改访问时间(这项可以用于优化系统时候,例如我们大量访问某些不重要的文件时系统就会花费很多资源去修改这些文件的访问时间,当这时我们增加禁止修改访问时间时就会节约系统资源)
-i:禁止修改文件(这样可以有效阻止我们的误操作)
d:禁止转储(就是不备份文件,这样避免不重要文件的备份)
S:是数据同步到硬盘,避免数据丢失
a:只可以修改数据,不能删除。
文件访问扩展列表:查看现有文件的扩展属性:getfacl
设置扩展属性:setfacl 参数:-m设置 -x取消某一用户的 -b:删除所有的控制列表
setfacl工具可为文件和目录ACL,命令格式如下:
setfacl -m <rules> <files>
rules的格式如下,多条规则间可用逗号分隔。
u:uid:perms #为用户设置ACL,perms为r、w、x的组合
g:gid:perms #为组设置ACL
o:perms
#为其它组设置ACL
m:perms
#设置有效权限屏蔽
下面是setfacl的实例:
debian:~# setfacl -m u:jims:rw
testfile.txt
#-m选项表示添加或修改文件或目录的权限访问列表
debian:~# setfacl -x u:jims:rw testfile.txt
#-x选项表示删除文件或目录的访问列表
要设置默认的ACL,只在rules前加一个d:,以表示指定一个目录,如:
debian:~# setfacl -m d:o:rx /data
注意:对目录的ACL控制是可以继承的
getfacl用以显示文件或目录的ACL,如:
debian:getfacl debian.xml
# file: debian.xml
# owner: jims
# group: jims
user::rwx
group::r--
other::r—
tune2fs是linux下面重要的文件系统调整工具,其中的几个选项解释如下:

-c:表示文件系统在mount次数达到设定后,需要运行fsck检查文件系统。
-i:文件系统的检查间隔时间。系统在达到时间间隔时,自动检查文件系统。
-l:显示文件系统的很多参数。
-j:转换为ext3文件系统。
-m: Set the percentage of reserved
filesystem blocks。
设置保留的空间百分比
-o设置默认挂载参数的
RAID学习
RAID就是把几个物理磁盘组合在一起成为一个大的虚拟物理磁盘,主要目的和用途主要有:把若干小容量物理磁盘组成一个大容量虚拟存储设备(以前的物理磁盘的容量都比较小);提高物理存储效率(读、写),或提供冗余以提高数据存储的安全性。
RAID 还分为硬件RAID 和软件RAID,硬件RAID是通过RAID 卡来实现的,而软件RAID是通过软件来实现的。硬件RAID是通过RAID卡把若干同等容量大小的硬盘,根据使用方向的不同,聚合起来成为一个大的虚拟RAID设备(或RAID0,或RAID1,或者RAID5,或RAID10……),如果每个硬盘容量不一致,以最小容量的硬盘为基础;它的成员是整个硬盘;
软RAID是软把若干同等容量大小的硬盘或分区,根据使用方向的不同,聚合起来成为一个大的虚拟RAID设备(或RAID0,或RAID1,或者RAID5,或RAID10……),如果每个硬盘或分区容量不一致,以最小容量的硬盘或分区为基础。软RAID的成员是整个硬盘或分区
RAID还是分级别的,级别很多我们这里只讲常见的:RAID0,RAID1,RAID5和RADI10

RAID0:是将两块硬盘(或分区)或者两个以上容量大小相同的磁盘(或分区)的一块使用,容量是成员磁盘容量的总和。在写入数据时数据是分拆成若干份被分散的写入到RAID0中的每个成员中。只有RAID0中的每个成员正常运行,并且RAID0也正常运行的情况下,这份数据才是完整的。RAID0中任何一个成员(硬盘分区)有有问题时,RAID0便不能运行,同时数据也不是完整的;但是其具有写入数据是速度很高,缺点,只要有一块有问题数据的完整性就等不到保障,不具有冗错,


RAID1:是把若干相同容量的硬盘或分区一般是两块磁盘(分区),成员与成员之间是镜像关系.容量只是一块的容量,写入数据时时向RAID的每个成员都写了一份,是冗余的阵列, RAID1 中只要有一个成员是健康的,RAID1完全可以激活,而且数据绝对是完整的.


RAID5:RAID5也是冗余安全的,RAID5是把至少三个硬盘或分区通过软件虚拟成为一个大的存储设备。在容量上是(n-1)x单个硬盘(分区)容量。在写入上,数据被分拆成若干份,分别向RAID5的每个成员下写入,当RAID5中的成员中有一个发生故障时,RAID5一样能启动和正常运行,只要n-1(注n>3)块硬盘或分区的不出故障,RAID5上的数据就是安全,对于一个文件存到RAID5设备中,只有成员是n-1(注n>3)无故障时,这份文件才是完整的



RAID10:软RAID10也是冗余安全阵列,是RAID0+1的集成,RAID10是把至少四个硬盘或分区通过软件虚拟成为一个大的存储设备。在容量是:n/2x单个硬盘(分区)容量,做RAID10所需要的硬盘或分区个数是偶数的,RAID10是先把每两个硬盘做成RAID1,然后再两个RAID1的基础上再做成RAID0
RAID
0 OVER RAID 1应该比RAID 1 OVER RAID 0具备比较高的可靠度。建议,当采用RAID 0+1/RAID 10架构时,要先作RAID 1,再把数个RAID 1做成RAID 0

总结各自所需要的磁盘分区数:RAID0和RAID1至少需要两个设置,RAID5至少需要三个设备,RAID10至少四个设备;
上面我们讲了常见RAID的区别,下来主要说下在linux上怎么样实现软RAID:
在Linux中,软RAID是通mdadm来创建和管理的,mdadm
是一个专用创建和管理RAID的软件:要是一个分区加入到RAID中,该分区的格式是:fd的
创建格式:mdadm -C -v
/dev/mdX -lY -nZ
RAID成员
-C 是--create 的缩写,表示创建的意思;
-v 和--verbose, 显示创建过程中详细的事件;
RAID设备:
/dev/mdX,RAID设备在Linux中,大多是/dev/md0,/dev/md1……
第一个设备从/dev/md0开始。
比如你已经有RAID0设备是/dev/md0,你再想做一个RAID5,那就是/dev/md1,以此类推;
RAID级别 : 用-l(字母l)Y或--level=Y表示,Y是RAID的级别。RAID的级别有RAID0就用0表示,RAID1就用1表示,RAID5就用RAID5表示,RAID10就用10表示。RAID的级别是根据自己的使用方向和现有磁盘和分区个数来定位。如果你就想高速读写、大容量,对数据安全性要求不高,那就用RAID0,如果对数据要求较高,可以用RAID1或RAID5,再者就是RAID10。比如-l0或--level=0表示RAID0,-l5或--level=5表示RAID5, -l1或--level=1表示RAID1,-l10或--level=10表示RAID10;
-nZ或--RAID-devices=Z
表示RAID成员的个数,比如我们把三个硬盘分分区做成一个RAID,那就是3个设备。就要写成这样 -n3或 --RAID-devices=3;

RAID成员:也就是RAID的组成设备,要一个一个的列出来,每个设备后要用空格来隔开;
创建完成后,RAID[/b]也就立即启动了[/b]
RAID[/b]也是有配置文件的在/etc/mdadm.conf[/b]中我们可以手动创建也可以自动生成[/b]
手动创建:mdadm
--detail --scan > /etc/mdadm.conf[/b]
自动创建在下面的例子中会提到[/b]
我们要可以通过下面的命令来查看RAID的信息:mdadm -D /dev/md0[/b]
管理软RAID的格式:mdadm 参数 [RAID设备] [RAID成员]
-A 或 --assemble
激活一个RAID;
-S 和--stop 停止正在运行的设备;
-s 或 --scan 扫描RAID设备;
-D 或 --detail 查看RAID的详细信息
我们的RAID创建成功后要是正常的使用也要像其他硬盘的使用一样需要格式化和挂载的,这都很简单就不在啰嗦了,创建完了还是需要日常的维护工作的我们怎样,在RAID正常的情况下安装,移除,做到磁盘或分区的冗余。
mdadm /dev/mdX -f RAID成员 :表示把一个设备列为有问题的设备,以便用-r或--remove参数移除
mdadm /dev/mdX -r RAID成员 :表示把RAID中的一个成员移出RAID
mdadm /dev/mdX -a RAID成员 :表示向一个RAID中添加一个成员
下面一个例子:
mdadm –C /dev/md1 –a yes –n3 –x 1 -l 5
/dev/sda{5,6,7,8}
意思是:创建一个RAID5,-a yes是自动创建配置文件-n3有三个成员,-x1一个冗余,-l 5 是五级别,后面是成员
如何为一个现有RAID扩充容量呢?上面我们提到过可以向RAID里增加成员,但是他的总容量没有改变,要是扩容就需要使用用到RAID的Grow模式,也就是增长模式,扩充模式。操作很简单,我们使用例:mdadm /dev/md0 –a /dev/sda2的方式向/dev/md1增加一成员,
使用:mdadm -G /dev/mdX –n 数字 注:-n 代表RAID真正成员的个数这样就扩容了容量。简单的讲就是先将一个分区或者硬盘加入到RAID中然后在使用扩容模式扩容
如何清除一个RAID成员的超级块存储存的RAID信息;
使用:mdadm --zero-superblock RAID成员;
如果你确认RAID成员这个成员对你没任何用处,你已经把这个成员移除RAID,并且您想把这个设备另作他用。这时你可以清除其 superblock的信息。比如;
[root@mylinux:~] # mdadm --zero-superblock
/dev/sdd3
这个示例就是清除/dev/sdd3中的超级块中所存储的RAID信息;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息