摘要: ACL 、 LVM 、 RAID
访问控制列表(ACL)
目标:为多用户或者组的文件和目录赋予访问权限 rwx
ext3文件系统包括对访问控制列表的支持,与通常提供的三种标准访问类型相比,该列表可更好
的控制文件系统权限。为了启用文件系统中的ACL,挂载文件系统是必须带有aclmount选项。当然
其他方法有:tune2fs 更改文件系统的选项;mount -o 选项;更改配置文件/etc/fstab,重读配
置文件即可。
使用getfacl命令可浏览一个文件的ACL 如:getfacl /home/schedule.txt
这里主要讲一下setfacl的使用,即修改ACL
ACL 有两种:存取 ACL(access ACLs)和默认 ACL(default ACLs)。存取 ACL 是对指定
文件或目录的存取控制列表。默认 ACL 只能和目录相关。如果目录中的文件没有存取 ACL,它就
会使用该目录的默认 ACL。默认 ACL 是可选的。
ACL 可以按以下条件配置:每用户;每组群;通过有效权限屏蔽;为不属于文件用户组群
的用户配置 。
etfacl 工具为文件和目录设置 ACL。使用 -m 来添加或修改文件或目录的 ACL:
setfacl -m
规则()必须使用以下格式指定。同一条命令中可以指定多项规则,只要它们是用逗号分开即可。
u::
为用户设置存取 ACL。用户名或 UID 必须被指定。用户可以是系统上的任何合法用户。
g::
为组群设置存取 ACL。组群名称或 GID 必须被指定。组群可以是系统上的任何合法组群。
m:
设置有效权限屏蔽。该屏蔽是组群所有者和所有用户和组群项目的权限的合集。
o:
为文件的组群用户之外的用户设置存取 ACL。
空格被忽略。权限()必须是代表读、写、和执行的字符(r、w、x)的组合。
如果某文件或目录已经有了一个 ACL,而 setfacl 命令仍被使用了,额外的规则就会被添加到已
存在的 ACL 中,或用来修改已存在的规则。
文档给出的例子 EXAMPLES
Granting an additional user read access
setfacl -m u:lisa:r file
Revoking write access from all groups and all named users
(using the effective rights mask)
setfacl -m m::rx file
Removing a named group entry from a file's ACL
setfacl -x g:staff file
Copying the ACL of one file to another
getfacl file1 | setfacl --set-file=- file2
Copying the access ACL into the Default ACL
getfacl --access dir | setfacl -d -M- dir
软件RAID
一、 什么是软件RDID:独立磁盘冗余阵列(RAID, Redundant Array of Independent
Disks)简称磁盘阵列,其基本思想就是把多个相对便宜的硬盘组合起来,成为一个磁盘阵列组,
使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以
下一个或多个方面的好处:增强资料整合度,增强容错功能,增加处理量或容量。另外,磁盘阵列
组对于电脑来说, 看起来就像一个单独的硬盘或逻辑存储单元。分为RAID-0,RAID-1,RAID-1E,
RAID-5,RAID-6,RAID-7,RAID-10。简单来说,RAID把多个硬盘组合成为一个逻辑磁区,因此,
操作系统只会把它当作一个硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组
合。
二、 基本RAID分类(常用的)
RAID级别 相对优点 相对缺点
RAID 0 存取速度最快 没有容错
RAID 1 完全容错 成本高
RAID 3 写入性能最好 没有多任务功能
RAID 4 具备多任务及容错功能 Parity 磁盘驱动器造成性能瓶颈
RAID 5 具备多任务及容错功能 写入时有overhead
RAID 0+1/RAID 10 速度快、完全容错 成本高
三、软件RAID配置
1 mdadm;
在Linux服务器中是通过mdadm工具来创建和维护软RAID的,mdadm在创建和管理软RAID时非常方便
,而且很灵活。mdadm常用的参数有如下:
* --create或-C:创建一个新的软RAID,后面接raid设备的名称。例如,/dev/md0,/dev/md1
等。
*--assemble或-A:加载一个已存在的阵列,后面跟阵列以及设备的名称。
*--detail或-D:输出指定RAID设备的详细信息。
*--stop或-S:停止指定的RAID设备。
*--level或-l:设置RAID的级别,例如,设置“--level=5”则表示创建阵列的级别是RAID 5
。
*--raid-devices或-n:指定阵列中活动磁盘的数目。
*--scan或-s:扫描配置文件或/proc/mdstat文件来搜索软RAID的配置信息,该参数不能单独
使用,只能配置其它参数才能使用。
下面将通过一个实例来讲述通过mdadm如何实现软RAID的功能。
1.1 创建分区;
【实例1】
某台机器上有4块空闲的硬盘,分别是/dev/sdb、/dev/sdc、/dev/sdd和/dev/sde,并用这四块硬
盘来创建来创建一个RAID 5,具体操作步骤如下:
首先使用“fdisk”命令在每块硬盘上创建一个分区,操作如下:
root@xiaop-laptop:/# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n #按n创建新分区
Command action
e extended
p primary partition (1-4) #输入p 选择创建主分区
p
Partition number (1-4): 1 #输入 1 创建第一个主分区
First cylinder (1-102, default 1): #直接回车,选择分区开始柱面这里就从 1 开始
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-102, default 102):
Using default value 102
Command (m for help): w #然后输入w写盘
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
针对其余几块硬盘也做相同操作,按照此步骤在另外的两块磁盘上做同样的操作;
全部做完后,运行 fdisk -l 应该可以看到如下信息:
Disk /dev/sdb: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 204 208880 fd Linux raid autodetect
Disk /dev/sdc: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 204 208880 fd Linux raid autodetect
Disk /dev/sdd: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 204 208880 fd Linux raid autodetect
看到上面三个磁盘上分别建了一个分区,分区大小都一样;
1.2 创建RAID 5;
创建完/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1四个分区后,下面就可以来创建RAID 5了,
其中设定/dev/sde1作为备用设备,其余为活动设备,备用设备的作用是一旦某一设备损坏可以立
即使用备用设备替换。操作命令如下:
root@xiaop-laptop:/# mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-
devices=1 /dev/sd[b-e]1
mdadm: array /dev/md0 started.
其中“--spare-devices=1”表示当前阵列中备用设备只有一块,即作为备用设备的“/dev/sde1”
,若有多块备用设备,则将“--spare-devices”的值设置为相应的数目。成功创建完成RAID设备
后,通过如下命令可以查看到RAID的详细信息:
root@xiaop-laptop:/# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Mon Jan 22 10:55:49 2007
Raid Level : raid5
Array Size : 208640 (203.75 MiB 213.65 MB)
Device Size : 104320 (101.88 MiB 106.82 MB)
Raid Devices : 3
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Mon Jan 22 10:55:52 2007
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 -1 spare /dev/sde1
UUID : b372436a:6ba09b3d:2c80612c:efe19d75
Events : 0.6
1.3 创建RAID的配置文件;
RAID的配置文件名为“mdadm.conf”,默认是不存在的,所以需要手工创建,该配置文件存在的主
要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理。“mdadm.conf”文件内容包
括:由DEVICE选项指定用于软RAID的所有设备,和ARRAY选项所指定阵列的设备名、RAID级别、阵
列中活动设备的数目以及设备的UUID号。生成RAID配置文件操做如下:
root@xiaop-laptop:/# mdadm --detail --scan > /etc/mdadm.conf
但是当前生成“mdadm.conf”文件的内容并不符合所规定的格式,所以也是不生效的,这时需要手
工修改该文件内容为如下格式:
root@xiaop-laptop:/# vi /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=b372436a:6ba09b3d:2c80612c:efe19d75
如果没有创建RAID的配置文件,那么在每次系统启动后,需要手工加载软RAID才能使用,手工加载
软RAID的命令是:
root@xiaop-laptop:/# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: /dev/md0 has been started with 3 drives and 1 spare.
1.4 创建文件系统;
接下来就只需要在RAID设备上创建文件系统就可使用了,在RAID设备上创建文件系统和在分区或磁
盘上创建文件系统的方法一样。在设备“/dev/md0”上创建ext3的文件系统命令如下:
root@xiaop-laptop:/# mkfs.ext3 /dev/md0
创建完文件系统后,将该设备挂载上就可正常的使用了。如果要创建其它级别的RAID,其步骤和创
建RAID 5基本都一样,区别在于指定“--level”值的时候,需要将该值设置为相应的级别。
2 维护软RAID;
软RAID虽然很大程度上能保证数据的可靠性,但是在日常的工作中,有时可能需要对RAID进行调整
以及不排除RAID设备物理介质损坏的可能等相关问题
,当遇到这些情况时,那么同样可以通过“mdadm”命令来完成这些操作。下面也将通过一个实例
来介绍更换RAID故障磁盘的完整过程。
2.1 模拟故障磁盘;
【实例2】
以前面的【实例1】为基础,假定其中的“/dev/sdc1”设备出现故障时,更换一个新的磁盘,整个
过程的详细说明如下:
在实际中,当软RAID检测到某个磁盘有故障时,会自动标记该磁盘为故障磁盘,并停止对故障磁盘
的读写操作,所以这里需要将/dev/sdc1标记为出现故障的磁盘,命令如下:
root@xiaop-laptop:/# mdadm /dev/md0 --fail /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
由于【实例1】中的RAID 5设置了一个备用设备,所以当有标记为故障磁盘的时候,备用磁盘会自
动顶替故障磁盘工作,阵列也能够在短时间内实现重建。通过“/proc/mdstat”文件可查看到当前
阵列的状态,如下:
root@xiaop-laptop:/# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sde1[3] sdb1[0] sdd1[2] sdc1[4](F)
208640 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
[=====>...............] recovery = 26.4% (28416/104320) finish=0.0min speed=28416K/sec
unused devices: <none>
以上信息表明阵列正在重建,当一个设备出现故障或被标记故障时,相应设备的方括号后将被标以
(F),如“sdc1[4](F)”,其中“[3/2]”的第一位数表示阵列所包含的设备数,第二位数表示活动
的设备数,因为目前有一个故障设备,所以第二位数为2;这时的阵列以降级模式运行,虽然该阵
列仍然可用,但是不具有数据冗余;而“[U_U]”表示当前阵列可以正常使用的设备是/dev/sdb1和
/dev/sdd1,如果是设备“/dev/sdb1”出现故障时,则将变成[_UU]。
重建完数据后,再次查看阵列状态时,就会发现当前的RAID设备又恢复了正常,如下:
root@xiaop-laptop:/# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sde1[1] sdb1[0] sdd1[2] sdc1[3](F)
208640 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
2.2 移除故障磁盘;
既然“/dev/sdc1”出现了故障,当然要移除该设备,移除故障磁盘的操作如下:
root@xiaop-laptop:/# mdadm /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdc1
其中“—remove”表示移除指定RAID设备中的某个磁盘,也可用“-r”来代替该参数。
2.3 添加新硬盘;
在添加新的硬盘前,同样需要对新硬盘进行创建分区的操作,例如,添加新硬盘的设备名
为“/dev/sdc1”,则具体操作如下:
root@xiaop-laptop:/# mdadm /dev/md0 --add /dev/sdc1
mdadm: hot added /dev/sdc1
其中“--add”与前面的“--remove”其义刚好相反,用于将某个磁盘添加到指定的设备中,也可
用“-a”代替该参数。
由于【实例1】中的RAID 5设置了一个备用设备,所以不需要做任何操作RAID 5也能正常运行,但
是如果这时某块磁盘再出现故障的话,会导致RAID 5没有数据冗余功能,这对于存放重要的数据的
设备来说显得太不安全了。那么这时增加到RAID 5中的“/dev/sdc1”则作为备用设备出现在阵列
中,如下:
root@xiaop-laptop:/# mdadm --detail /dev/md0
/dev/md0:
……
……
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 65 1 active sync /dev/sde1
2 8 49 2 active sync /dev/sdd1
3 8 33 -1 spare /dev/sdc1
UUID : b372436a:6ba09b3d:2c80612c:efe19d75
Events : 0.133
LVM(逻辑卷管理器)
介绍:LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区
进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分 LVM区管理的灵
活性。前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁
盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。物理卷(physical volume)物理卷
就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,
但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
基本概念
1物理卷-简称PV
物理卷在逻辑卷管理器中属于最底层的,任何的逻辑卷和卷组都必需依靠物理卷来建立,物理卷可以
是一个完整的硬盘,也可以是硬盘中的莫一个分区
2卷组-简称VG
卷组是建立在物理卷之上,一个卷组中可以包含一个物理卷组或者多个物理卷
3逻辑卷-简称LV
逻辑卷是建立在卷组之上的,卷组中的空间可以建立多个逻辑卷,并且逻辑卷可以随意从卷组的空闲
空间中增减,逻辑卷可以属于一个卷组,也可以属于不同的多个卷组
创建和管理LVM
要创建一个LVM系统,一般需要经过以下步骤:
1、创建分区
使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别
仅仅是LVM的分区类型为8e。
2、创建物理卷
创建物理卷的命令为pvcreate,利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理
卷。将整个磁盘创建为物理卷的命令为:
#pvcreate /dev/hdb4
将单个分区创建为物理卷的命令为:
#pvcreate /dev/hdb5
3、创建卷组
创建卷组的命令为vgcreate,将使用pvcreate建立的物理卷创建为一个完整的卷组:
#vgcreate vg0 /dev/hdb5 /dev/hdb4
4、从卷组创建逻辑卷
#lvcreate -L 512M -n data vg0
5、格式化逻辑卷和挂载
#mke2fs -j /dev/vg0/data
#mkdir /data
#mount -o acl /dev/vg0/data /data
6、删除一个逻辑卷
删除逻辑卷以前首先需要将其卸载,然后删除:
#umount /dev/vg0/data
#lvremove /dev/vg0/data
7、增加卷的大小(步骤)
#lvextend 可增大逻辑卷
#resice2fs 可在线增大ext3文件系统
#vgextend 在已有眷族中日安家新的物理卷
8、减小卷的大小
卸载挂载的文件系统
检查文件系统(强制的)e2fsck
lvreduce 接着减小卷
减小物理卷(pvremove )
减小卷组中的物理卷(vgreduce VGNAME PVNAME )
逻辑卷管理器快照
快照是特殊的逻辑卷,他是在省城快照是存在的逻辑卷的准确拷贝,对于需要备份或者复制的
现有数据集临时拷贝及其他操作来说,快照是最好的选择。快照只有在他们和原来的逻辑卷不同时
才会小号空间。在生成快照是会分配给他一定的空间,但是有在原来的逻辑卷或者快照有所改变时
才会使用这些空间;但原来逻辑卷有所改变时,会见讲究的数据复制到快照中;快照中只含有原来
的逻辑卷中更改的数据或者自生成快照后的快照中更改的内容。
使用LVM快照
为现有逻辑卷创建快照
#lvcrate -L 64 -s -n databackup /dev/vg0/data
挂载快照
#mkdir -p /mnt/databackup
#mount -o ro /dev/vg0/databackup /mnt/databackup
删除快照
#umount /mnt/databackup
#lvremove /dev/vg0/databackup