马哥教育网络班21期+第7周课程练习

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

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

[root@centos ~]# mke2fs -t ext4 -b 2048 -m 2 -L "MYDATA"  /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=MYDATA
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
328440 inodes, 2626610 blocks
52532 blocks (2.00%) reserved for the super user
First data block=0
[root@centos ~]# mount  -o acl /dev/sdb1 /test/
[root@centos ~]# mount 
/dev/mapper/vg_centos-lv_root on / type ext4 (rw)
/dev/sdb1 on /test type ext4 (rw,acl)

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

[root@centos ~]# mount -o noexec,noatime /dev/sdb1 /data/mydata/
[root@centos ~]# mount 
/dev/mapper/vg_centos-lv_root on / type ext4 (rw)

/dev/sdb1 on /data/mydata type ext4 (rw,noexec,noatime)

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

[root@centos ~]# mkswap /dev/sdb1 && swapon /dev/sdb1
Setting up swapspace version 1, size = 1060252 KiB
no label, UUID=fb9d419c-2190-4e1b-964c-0e2614bc74f0
[root@centos ~]# free 
             total       used       free     shared    buffers     cached
Mem:       1012292     913096      99196       3664      34452     544528
-/+ buffers/cache:     334116     678176
Swap:      2633112          8    2633104
[root@centos ~]# swapoff /dev/sdb1
[root@centos ~]# free 
             total       used       free     shared    buffers     cached
Mem:       1012292     913352      98940       3664      34192     545180
-/+ buffers/cache:     333980     678312
Swap:      1572860          8    1572852

3、写一个脚本

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

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

[root@centos ~]# /test/exercise1.sh 
total diskes:
 
 Disk /dev/sda
Disk /dev/sdb
diskes used: 
 Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
                       13G  3.7G  8.4G  31% /
tmpfs                 495M   76K  495M   1% /dev/shm
/dev/sda1             477M   29M  424M   7% /boot
/dev/sr0              4.4G  4.4G     0 100% /media/CentOS_6.6_Final
[root@centos ~]# vim /test/exercise1.sh 
[root@centos ~]# /test/exercise1.sh 
total diskes:
 Disk /dev/sda
Disk /dev/sdb
diskes used: 
 Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
                       13G  3.7G  8.4G  31% /
tmpfs                 495M   76K  495M   1% /dev/shm
/dev/sda1             477M   29M  424M   7% /boot
/dev/sr0              4.4G  4.4G     0 100% /media/CentOS_6.6_Final
[root@centos ~]# cat /test/exercise1.sh 
#!/bin/bash
disk=$(fdisk -l | grep "Disk /dev/[sh]d" | cut -d: -f1)
echo -e   "total diskes:\n $disk"
diskused=$(fdisk -l | grep "/dev/[sh]d[a-z][1-9]"| awk '{print $1}'| df -h)
echo  -e "diskes used: \n $diskused"

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

首先 :RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量;

       通过数据校检提供容错功能。

RAID0 : n>=2,磁盘容量不相等时,以最小容量为基准,取每个磁盘的容量组成raid0,并行读写,性能最好,但无容错能力,利用率100%

RAID1 : n>=2,磁盘容量不相等时,以最小容量为基准,每个磁盘存储原始数据的镜像,成本高,有冗余,利 用率50%

RAID2 :n>=3 采用海明码做数据校检,条块单位是位或者字节,校验码存储到阵列中的一个磁盘上,其他磁盘并行读写,有冗余,校验盘有可能成为瓶颈。

RAID3 :n>=3 采用奇偶校验码码做数据校检,条块单位是位或者字节,校验码存储到阵列中的一个磁盘上,其他磁盘并行读写,有冗余,校验盘有可能成为瓶颈。

RAID4 : n>=3 采用奇偶校验码码做数据校检,条块单位是数据块,校验码存储到阵列中的一个磁盘上,其他 磁盘并行读写,有冗余,校验盘有可能成为瓶颈。

RAID4 : n>=3 采用奇偶校验码码做数据校检,条块单位是数据块,校验码存储到阵列中的一个磁盘上,其他 磁盘并行读写,有冗余,校验盘有可能成为瓶颈。

RAID5 :n>=3,把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,没有独立的奇偶校验盘,所有校验信息分散放在所有磁盘上, 只占用一个磁盘的容量,并行读写,可以坏一块,利用率(n-1)/n。   

RAID10 :先做raid1镜像阵列,然后条带阵列。

RAID01 :先做条带阵列,再做镜像阵列,条带磁盘坏一块,数据不容易恢复,冗余性不好,不建议使用。

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

[root@centos ~]# mdadm -C /dev/md0  -n3  -l 1  -c 128 -x1 /dev/sdb{1,2,3}
[root@centos ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
[root@centos ~]# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdb3[2](S) sdb2[1] sdb1[0]
      2102400 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

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

[root@centos ~]# mdadm -C /dev/md0  -n2  -l 5  -c 256 -x1 /dev/sdb{1,2,3}
[root@centos ~]# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md0 : active raid5 sdb2[3] sdb3[2](S) sdb1[0]
      2102272 blocks super 1.2 level 5, 256k chunk, algorithm 2 [2/2] [UU]     
unused devices: <none>
[root@centos ~]# mkfs -t ext4 /dev/md0
[root@centos ~]# cat /etc/fstab 
/dev/md0   /backup         ext4  noatime,acl 0 0  
[root@centos ~]# mount -a
[root@centos ~]# mount 
/dev/md0 on /backup type ext4 (rw,noatime,acl)

7、写一个脚本

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

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

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

[root@centos test]# ./exercise3.sh /etc/passwd
34 /etc/passwd
filesnumber:1
[root@centos test]# ./exercise3.sh /etc/passwd /etc/issue
34 /etc/passwd
3 /etc/issue
filesnumber:2
[root@centos test]# ./exercise3.sh /etc/passwd /etc/issue /etc/
34 /etc/passwd
3 /etc/issue
filesnumber:2
[root@centos test]# ./exercise3.sh
must input files!
[root@centos test]# ./exercise3.sh /etc/passwd /etc/issue /etc/ /etc/rc.d/rc.sysinit 
34 /etc/passwd
3 /etc/issue
687 /etc/rc.d/rc.sysinit
filesnumber:3
[root@centos test]# cat exercise3.sh 
#!/bin/bash
declare -i count 
if [ $# -gt 0 ];then
for i in $* ; do
if [ ! -f $i ];then
continue
fi
wc -l $i
if [ $? -eq 0 ];then
let count++
fi
done
echo -e "filesnumber:$count"
fi
if [ $# -eq 0 ]; then 
echo "must input files!"
fi

8、写一个脚本

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

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

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

[root@centos test]# ./exercise4.sh test1 test2
at least 3 users!
[root@centos test]# ./exercise4.sh test1 test2 test3
Changing password for user test1.
passwd: all authentication tokens updated successfully.
user:test1 added
Changing password for user test2.
passwd: all authentication tokens updated successfully.
user:test2 added
Changing password for user test3.
passwd: all authentication tokens updated successfully.
user:test3 added
[root@centos test]# vim /test/exercise4.sh 
[root@centos test]# ./exercise4.sh test1 test2 test3
Changing password for user test1.
passwd: all authentication tokens updated successfully.
user:test1 added
Changing password for user test2.
passwd: all authentication tokens updated successfully.
user:test2 added
Changing password for user test3.
passwd: all authentication tokens updated successfully.
user:test3 added
total 3
[root@centos test]# cat exercise4.sh 
#!/bin/bash
declare -i count 
if [ $# -lt 3 ];then
echo "at least 3 users!"
exit 12
fi
for i in $*;do
id $i &>/dev/null
if [ $? -eq 0 ];then
echo "$i exsits!"
else
useradd $i && echo "$i" | passwd --stdin "$i"
let count++
echo "user:$i added"
fi
done
echo "total $count"

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

[root@centos test]# cat exercise1.sh 
#/bin/bash
for m in {1..20};do
useradd visitor$m && echo "user:visitor$m added!" || echo "user exsits!" 
done
declare -i sum=0
for i in $(cat /etc/passwd | cut -d: -f3 | tail -20);do
let sum+=$i
done
echo "users id sums: $sum"

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

[root@centos test]# cat exercise2.sh 
#/bin/bash
declare -i sum1=0
declare -i sum2=0
for i in {/etc/rc.d/rc.sysinit,/etc/rc.d/init.d/functions,/etc/fstab};do
      let sum1+=$(cat $i | grep "^[#]" | wc -l)
      let sum2+=$(cat $i | grep "^$" | wc -l)
done
echo "#begins lines:$sum1"
echo "spaces lines:$sum2"
[root@centos test]# bash -x exercise2.sh
#begins lines:91
+ echo 'spaces lines:173'
spaces lines:173

11、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;

[root@centos test]# cat exercise3.sh 
#/bin/bash
declare -i sum1=0
for i in $(cat /etc/passwd | cut -d: -f3);do
 let sum+=$i
done
printf "%s,%s,%s,%d,$(cat /etc/passwd | cut -d: -f1,3,7), uidsums:$sum \n"
[root@centos test]# ./exercise3.sh 
ntp:38:/sbin/nologin
apache:48:/sbin/nologin
pulse:497:/sbin/nologin
sshd:74:/sbin/nologin
tcpdump:72:/sbin/nologin
derulo:500:/bin/bash, uidsums:68821

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

[root@centos test]# cat exercise5.sh 
#/bin/bash
declare -i sum=0
for i in $(cat /etc/passwd | cut -d: -f1 );do
   id $i | grep "," | cut -d " " -f1 | egrep -o "\(.*\)" | tr "()" " "
   id $i | grep "," &>/dev/null
if [ $? -eq 0 ];then
let sum++
fi
done
echo "uidsums:$sum"
[root@centos test]# ./exercise5.sh 
 bin 
 daemon 
 adm 
 postfix 
 test 
 test1 
uidsums:6

13、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;

[root@centos ~]# pvcreate /dev/sd[b,c]
[root@centos ~]# vgcreate -s 8M  myvg  /dev/sd[b,c] 
[root@centos ~]# lvcreate -L 5G -n /dev/myvg/mylv1 /dev/myvg
[root@centos ~]# mkfs -t ext4 /dev/myvg/mylv1 
[root@centos ~]# cat /etc/fstab 
/dev/myvg/mylv1         /users                  ext4    acl              0 0
[root@centos ~]# mount -a
[root@centos ~]# mount
/dev/mapper/myvg-mylv1 on /users type ext4 (rw,acl)

14、新建用户magedu;其家目录为/users/magedu,而后su切换至此用户,复制多个文件至家目录;

[root@centos ~]# su - magedu
[magedu@centos ~]$ cp /etc/issue /etc/fstab ./

15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;

[root@centos users]# df -h
/dev/mapper/myvg-mylv1
                      4.8G   10M  4.6G   1% /users
[root@centos users]# lvextend -L 9G -n /dev/myvg/mylv1
[root@centos users]# resize2fs /dev/myvg/mylv1 
[root@centos users]# ls
index.html  lost+found

16、缩减mylv1至7G,确保缩减完成后原有数据完全可用;

[root@centos ~]# umount /users/
[root@centos ~]# e2fsck -f /dev/myvg/mylv1
[root@centos ~]# resize2fs /dev/myvg/mylv1 7G
[root@centos ~]# lvreduce -L 7G -n /dev/myvg/mylv1

17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;

[root@centos users]# cp -a /etc/issue ./
[root@centos users]# ls
issue  lost+found
[root@centos ~]# lvcreate -L 6G -s -n mylv1s myvg/mylv1
[root@centos ~]# mkdir /snapshot
[root@centos ~]# mount /dev/myvg/mylv1s /snapshot/
[root@centos ~]# cp -a /etc/fstab /users/
[root@centos test]# cd /users/
[root@centos users]# ls
fstab  issue  lost+found
[root@centos users]# cd /snapshot/
[root@centos snapshot]# ls
issue  lost+found

原创文章,作者:Snoo,如若转载,请注明出处:http://www.178linux.com/25736

(0)
SnooSnoo
上一篇 2016-08-01
下一篇 2016-08-01

相关推荐

  • 2016/08/21:shell遗留select,包管理器rpm,yum

    select:搭配case更好的显示选项     这个命令用来创建菜单,按数字排列,并等待用户输入,输入对应数字,执行相应操作,更清楚明了     普通版:select var in list        &…

    Linux干货 2016-08-24
  • Nginx基础

    Nginx基础 目录 Nginx概述 Nginx的优点 Nginx相比Apache 编译安装Nginx Nginx配置文件讲解 ngx_http_access_module模块 ngx_http_auth_basic_module模块 ngx_http_log_module模块 ngx_http_stub_status_module模块 Nginx概述 En…

    Linux干货 2016-11-01
  • 程序包管理:rpm、yum以及(make)源代码编译安装

    程序包管理:rpm、yum以及(make)源代码编译安装 在Linux上安装程序一般都有三种方法:源代码编译安装,rpm包安装和rpm包的前端安装yum, (rpm,和yum程序包管理器是针对CentOS6平台的) 程序包管理方式都大同小异:  源代码–>目标二进制格式(二进制程序、库文件、配置文件、帮助文件)–&gt…

    Linux干货 2017-01-10
  • Linux自动备份脚本

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1541163        今天网上一个朋友问了我一个shell的题目,让我帮他做下。下面是题目以及解题思路。 题目:…

    Linux干货 2016-08-15
  • linux内核(kernel)版本号的意义

      在linux下有一个目录,即/usr/src/kernels/目录,下面记载着一个linux系统的内核文件, 例如:2.6.18-164.el5-x86_64、2.6.18-8.el5-x86_64和2.6.18-194.el5-x86_64等,这些文件编号意味着什么呢?例如2.6.18代表着什么?el5代表着什么?x86_64又代表着什么? …

    Linux干货 2016-01-14
  • 整型、浮点型在内存中的存储方式

      在学习C语言的过程中,有时候会想,数据到底是以什么样的方式在内存中存储的呢?经过一段时间的查阅资料,小编终于整理了一些…… 以VC6.0编译器为测试环境(int型为4Byte) 先简介一下大小端模式,具体资料可参考 http://blog.csdn.net/ce123_zhouwei/article/details/6971544  …

    Linux干货 2016-01-14

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-02 11:33

    写的很好,排版也很棒,加油