1.18 学习札记

       摘要:  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