磁盘管理、RAID及Shell脚本练习

一、创建一个10G分区,并格式为ext4文件系统;

(1)、 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;

(2)、挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;


  1. [root@N1 ~]# mkfs.ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1 
  2. mke2fs 1.42.9 (28-Dec-2013) 
  3. 文件系统标签=MYDATA 
  4. OS type: Linux 
  5. 块大小=2048 (log=1) 
  6. 分块大小=2048 (log=1) 
  7. Stride=0 blocks, Stripe width=0 blocks 
  8. 655360 inodes, 5242880 blocks 
  9. 104857 blocks (2.00%) reserved for the super user 
  10. 第一个数据块=0 
  11. Maximum filesystem blocks=273678336 
  12. 320 block groups 
  13. 16384 blocks per group, 16384 fragments per group 
  14. 2048 inodes per group 
  15. Superblock backups stored on blocks:  
  16.     16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104,  
  17.     2048000, 3981312 
  18.  
  19. Allocating group tables: 完成 
  20. 正在写入inode表: 完成 
  21. Creating journal (32768 blocks): 完成 
  22. Writing superblocks and filesystem accounting information: 完成    
  23. [root@N1 ~]# tune2fs -o acl /dev/sdb1 
  24. tune2fs 1.42.9 (28-Dec-2013) 
  25. [root@N1 ~]# mount -o noexec,noatime /dev/sdb1 /data/mydata 
  26. [root@N1 ~]# mount | grep /dev/sdb1 
  27. /dev/sdb1 on /data/mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered) 

二、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;


  1. [root@N1 ~]# mkswap /dev/sdb5 
  2. 正在设置交换空间版本 1,大小 = 1048572 KiB 
  3. 无标签,UUID=917fcaf4-68b7-415f-b48d-308eff4d7b9f 
  4. [root@N1 ~]# swapon /dev/sdb5 

三、写一个脚本

(1)、获取并列出当前系统上的所有磁盘设备;

(2)、显示每个磁盘设备上每个分区相关的空间使用信息;


  1. #!/bin/bash 
  2. disk=`fdisk -l | grep -o "/dev/sd[a-z][1-9]\+"` 
  3. echo -e "All disk:\n$disk\n" 
  4. for i in $disk 
  5.  do 
  6.   df -h $i 
  7. done 

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

RAID级别介绍; 一般常用的RAID阶层,分别是RAID 0、RAID1、RAID 2、RAID 3、RAID 4以及RAID 5,再加上二合一型 RAID 0+1﹝或称RAID 10﹞。我们先把这些RAID级别的优、缺点做个比较:

RAID 0 的特点;

也称为条带模式(striped),即把连续的数据分散到多个磁盘上存取。当系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。因为读取和写入是在设备上并行完成的,读取和写入性能将会增加,这通常是运行 RAID 0 的主要原因。但RAID 0没有数据冗余,如果驱动器出现故障,那么将无法恢复任何数据。

RAID 1 的特点;

RAID 1 又称为镜像(Mirroring),一个具有全冗余的模式。RAID 1可以用于两个或2xN个磁盘,并使用0块或更多的备用磁盘,每次写数据时会同时写入镜像盘。这种阵列可靠性很高,但其有效容量减小到总容量的一半,同时这些磁盘的大小应该相等,否则总容量只具有最小磁盘的大小。

RAID 5 的特点;

在希望结合大量物理磁盘并且仍然保留一些冗余时,RAID 5 可能是最有用的 RAID 模式。RAID 5可以用在三块或更多的磁盘上,并使用0块或更多的备用磁盘。就像 RAID 4一样,得到的 RAID5 设备的大小是(N-1)*S。

RAID 5其中一块磁盘出现故障,那么由于有校验信息,所以所有数据仍然可以保持不变。如果可以使用备用磁盘,那么在设备出现故障之后,将立即开始同步数据。如果两块磁盘同时出现故障,那么所有数据都会丢失。RAID5 可以经受一块磁盘故障,但不能经受两块或多块磁盘故障。

RAID 5也是采取独立存取模式,但是其Parity Data 则是分散写入到各个成员磁盘驱动器,因此,除了具备Overlapped I/O 多任务性能之外,同时也脱离如RAID 4单一专属Parity Disk的写入瓶颈。但是,RAI?D 5在座资料写入时,仍然稍微受到”读、改、写过程”的拖累。

RAID 01/RAID 10特点

RAID 10是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

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

当RAID 10有一个硬盘受损,其余硬盘会继续运作。RAID 01只要有一个硬盘受损,同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六个硬盘建RAID 01,镜射再用三个建RAID 0,那么坏一个硬盘便会有三个硬盘脱机。因此,RAID 10较RAID 01常用,零售主板大部份支持RAID 0/1/5/10,但不支持RAID 01。

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


  1. [root@N1 ~]# mdadm -C /dev/md0 -a yes -n 2 -x 1 -c 128 -l 1 /dev/sdb{1,2,3} 
  2. mdadm: /dev/sdb1 appears to contain an ext2fs file system 
  3.        size=10485760K  mtime=Sun Aug 13 15:53:36 2017 
  4. mdadm: Note: this array has metadata at the start and 
  5.     may not be suitable as a boot device.  If you plan to 
  6.     store '/boot' on this device please ensure that 
  7.     your boot-loader understands md/v1.x metadata, or use 
  8.     --metadata=0.90 
  9. mdadm: /dev/sdb3 appears to be part of a raid array: 
  10.        level=raid0 devices=0 ctime=Thu Jan  1 08:00:00 1970 
  11. mdadm: partition table exists on /dev/sdb3 but will be lost or 
  12.        meaningless after creating array 
  13. Continue creating array? y 
  14. mdadm: Defaulting to version 1.2 metadata 
  15. mdadm: array /dev/md0 started. 

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


  1. [root@N1 ~]# mdadm -C /dev/md0 -a yes -n 3  -c 256 -l 5 /dev/sdb{1,2,3} 
  2. mdadm: /dev/sdb1 appears to contain an ext2fs file system 
  3.        size=10485760K  mtime=Sun Aug 13 15:53:36 2017 
  4. mdadm: /dev/sdb1 appears to be part of a raid array: 
  5.        level=raid5 devices=3 ctime=Sun Aug 13 17:37:58 2017 
  6. Continue creating array? y 
  7. mdadm: Defaulting to version 1.2 metadata 
  8. mdadm: array /dev/md0 started. 
  9. [root@N1 ~]# mkfs.ext4 /dev/md0  
  10. mke2fs 1.42.9 (28-Dec-2013) 
  11. 文件系统标签= 
  12. OS type: Linux 
  13. 块大小=4096 (log=2) 
  14. 分块大小=4096 (log=2) 
  15. Stride=64 blocks, Stripe width=128 blocks 
  16. 262144 inodes, 1047552 blocks 
  17. 52377 blocks (5.00%) reserved for the super user 
  18. 第一个数据块=0 
  19. Maximum filesystem blocks=1073741824 
  20. 32 block groups 
  21. 32768 blocks per group, 32768 fragments per group 
  22. 8192 inodes per group 
  23. Superblock backups stored on blocks:  
  24.     32768, 98304, 163840, 229376, 294912, 819200, 884736 
  25.  
  26. Allocating group tables: 完成 
  27. 正在写入inode表: 完成 
  28. Creating journal (16384 blocks): 完成 
  29. Writing superblocks and filesystem accounting information: 完成  
  30. [root@N1 ~]# mkdir /backup 
  31. [root@N1 ~]# blkid /dev/md0 
  32. /dev/md0: UUID="16e3c761-3b8a-40d0-9bb2-c8f5af081504" TYPE="ext4"  
  33. [root@N1 ~]# vim /etc/fstab 
  34. # /etc/fstab 
  35. # Created by anaconda on Fri Jul 14 17:51:07 2017 
  36. # Accessible filesystems, by reference, are maintained under '/dev/disk' 
  37. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 
  38. /dev/mapper/centos-root /   xfs defaults0 0 
  39. UUID=ee8161b1-a9d1-4c9f-a2f5-3ba9200eab5f /boot   xfs defaults0 0 
  40. /dev/mapper/centos-swap swapswapdefaults0 0 
  41. UUID=16e3c761-3b8a-40d0-9bb2-c8f5af081504 /backup  ext4 defaults,acl,noatime 0 0 

七、写一个脚本

(1) 接受一个以上文件路径作为参数;

(2) 显示每个文件拥有的行数;

(3) 总结说明本次共为几个文件统计了其行数;


  1. #!/bin/bash 
  2.  
  3. for i in $@;  
  4.  do 
  5.   echo "lines :`wc -l $i`" 
  6. done 
  7. echo "Count for $# files" 

八、写一个脚本

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

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

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


  1. #!/bin/bash 
  2. if [ $# -lt 2 ];then 
  3. echo "Error,Please input more." 
  4. fi 
  5.  
  6. for i in $@; 
  7.  do 
  8.   useradd $i 
  9.   echo $i | passwd --stdin $i 
  10. done 
  11. echo "Create $# users." 

九、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;


  1. #!/bin/bash 
  2. sum=0 
  3. for i in `seq 1 20`; 
  4.  do 
  5.   useradd visitor$i 
  6.   uid=`id -u visitor$i` 
  7.   let sum=$uid+$sum 
  8. done 
  9. echo "Sum of UID:$sum" 

作者:佚名

来源:51CTO

时间: 2024-09-07 08:07:00

磁盘管理、RAID及Shell脚本练习的相关文章

监视磁盘使用情况的Shell脚本(本地+远程)_linux shell

monitordisk.sh如下 复制代码 代码如下: #!/bin/bash #Updated:2008-03-03 PM By:leif(liangliwen@163.com) EMAIL=/usr/local/bin/email /bin/df -h >/tmp/df.txt USE=`df -H | grep -o [0-9]*% | grep -o '[0-9]\+'` for i in $USE do if (( $i > 95 )) then $EAMIL -s "WA

Linux管理Memcached的shell脚本

如Memcached已在Linux中安装完毕,且被部署到/usr/local/memcached这个路径下,接下来我们来开始为其安装用于启动和停止的服务管理脚本. 首先,通过vi在/etc/rc.d/init.d路径下新建一个名为memcached的脚本文件,命令如下:  代码如下 复制代码 vi /etc/rc.d/init.d/memcached 然后,向其中写入Shell脚本如下:  代码如下 复制代码 #!/bin/sh  #  # chkconfig: 2345 90 50 # des

Linux/Unix shell 脚本监控磁盘可用空间

    Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少.下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考.   1.监控磁盘的空闲空间shell脚本 robin@SZDB:~/dba_scripts/custom/bin> more ck_fs_space.sh #!/bin/bash # -----------------------------------------------------------------------------

linux中的shell脚本管理(二)

在Shell脚本中执行使用if语句的好处是:可以根据特定的条件(eg:判断备份目录是否存在)来决定是否执行某项操作,当满足不同的条件时执行不同的操作(eg:备份目录不存在则创建该目录,否则跳过操作).该文将分别从条件测试操作,if语句结构,应用示例这三个方面讲解if语句在Shell脚本中的应用. 1.条件测试操作: 需要在Shell脚本中有选择性地执行任务时,首先面临的问题就是,如何设置命令执行的条件? 在Shell环境中,可以根据命令执行后返回状态值来判断该命令是否成功执行,当返回值为0是表示

LINUX用户建立秘钥认证实现SHELL脚本管理、分发和部署

环境: ssh server: 192.168.100.29  server.example.com ssh client: 192.168.100.30  client.example.com 通过root用户建立秘钥认证实现SHELL脚本管理,分发,部署 首先client端创建秘钥对,并将公钥分发给需要登录的SSH服务端 注:公钥相当于锁,私钥相当于钥匙,我们这里相当于在客户端创建一对钥匙和锁,想要做到SSH免密码登录,就相当于我们将锁分发到服务端并装锁,然后客户端就可以利用钥匙开锁. 一.

获取磁盘IO与系统负载Load的shell脚本

本节介绍的几段shell脚本,可以用于提取磁盘的I/O信息,系统负载Load信息等   1,提取系统负载信息 复制代码 代码如下: #!/bin/sh host=$(hostname) channel=$(hostname | sed 's/[0-9]//g') runday=$(date +%Y-%m-%d) IPhost=$(/sbin/ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ prin

php管理nginx虚拟主机shell脚本

  使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考  代码如下   #!/usr/bin/php -q <?php   start: fwrite(STDOUT,"===========Vhost Script===========\n"); fwrite(STDOUT,"= Choose an operation \n"); fwrite(STDOUT,"

用Linux Shell脚本轻松管理Radius服务器

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1567085 公司的无线环境采用mac地址认证的方式,mac地址被绑定到Radius的users配置文件中,将注册了的mac地址作为用户名和密码.为了方便的管理这些mac地址,自己写了一个shell脚本来管理. shell脚本所特有的强大文本处理能力和各种命令函数的组合,使得管理员的工作能轻松不少. 下面就列出该脚本

php管理nginx虚拟主机shell脚本实例_php技巧

本文实例讲述了php管理nginx虚拟主机shell脚本,分享给大家供大家参考.具体分析如下: 使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考: 复制代码 代码如下: #!/usr/bin/php -q <?php   start: fwrite(STDOUT,"===========Vhost Script===========\n"); fwrite(STDOUT,"=