9.1.1、raid0: 读、写性能提升,无容错能力,空间n*disk、raid1: 写性能略有下降,读性能提升,容错,空间:1*disk、raid4:最少3块硬盘固定一块校验盘 读、写性能提升,有容错能力(最多坏一块磁盘),空间:(n-1)*disk、raid5: 最少3块硬盘轮流做校验盘读、写性能提升,有容错能力(最多坏一块磁盘),空间:(n-1)*disk、raid10: 读、写性能提升,有容错能力(每一组可坏一块盘),空间:n*disk/2

9.2.1、for第二种使用格式for((初始值;条件;修改值));do 循环体 done
9.2.2、while遍历文本文件while read 变量名; do 循环体 done < /path/to/somefile
练习:显示当前系统上所有挂载的文件系统中空间使用百分比大于10的设备和空间使用百分比;使用while循环实现;

df | while read line ;do
 munber=`echo $line | awk  '{print $5}' | grep -o "[0-9]\{1,\}"`
  if [ $munber -gt 10 > /dev/null ];then
      echo "$line"
    fi
done


9.3.1、LVM: Logical Volumn Manager(将一个或多个底层块设备空间容量组织成一个单一设备),把物理卷(PV:physical volu)划分为多个块设备(物理盘区PE: physical extent)由卷组层整合成单一设备后提供给逻辑卷(lv:logical volume)使用,lv存储空间边界分为物理边界和逻辑边界,在扩展的过程中先扩展物理边界在扩展逻辑边界,缩减时先缩减逻辑边界后缩减物理边界,先创建pv--》vg--》lv
9.3.2、pv(pvcreate, pvs, pvdisplay, pvremove, pvmove, pvscan)、vg(vgcreate, vgs, vgdisplay, vgremove, vgextend, vgreduce, vgscan)、lv(lvcreate, lvs, lvdisplay, lvremove, lvextend, lvreduce, lvscan),创建pv时一定要把分区格式调整到lvm格式。
9.3.4、创建pv(pvcreate /dev/sdb{1,2,3}),可以通过pvs或pvdisplay显示pv信息, pvremove /dev/sdb1 删除pv上的分区,pvreate还可以把新分区添加到pv中。
9.3.5、创建vg(vgcreate myvg /dev/sdb{1,2}), 添加新分区到myvg卷组层(vgextend myvg /dev/sdb3),vg缩减卷组层(vgreduce myvg /dev/sdb1)在缩减时要确保分区上无数据(pvmove /dev/sdb1) -s指定pe大小默认4m当指定大小后将不能修改
9.3.6、创建lv(lvcreate -n名称、-L指定大小、指定在那个vg上创建举例:lvcreate -L 2G -n mylv myvg),创建lv之后就相当于一个独立的物理设备,它有对应的设备文件在/dev/mapper/myvg-mylv或/dev/myvg/mylv下,格式化后挂载到节点上就可以使用了mke2fs -j -b 1024 -m 2 /dev/mapper/myvg-mylv,mount /dev/myvg/mylv /mnt/text。扩展物理边界lvextend -L +4g /dev/myvg/mylv扩展后需要扩展逻辑边界resize2fs /dev/myvg/mylv ,缩减lv(缩减很危险需要慎重必须要先卸载文件系统)umount /mnt/text,并强制检测e2fsck -f /dev/myvg/mylv之后缩减逻辑边界resize2fs /dev/myvg/mylv 5g在缩减物理边界lvreduce -L 5g /dev/myvg/mylv,卸载lv(lvremove -f /dev/myvg/mylv.

9.3.7、snapshot 快照 ,创建快照卷只对逻辑卷进行,因此必须跟逻辑卷在同一卷组中所以无需指明卷组,但是要预留足够的空间大小 ,lvcreate(-L 指定大小、-n 名称、-p 只读、-s指明是快照卷、针对哪个逻辑卷做快照,举例lvcreate -L 1g -n mylv-snap -p r -s /dev/myvg/myly),在创建快照时先要确保当前逻辑卷中没有进程在修改数据。最好的方式先把当前逻辑卷设置成只读,在做快照举例:(mount -o remount,ro /dev/myvg/mylv /mnt/boot/、lvcreate -L 1g -n mylv-snap -p r -s /dev/myvg/mylv、mount -o remount,rw /dev/myvg/mylv /mnt/boot/)快照使用完后先卸载在删除lvremove /dev/myvg/mysnap

练习:由于系统环境为Centos5.9文件系统只能用ext3

1、创建一个由至少两个物理卷组成的大小为10G的卷组;要求,PE大小8M;而后在卷组中创建大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录;
           1、fdisk /dev/sdb,提示需要把分区格式设置为lvm逻辑卷格式 2、pvcreate /dev/sdb{1,2,3}3、vgcreate -s 8m myvg /dev/sdb{1,2}
           4、lvcreate -L 5G -n mylv myv/5、/etc/fstab下添加UUID="b69b4b54-5c91-4fd8-bc36-757597b6eb14" /users ext3 defaults   0 0

2、新建用户mageedu,其家目录为/users/mageedu,而后su至mageedu用户,复制/etc/fstab文件至自己的家目录;
           1、 useradd -d /users/mageedu mageedu 2、su - mageedu 3、cp /etc/fstab 

3、扩展mylv1至7G,确保/users/mageedu的数据不受影响;而后su至mageedu用户,验正数据可正常访问;
           1、lvextend -L +2G /dev/myvg/mylv 2、resize2fs /dev/myvg/mylv

4、缩减mylv1至4G,确保/users/mageedu的数据不受影响;而后su至mageedu用户,验正数据可正常访问;
          1、resize2fs /dev/myvg/mylv 4G

5、对mylv1创建快照卷snap-mylv1,并通过其cp内部的数据至/backups/目录中,要求保留原有属主属组等信息;        
           1、lvcreate -L 1G -n snap-mylv1 -p r -s /dev/myvg/mylv,2、mkdir /snap,3、mount /dev/myvg/snap-mylv1 /snap/


9.4.1、dd通过底层复制数据,格式:if指定需要复制的文件,of指定文件复制到那里,bs大小,count计数,举例:dd if=/dev/sdb of=/tmp/mbrback bs=512 count=1或者dd if=/dev/sdb of=/tmp/mbrback bs=1 count=512
9.4.2、文件压缩工具不支持压缩目录gzip压缩后缀为gz(-d解压gz文件相当于gunzip解压命令,zcat不解压查看文件,-c: 将压缩后的结果输出至标准输出,举例:gzip -c /etc/passwd > /tmp/text.gz)、bzip2压缩后缀为bz2(-d解压bz2文件相当于bunzip2解压命令,-k: 保留原文件压缩,bzcat不解压查看文件)、xz压缩后缀为xz(-d解压xz文件相当于unxz解压命令,-k: 保留原文件压缩,xzcat不解压查看文件)
9.4.3、zip支持目录压缩和归档压缩(把多个文件压缩成一个包,举例:zip passwd.zip passwd test.txt,压缩目录时必须制定压缩目录下的文件),unzip解压.zip压缩包。
9.4.4、归档工具tar:将多个文件打包成单个文件,即为归档文件(-c创建归档、-v显示执行过程、-f归档后的文件名、举例 tar -cvf etc.tar /etc,注意f选项必须写在归档名称前、-x展开归档,举例:tar -xvf etc.tar、-t不解压查看归档,举例 tar -tf etc.tar、tar可以直接通过选项调用压缩工具执行压缩或解压,-z:gzip、-j:bzip2、-J:xz,举例:tar -zcvf text.tar.gz /etc,解压 tar -zxvf text.tar.gz,解压时可以不指定压缩类型tar自动识别,举例:tar -xf text.tar.gz)

练习:写一个脚本

1、显示如下信息:

Plz choose a compress tool:

用户可键入:gzip, bzip2或xz;

2、提醒用户指定要归档压缩的文件

3、将用户归档压缩至/tmp目录中,文件名为原名加上相应的后缀;

read -p "Plz choose a compress tool:" tarname
while [ $tarname == "gzip" -o $tarname == "bzip2" -o $tarname == "xz" ];do
   read -p "Please enter the compressed file:" pathfile
      if [ $tarname == "gzip" -a -d $pathfile ];then
             tar -zcf $pathfile.tar.gz $pathfile
         elif [ $tarname == "bzip2" -a -d $pathfile ];then
             tar -jcf $pathfile.tar.bz2 $pathfile
         elif [ $tarname == "xz" -a -d $pathfile ];then
             tar -Jcf $pathfile.tar.xz $pathfile
         elif [ $tarname == "gzip" -a -f $pathfile ];then
             gzip -c $pathfile>$pathfile.gz
         elif [ $tarname == "bzip2" -a -f $pathfile ];then
             bzip2 -k $pathfile
         elif [ $tarname == "xz" -a -f $pathfile ];then
             xz -k $pathfile
         else
             read -p "Input error Please input again:" pathfile
      fi
             read -p " Whether to continue y or no:" boolname
      if [ $boolname == "y" ];then
             read -p "Please enter the compressed file:" pathfile
         else
             exit 1
      fi
done