首页 > 代码库 > Linux作业(4)-02

Linux作业(4)-02

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

RAIDRedundantArrays of Independent Disks(磁盘阵列),有独立磁盘构成的具有冗余能力的阵列之意。

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

 

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

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

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


 

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

虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为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占用率同样也更高,而且磁盘的利用率比较低。

RAID 1+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/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
 
 
磁盘 /dev/sda:128.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-root:42.9 GB, 42945478656 字节,83877888 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
 
 
磁盘 /dev/mapper/cl-swap:4294 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/sdb:42.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 as a boot device.  If you plan to
    store ‘/boot‘ on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=http://www.mamicode.com/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 : Wed Feb  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 : Wed Feb  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 blocks super 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”的类型更改为“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/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.58 GB)
  Used Dev Size : 4190208 (4.00 GiB 4.29 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    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 $i exists"

    else
        useradd $i
            echo $i | passwd --stdin $i &> /dev/null
            echo "Add user $i finished"
        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 # start line total: $line1"
    echo "$i space line 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"

 


本文出自 “Argorse” 博客,请务必保留此出处http://wangyafei.blog.51cto.com/4789821/1894537

Linux作业(4)-02