磁盘管理及shell脚本编程练习
转至:http://www.178linux.com/88405
1、创建一个10G分区,并格式为ext4文件系统
- a) 要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl;
~]# mke2fs –t ext4 –b 2048 –m 2 –L MYDATA /dev/sda3
- b) 挂载至/data/madata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
~]# mount –o acl,noatime,noexec /dev/sda3 /data/mydata
2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之
~]# partx –a /dev/sda
~]# mkswap /dev/sda4
~]# swapon /dev/sda4
3、写一个脚本
- a) 获取并列出当前系统上所有磁盘设备
- b) 显示每个磁盘设备上每个分区相关的空间使用信息
#!/bin/bash
disk=$(ls /dev/sd[a-z])
echo $disk
fdisk –l /dev/sd[a-z]
4、总结RAID的各个级别及其组合方式和性能的不同
磁盘阵列的英文全名是RedundantArrays of lnexpensive Disks (RAID),即容错廉价磁盘阵列。RAID 可以通过一些技术将多个较小的磁盘整合成为一个较大的磁盘设备;而这个较大的磁盘功能可不止是存储而已。它还具有数据保护的功能。整个RAID由于选择的等级(level)不同。而使得整合后的磁盘具有不同的功能。基本常见的等级有这几种。
RAID-0(等量模式,stripe):性能最佳
这种模式如果使用相同型号与容量的磁盘来组成时,效果较佳。这种模式的RAID会将磁盘先切出等量的区块,然后当一个文件要写入RAID时。该文件会依据块的大小切割好。之后再依序放到各个磁盘里面去。由于每个磁盘会交错存放数据。因此当你的数据要写入RAID时。数据会被等量放置在各个磁盘上面。使用此等级必须要自行负担数据损毁的风险,如果某一块磁盘损毁了,那么文件数据将缺一块。此时这个文件就损毁了。由于每个文件都是这样存放的。因此RAID-0只要有任何一块磁盘损毁。在RAID上面的所有数据都会丢失而无法读取。
RAID-1(映像模式。mirror):完整备份
这种模式也是需要相同的磁盘容量,最好是一模一样的磁盘。如果是不同容量的磁盘组成RAID-1时。那么容量将以最小的那一块磁盘为主。这种模式主要是让同一份数据完整保存在两块磁盘上面。因此,整体RAID的容量几乎少了一半。由于两块磁盘内的数据一模一样,所以任何一块硬盘损毁时,数据还是可以完整保留下来。所以说RAID-1最大的优点大概就在于数据的备份。不过由于磁盘容量有一半用在备份,因此总容量会是全部磁盘容量的一半。虽然RAID-1的写入性能不佳,不过读取的性能还可以。这是因为数据有两份在不同的磁盘上面,如果多个进程在读取同一条数据是,RAID会自行取得最佳的读取平衡。
RAID 0+1,RAID 1+0
RAID 0+1就是先让两块磁盘组成RAID 0 ,并且这样的设置共有两组;然后将这两组RAID 0再组成一组RAID 1。这就是RAID 0+1。反过来说,RAID1+0就是先组成RAID-1再组成RAID-0的意思。由于具有RAID 0和RAID 1的优点,所以性能得到提升,并且数据也得以备份。但同时总容量会少一半用来作为备份。
RAID 5:性能与数据备份的均衡考虑
RAID-5至少需要三块以上的磁盘才能组成这种类型的磁盘阵列。这种磁盘阵列的数据写入优点类似RAID-0,不过每个循环的写入过程中,在每块磁盘还加入一个同为检查数据,这个数据会记录其他磁盘的备份数据,用于当有磁盘损毁时的救援。由于有同位检查码,因此RAID5的总容量护士整体磁盘数量减一块。当损毁的磁盘数量大于等于两块时,这整组RAID 5的数据就损毁了。因为RAID 5 默认仅能支持一块磁盘的损毁情况。
5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128K
~]# mdadm –C /dev/md0 –l 1 –n 2 –a yes –c 128 –x 1 /dev/sdc{1,2,3}
6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能
~]# mdadm -C /dev/md1 -a yes -n 3 -c 256 -l 5 /dev/sdd{1,2,3}
~]# blkid /dev/md1
~]# mkdir /backup
~]# mount /dev/md1 /backup/
7、写一个脚本
- a) 接受一个以上文件路径作为参数
- b) 显示每个文件拥有的行数
- c) 总结说明本次共为几个文件统计了其行数
#!/bin/bash
#
declare –I sum=$#
if [$# -ep 0]; then
echo “please input the file path”
exit 1
fi
for I in $*;do
if [-f $i];then
line=$(wc –l $i | cut –d “ ” –f 1)
ecgo “$i has $line lines”
fi
done
echo “there are $sum files total.”
8、写一个脚本
- a) 传递两个以上字符串当作用户名
- b) 创建这些用户,且密码同用户名
- c) 总结说明共创建了几个用户
#!/bin/bash
#
declare –I sum=$#
if [$# -lt 1];then
echo “please input at least two users”
exit 1
fi
for i in $*;do
useradd $i
password=$i
echo $password | passwd –stdin $i
done
echo ”Creatde users are $sum total.”
9、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和
#!/bin/bash
#
sum=0
for I in {1..20};do
useradd $i
idsum=$(id –u $i)
let sum+=$idsum
done
echo “idsum=$sum”