4、总结RAID的各个级别及其组合方式和性能的不同;

RAIDRedundant Arrays ofIndependent Disks(磁盘阵列),有独立磁盘构成的具有冗余能力的阵列之意。

级别:RAID 0RAID 1RAID 10RAID 01RAID 5

 

RAID0:连续以位或字节为单位分割数据,同时读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID结构。

RAID0只是单纯地提高性能,并没有为数据的可靠性提供保证,它的最大优点就是可以整倍的提高硬盘的容量。(如使用了三块80GB的硬盘组建成RAID 0模式,那么磁盘容量就会是240GB)。其速度方面,各单独一块硬盘的速度完全相同。最大的缺点在于任何一块硬盘出现故障,将影响到所有数据,可靠性仅为单独一块硬盘的1/N

RAID0不能应用于数据安全性要求高的场合。一般适用于有较高IO,但数据不是很重要的场景,类似缓存一类的场景;


 

RAID1:又称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。

虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%(以四块80GB容量的硬盘来讲,可利用的磁盘空间仅为160GB)

另外,出现硬盘故障的RAID1系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1多用在保存关键性的重要数据的场合。


 

RAID0+1:名称上我们便可以看出是RAID0RAID1的结合体。在我们单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1

RAID0RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。

它的优点是同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低。

RAID1+0是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。RAID 0+1则是跟RAID 1+0的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

性能上,RAID 0+1RAID 1+0有着更快的读写速度。可靠性上,当RAID 1+0有一个硬盘受损,其余三个硬盘会继续运作。RAID 0+1 只要有一个硬盘受损,同组RAID 0的另一只硬盘亦会停止运作,只剩下两个硬盘运作,可靠性较低。因此,RAID 10远较RAID 01常用,零售主板绝大部份支持RAID 0/1/5/10,但不支持RAID 01


 

RAID 5:分布式奇偶校验的磁盘结构,不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在RAID 5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID 5更适合于小数据块和随机读写的数据。在RAID 5中有“写损失”,即每一次写操作将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。 这是目前用的比较多的阵列方式,3块磁盘,损坏一块仍能保证数据完整性,同时又有较高的磁盘利用率。属于物美价廉型。


 

5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;

[root@wangyafei ~]# fdisk -l

 

磁盘 /dev/sdb42.9 GB, 42949672960 字节,83886080 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

 

 

磁盘 /dev/sda128.8 GB, 128849018880 字节,251658240个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x000aaf3f

 

  设备 Boot     Start         End      Blocks  Id  System

/dev/sda1   *        2048    4196351     2097152   83 Linux

/dev/sda2        4196352    96479231    46141440  8e  Linux LVM

 

磁盘 /dev/mapper/cl-root42.9 GB, 42945478656字节,83877888 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

 

 

磁盘 /dev/mapper/cl-swap4294 MB, 4294967296 字节,8388608 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

 

[root@wangyafei~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)

 

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

 

Device does not contain a recognized partition table

使用磁盘标识符 0x83c00ca3 创建新的 DOS 磁盘标签。

 

命令(输入 m 获取帮助)n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p

分区号 (1-4,默认 1)1

起始扇区 (2048-83886079,默认为 2048)

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为83886079)+10G

分区 1 已设置为 Linux 类型,大小设为 10 GiB

 

命令(输入 m 获取帮助)n

Partition type:

   p   primary (1 primary, 0 extended, 3 free)

   e   extended

Select (default p): p

分区号 (2-4,默认 2)2

起始扇区 (20973568-83886079,默认为 20973568)

将使用默认值 20973568

Last 扇区, +扇区 or +size{K,M,G} (20973568-83886079,默认为83886079)+10G

分区 2 已设置为 Linux 类型,大小设为 10 GiB

 

命令(输入 m 获取帮助)n

Partition type:

   p   primary (2 primary, 0 extended, 2 free)

   e   extended

Select (default p): p

分区号 (3,4,默认 3)3

起始扇区 (41945088-83886079,默认为 41945088)

将使用默认值 41945088

Last 扇区, +扇区 or +size{K,M,G} (41945088-83886079,默认为83886079)+10G

分区 3 已设置为 Linux 类型,大小设为 10 GiB

 

命令(输入 m 获取帮助)t

分区号 (1-3,默认 3)1

Hex 代码(输入 L 列出所有代码)fd

已将分区“Linux”的类型更改为“Linux raid autodetect

 

命令(输入 m 获取帮助)t

分区号 (1-3,默认 3)2

Hex 代码(输入 L 列出所有代码)fd

已将分区“Linux”的类型更改为“Linux raid autodetect

 

命令(输入 m 获取帮助)t

分区号 (1-3,默认 3)3

Hex 代码(输入 L 列出所有代码)fd

已将分区“Linux”的类型更改为“Linux raid autodetect

 

命令(输入 m 获取帮助)p

 

磁盘 /dev/sdb42.9 GB, 42949672960 字节,83886080 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x83c00ca3

 

  设备 Boot     Start         End      Blocks  Id  System

/dev/sdb1           2048    20973567    10485760  fd  Linux raid autodetect

/dev/sdb2       20973568    41945087    10485760  fd  Linux raid autodetect

/dev/sdb3       41945088    62916607    10485760  fd  Linux raid autodetect

 

命令(输入 m 获取帮助)w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@wangyafei ~]# partx -a /dev/sdb

partx: /dev/sdb: error adding partitions 1-3

[root@wangyafei ~]# mdadm -C /dev/md0 -a yes -c 128 -n 2 -x 1 -l 1 /dev/sdb{1,2,3}

mdadm: Note: this array has metadata at the start and

    may not be suitable asa boot device.  If you plan to

    store '/boot' on thisdevice please ensure that

    your boot-loaderunderstands md/v1.x metadata, or use

    --metadata=0.90

Continue creating array? y

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

[root@wangyafei ~]# mdadm -D /dev/md0

/dev/md0:

        Version : 1.2

  Creation Time : WedFeb  1 15:22:11 2017

     Raid Level : raid1

     Array Size : 10477568(9.99 GiB 10.73 GB)

  Used Dev Size : 10477568(9.99 GiB 10.73 GB)

   Raid Devices : 2

  Total Devices : 3

    Persistence :Superblock is persistent

 

    Update Time : WedFeb  1 15:22:43 2017

          State : clean,resyncing

 Active Devices : 2

Working Devices : 3

 Failed Devices : 0

  Spare Devices : 1

 

  Resync Status : 64%complete

 

           Name :wangyafei:0  (local to host wangyafei)

           UUID :cf8d148c:c9ac1ea0:799fced4:61f9caac

         Events : 10

 

    Number   Major  Minor   RaidDevice State

       0       8      17        0      active sync   /dev/sdb1

       1       8      18        1      active sync   /dev/sdb2

 

       2       8      19        -      spare  /dev/sdb3

[root@wangyafei ~]# cat /proc/mdstat

Personalities : [raid1]

md0 : active raid1 sdb3[2](S) sdb2[1] sdb1[0]

      10477568 blockssuper 1.2 [2/2] [UU]

     

unused devices: <none>

 

 

6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;

[root@wangyafei~]# fdisk /dev/sdb
欢迎使用 fdisk(util-linux 2.23.2)

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xc6a0e865创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助)n
Partition type:
   p  primary (0 primary, 0 extended, 4 free)
   e  extended
Select (default p): p
分区号 (1-4,默认 1)
起始扇区(2048-41943039,默认为 2048)
将使用默认值 2048
Last 
扇区, +扇区 or+size{K,M,G} (2048-41943039,默认为 41943039)+4G
分区 1 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助)n
Partition type:
   p  primary (1 primary, 0 extended, 3 free)
   e  extended
Select (default p): p
分区号 (2-4,默认 2)
起始扇区(8390656-41943039,默认为 8390656)
将使用默认值 8390656
Last 
扇区, +扇区 or+size{K,M,G} (8390656-41943039,默认为 41943039)+4G
分区 2 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助)n
Partition type:
   p  primary (2 primary, 0 extended, 2 free)
   e  extended
Select (default p): p
分区号 (3,4,默认 3)
起始扇区(16779264-41943039,默认为 16779264)
将使用默认值 16779264
Last 
扇区, +扇区 or+size{K,M,G} (16779264-41943039,默认为 41943039)+4G
分区 3 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助)t
分区号 (1-3,默认 3)1
Hex 
代码(输入 L 列出所有代码)fd
已将分区“Linux”的类型更改为“Linuxraid autodetect”

命令(输入 m 获取帮助)t
分区号 (1-3,默认 3)2
Hex 
代码(输入 L 列出所有代码)fd
已将分区“Linux”的类型更改为“Linuxraid autodetect”

命令(输入 m 获取帮助)t
分区号 (1-3,默认 3)3
Hex 
代码(输入 L 列出所有代码)fd
已将分区“Linux”的类型更改为“Linuxraid autodetect”

命令(输入 m 获取帮助)p

磁盘 /dev/sdb21.5 GB, 21474836480字节,41943040 个扇区
Units = 
扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理)512 字节 / 512 字节
I/O 
大小(最小/最佳)512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc6a0e865

   
设备Boot      Start         End      Blocks  Id  System
/dev/sdb1            2048     8390655    4194304   fd  Linux raid autodetect
/dev/sdb2         8390656    16779263    4194304   fd  Linux raid autodetect
/dev/sdb3        16779264    25167871    4194304   fd  Linux raid autodetect

命令(输入 m 获取帮助)w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@wangyafei~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-3
[root@wangyafei~]# mdadm -C /dev/md0 -a yes -c 256 -n 3 -l 5 /dev/sdb{1,2,3}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@wangyafei~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Wed Feb  1 15:59:10 2017
     Raid Level : raid5
     Array Size : 8380416 (7.99 GiB 8.58GB)
  Used Dev Size : 4190208 (4.00 GiB 4.29GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock ispersistent

    Update Time : Wed Feb  1 15:59:29 2017
          State : clean, degraded,recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 256K

 Rebuild Status : 88% complete

           Name : wangyafei:0  (local to host wangyafei)
           UUID :c5785808:daccbe2a:28df00c8:aec75aec
         Events : 15

    Number   Major  Minor   RaidDevice State
       0       8      17        0      active sync   /dev/sdb1
       1       8      18        1      active sync   /dev/sdb2
       3       8      19        2      spare rebuilding   /dev/sdb3
[root@wangyafei~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdb3[3] sdb2[1] sdb1[0]
      8380416 blocks super 1.2 level 5,256k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>
[root@wangyafei~]# mke2fs -t ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096(log=2)
分块大小=4096(log=2)
Stride=64 blocks, Stripe width=128 blocks
524288 inodes, 2095104 blocks
104755 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2145386496
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
     32768, 98304, 163840, 229376, 294912,819200, 884736, 1605632

Allocating group tables: 
完成                            
正在写入inode完成                            
Creating journal (32768 blocks): 
完成
Writing superblocks and filesystem accounting information: 
完成 

[root@wangyafei~]# vim /etc/fstab
/dev/md0/backup ext4 acl,noatime 0 0

[root@wangyafei~]# mount -a
[root@wangyafei ~]# df -lh | grep '/dev/md0'
/dev/md0             7.8G   36M 7.3G    1% /backup
[root@wangyafei ~]#

7、写一个脚本

(1) 传递两个以上字符串当作用户名;

(2) 创建这些用户;且密码同用户名;

(3) 总结说明共创建了几个用户;

1:

[root@wangyafei~]# touch test07.sh
[root@wangyafei ~]# vim test07.sh
[root@wangyafei ~]# cat test07.sh
#!/bin/bash
#Author:wangyafei

if [ $# -lt 2 ];then
    echo "At least two username"
    exit 2
fi


    for i in $*;do
        if grep "^$i\>"/etc/passwd &> /dev/null;then


            echo "User $iexists"

    else
        useradd $i
            echo $i | passwd --stdin $i&> /dev/null
            echo "Add user $ifinished"
        fi


    done

echo "total of Create $# users"

[root@wangyafei~]# bash test07.sh
At least two username 
[root@wangyafei~]# bash test07.sh abb1 abb2 abb3
Add user abb1 finished
Add user abb2 finished
Add user abb3 finished
total of Create 3 users

2:

[root@wangyafei~]# touch test08.sh

 [root@wangyafei ~]# vi test08.sh

[root@wangyafei~]# cat test08.sh

#!/bin/bash

#Author:wangyafei

for i in $@;do

    useradd $i

    echo $i | passwd--stdin $i

done

echo "create total users: $#"

 

[root@wangyafei~]# bash test08.sh

create total users: 0

[root@wangyafei~]# bash test08.sh abc1 abc2 abc3 abc4

更改用户 abc1 的密码

passwd:所有的身份验证令牌已经成功更新。

更改用户 abc2 的密码

passwd:所有的身份验证令牌已经成功更新。

更改用户 abc3 的密码

passwd:所有的身份验证令牌已经成功更新。

更改用户 abc4 的密码

passwd:所有的身份验证令牌已经成功更新。

create total users: 4

 

8、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;

[root@wangyafei~]# ls /etc/rc.d/

init.d  rc0.d  rc1.d rc2.d  rc3.d  rc4.d rc5.d  rc6.d  rc.local

[root@wangyafei~]# ls /etc/rc.d/init.d/

functions  netconsole  network  README

[root@wangyafei~]# ls /etc/fstab

/etc/fstab

[root@wangyafei~]# touch test09.sh

[root@wangyafei~]# vim test09.sh

[root@wangyafei~]# cat test09.sh

#!/bin/bash

for i in /etc/rc.d/rc.local /etc/rc.d/init.d/functions/etc/fstab;do

    line1=$(grep "^#"$i | wc -l)

    line2=$(grep"^[[:space:]]" $i | wc -l)

    echo "$i # startline total: $line1"

    echo "$i spaceline total: $line2"

done

 

[root@wangyafei~]# bash test09.sh

/etc/rc.d/rc.local # start line total: 11

/etc/rc.d/rc.local space line total: 0

/etc/rc.d/init.d/functions # start line total: 31

/etc/rc.d/init.d/functions space line total: 471

/etc/fstab # start line total: 7

/etc/fstab space line total: 0

[root@wangyafei ~]#

 

9、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;

   #!/bin/bash

    #

    cat /etc/group | cut -d-f1,4 | grep -E ".*:[^[:space:]]"

 

    num=$(cat /etc/group |cut -d-f1,4 | grep -E ".*:[^[:space:]]" | wc -l)

 

    echo"There are such users$num"