马哥教育网络班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

相关推荐

  • 初识linux:计算机的组成及功能

    一、描述计算机的组成及功能。 由冯诺伊曼提出计算机体系结构(5大部件)控制器(Controller):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 (cpu由控…

    2017-12-03
  • Nginx+Apache+Tomcat实现LANMT动静分离

    Nginx+Apache+Tomcat实现LANMT动静分离          目的:    本次实验主要目的为实现以Nginx作为反向代理,并实现分别访问动静态服务的效果。   拓扑结构:     &nbsp…

    Linux干货 2016-12-05
  • Linux三剑客之sed

    sed 简介 sed 工作原理 命令格式 常用选项: 地址定界: 编辑命令: 替换标记: sed元字符集(正则表达式) 高级编辑命令: sed用法实例 作业: 选定行的范围:,(逗号) 删除操作:d命令 显示模式空间内容 追加(行下):a\命令 插入(行上):i\命令 退出:q命令 多点编辑:e命令 从文件读入:r命令 写入文件:w命令 替换操作:s命令 替…

    Linux干货 2016-08-11
  • varnish学习总结

    什么是web cache?   Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在与Web服务器和客户端(浏览器)直接的副本。缓存会根据进来的请求保存输出内容的副本;当下一个请求到来的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求还是向源服务器再次发送请求。       …

    Linux干货 2015-07-15
  • 配置Nginx作为反向代理服务器

    配置Nginx作为反向代理服务器      一、nginx作为反向代理的工作模型: 1、nginx作为反向代理的工作模型       nginx工作在应用层,其能理解并可以提取出http请求报文中的首部信息中的请求方法、url、http协议版本等信息。   &…

    Linux干货 2016-10-29
  • 磁盘配额、Raid及逻辑卷LVS

    磁盘配额、Raid及逻辑卷LVS 磁盘配额 Linux是多用户的操作系统,同一时间可能有多个用户登录到系统上进行操作,某些用户可能会写入很多数据,占用大量磁盘空间,导致其他用户没有磁盘空间可用。如何限定某个用户对磁盘的使用空间大小,以及可使用的inode多少,也就是限定可创建多少个文件,这就是磁盘配额管理的作用。 磁盘配额特点 在内核中执行; 以文件系统为单…

    Linux干货 2016-09-19

评论列表(1条)

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

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