马哥教育网络班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文件系统,所有的大结构,多数据凑到一块的时候,单一的管理是没有能力处理这样庞大规模的存在的。所谓“君王不下县”也就是这个道理。要系统的,规范的管理一个国家,存在着省、市这样的层级结构。linux系统也是这样,将整个系统划分为若干个分区,实现不同功能,不同层级的规范管理,这就是创建磁盘分区的意义。既然…

    Linux干货 2016-09-01
  • LVS-NAT负载均衡两个php应用(wordpress,discuzx)( Blog 19)

    结果:需要会话保持,需要共享存储;

    Linux干货 2017-12-20
  • 浅述sed命令

    1、sed工作原理       sed(stream editor)是一种流编辑器,本身也是一个管道命令,可以分析编辑标准输入(standard input),包括对数据进行替换、删除、新增、选取特定行等等。运行时以行为单位,每次只处理一行的内容,因此它又被称为行编辑器。sed还可与正则表达式配合使用,从而简…

    Linux干货 2016-08-10
  • N26-上海-莫言

    持续更新…

    Linux干货 2016-12-26
  • N26_第二周作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理命令:cp,mv,rm 1、cp命令 功能说明:复制copy语法格式:        单源复制:  cp [OPTION]… [-T] SOURCE DEST  …

    Linux干货 2017-02-21
  • 公钥和私钥的原理

          今天上课老师讲到公钥和秘钥,模模糊糊听了个大概,始终还是不能够详细的理解公钥怎么会事?私钥怎么会事?工作原理是怎么的?今天在网上找了半天,通过查看大家对这个密钥对的理解,总算弄清楚了,咱就把我的心得写出来给大家对密钥对有疑问的同志们看看。      公钥和私钥就是俗称…

    Linux干货 2016-11-30

评论列表(1条)

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

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