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

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

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

[root@localhost ~]#mke2fs -t ext4 -b 2048 -m 2 -L "MYDATA" /dev/sdb1
[root@localhost ~]#mkdir -p /MYDATA
[root@localhost ~]#mount -o acl /dev/sdb1 /MYDATA
[root@localhost ~]# mount
...
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /MYDATA type ext4 (rw,acl)

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

[root@localhost ~]#mkdir -pv /data/mydata
[root@localhost ~]# mount -t ext4 -o noexec,noatime /dev/sdb1 /data/mydata/
[root@localhost ~]# mount
...
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /data/mydata type ext4 (rw,noexec,noatime)

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

注:只能把整个盘做为swap分区,不然无法使用

[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           995        356        639          0        121         78
-/+ buffers/cache:        156        839
Swap:         2015          0       2015

[root@localhost ~]# fdisk /dev/sdb
...
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): 2610

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 82
Changed system type of partition 3 to 82 (Linux swap / Solaris)

Command (m for help): w
....
Syncing disks.
[root@localhost ~]# fdisk -l /dev/sdb
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+  82  Linux swap / Solaris
[root@localhost ~]# mkswap -L SWAP1 /dev/sdb1
Setting up swapspace version 1, size = 20964788 KiB
LABEL=SWAP1, UUID=8910028d-99b2-4ac8-84d8-83ecfdee3af9
[root@localhost ~]# swapon /dev/sdb1
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           995        371        624          0        121         78
-/+ buffers/cache:        171        824
Swap:        22489          0      22489

3、写一个脚本

(1)、获取并列出当前系统上的所有磁盘设备;
  (2)、显示每个磁盘设备上每个分区相关的空间使用信息;

#!/bin/bash
#
echo "disk info:$(fdisk -l | grep -o  "^Disk[[:space:]]/dev/s[a-z]\+"|cut -d" " -f2)"
for i in $(fdisk -l | grep -o  "^Disk[[:space:]]/dev/s[a-z]\+"|cut -d" " -f2);do
	INFO=`fdisk -l $i`
	echo "$i Disk INFO $INFO"
done

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

级别:
RAID-0: 0,条带卷,strip; 
RAID-1:	1,镜像卷,mirro; 
RAID-2
...
RAID-5
RADI-6
RAID-01
RAID-10
		
RAID-0:
读、写性能提升;
可用空间;N*min(S1,S2,...)
无容错能力
最少磁盘数:2,2+
RAID-1:
读性能提升
写性能略有下降;
可用空间 1*min(s1,s2,....)
有冗余能力
至少磁盘数:2,2+
RAID-5 
读写性能提升
可用空间:(N-1)*min(S1,S2...)
有容错能力:1块磁盘
至少磁盘数:3,3+
RAID-6:
读、写性能提升
可用空间:(N-2)*min(S1,S2...)
有容错能力:2块磁盘
至少磁盘数:4,4+
混合	
RAID-10: 
读、写性能提升
可用空间:N*MIN(S1,S2...)/2
有容错能力:每一组镜像最多只能坏一块;
至少磁盘数:4,4+

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

[root@localhost ~]# fdisk /dev/sdb
...
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-6527, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +10G

Command (m for help): N
Command action
   e   extended
   p   primary partition (1-4)
P
Partition number (1-4): 2
First cylinder (1307-6527, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-6527, default 6527): +10G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (2613-6527, default 2613): 
Using default value 2613
Last cylinder, +cylinders or +size{K,M,G} (2613-6527, default 6527): +10G

Command (m for help): P
......
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  83  Linux
/dev/sdb2            1307        2612    10490445   83  Linux
/dev/sdb3            2613        3918    10490445   83  Linux

Command (m for help): W
...
Syncing disks.
[root@localhost ~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 1 -c 128 /dev/sdb{1,2,3}
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Aug  9 12:27:30 2016
     Raid Level : raid1
     Array Size : 10482176 (10.00 GiB 10.73 GB)
  Used Dev Size : 10482176 (10.00 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Tue Aug  9 12:27:38 2016
          State : clean, resyncing 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

  Resync Status : 12% complete

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 622d8814:e0132731:bbc31b2a:a8168e65
         Events : 1

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2

       2       8       19        -      spare   /dev/sdb3

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

注:创建4个以上的分区盘
[root@localhost ~]# mdadm -C /dev/md0 -n 3 -l 5 -a yes -c 256 -x 1 /dev/sdb{1,2,3,4}
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Aug 11 10:48:48 2016
     Raid Level : raid5
     Array Size : 4204544 (4.01 GiB 4.31 GB)
  Used Dev Size : 2102272 (2.00 GiB 2.15 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Thu Aug 11 10:49:01 2016
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 256K

 Rebuild Status : 41% complete

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 9e115ad8:b5e1867e:d9ec3a2f:17625ac0
         Events : 7

    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       4       8       23        2      spare rebuilding   /dev/sdb7

       3       8       24        -      spare   /dev/sdb8

[root@localhost ~]# mke2fs -t ext4 /dev/md0
[root@localhost ~]# mount -a -o noatime,acl /dev/md0 /backup
[root@localhost ~]# vim /etc/fstab
末行加入/dev/md0 /backup ext4   rw,noatime,acl        0 0

7、写一个脚本

(1) 接受一个以上文件路径作为参数;
  (2) 显示每个文件拥有的行数;
  (3) 总结说明本次共为几个文件统计了其行数;

#!/bin/bash
#
declare -i sum=0
if [ $# -lt 1 ];then
	echo "Useage:bash.sh file1_name file2_name.."
	exit 1
fi
for i in $*;do
	if [ -d $i ];then
		echo " $i is a directory,please write a file path."
		exit 0
	else
		num=`wc -l $i | cut -d" " -f1`
		sum+=num
	fi
done

echo "$# files,total file lines:$sum"

8、写一个脚本

(1) 传递两个以上字符串当作用户名;
  (2) 创建这些用户;且密码同用户名;
  (3) 总结说明共创建了几个用户;

#!/bin/bash
#
declare -i usersum=0
if [ $# -le 1 ];then
	echo "Usage must two users to bash:bash.sh user1 user2 .."
	exit 1
fi
for i in $*;do
	if id $i &> /dev/null;then
	   	echo "User $i has exist."
	else
		useradd $i &> /dev/null 
		result=$?
		if [ $result -eq 0 ];then
			echo "$i" | passwd --stdin $i &> /dev/null
			echo "Add $i finish!"
			let usersum++
		else
			echo "Add $i fail "
			exit 1
		fi
	fi
done
echo "Total add $usersum users!"

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

#!/bin/bash
#
declare -i idsum=0;
for i in {1..20};do
	if id visitor$i &> /dev/null ;then
		echo "visitor$i has exist!"
		idnum=`cat /etc/passwd | grep visitor$i | head -1| cut -d: -f3`
	else
		useradd visitor$i &> /dev/null
		idnum=`awk -F: '{print $3}' /etc/passwd | tail -1`
	fi
	idsum+=$idnum
	let i++
done
echo "idsum=$idsum"

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

#!/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
	lines=`grep "^#" $i | wc -l`
	spacelines=`grep "^$" $i | wc -l`
	sum1+=$lines
	sum2+=$spacelines
done
echo "Total #lines:$sum1 lines."
echo "Total space lines:$sum2 lines."

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

#!/bin/bash
#
declare -i uidsum=0
while read line;do
     	grepbash=`echo $line | grep -o "/bin/bash$"`
	result=$?
	if [ $? -eq 0 ];then
		user=`echo $line |cut -d: -f1`
		uidnum=`echo $line | cut -d: -f3`
		echo "user is $user,uid is $uidnum"
		uidsum+=$uidnum
	fi
done <  /etc/passwd
echo "Uid total sum is $uidsum "

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

#!/bin/bash
#
declare -i usersum=0
while read line;do
	username=`echo $line | cut -d: -f1`
	user_group=`id $username | cut -d" " -f3|grep -o ","`
	result=$?
	if [ $result -eq 0 ];then
		echo "附加组用户:$username"
		let usersum++
	fi
done < /etc/passwd
echo "总共有附加组用户$usersum个."

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

[root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8000b224

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       13054   104856223+   5  Extended
/dev/sdb5               1        1306    10490382   83  Linux
/dev/sdb6            1307        2612    10490413+  83  Linux
[root@localhost ~]# pvcreate /dev/sdb{5,6}
  Physical volume "/dev/sdb5" successfully created
  Physical volume "/dev/sdb6" successfully created
[root@localhost ~]# pvs
  PV         VG       Fmt  Attr PSize  PFree 
  /dev/sda2  VolGroup lvm2 a--  99.51g     0 
  /dev/sdb5           lvm2 ---  10.00g 10.00g
  /dev/sdb6           lvm2 ---  10.00g 10.00g
[root@localhost ~]# vgcreate -s 8M myvg /dev/sdb5 /dev/sdb6
  Volume group "myvg" successfully created
[root@localhost ~]# vgs myvg
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   1   0 wz--n- 20.00g 15.00g
[root@localhost ~]# vgdisplay myvg 
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               20.00 GiB
  PE Size               8.00 MiB
  Total PE              2560
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2560 / 20.00 GiB
  VG UUID               cahcpL-xpFk-pLj2-57Fp-Cce9-SeA3-GHEnAE
  [root@localhost ~]# lvcreate -L 5G -n mylv1 myvg
  [root@localhost ~]# lvs myvg/mylv1
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1 myvg -wi-a----- 5.00g 
[root@localhost ~]# mke2fs -t ext4 /dev/myvg/mylv1
[root@localhost ~]# mkdir -p /users
[root@localhost ~]# mount -a -o acl /dev/myvg/mylv1 /users/
[root@localhost ~]# mount
...
/dev/mapper/myvg-mylv1 on /users type ext4 (rw,acl)

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

[root@localhost ~]# useradd -d /users/magedu magedu
[magedu@localhost root]$ cd /users/magedu/
[magedu@localhost ~]$ cp /etc/fstab /etc/inittab ./
[magedu@localhost ~]$ ll
total 8
-rw-r--r--. 1 magedu magedu 860 Aug  9 16:00 fstab
-rw-r--r--. 1 magedu magedu 884 Aug  9 16:00 inittab

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

[root@localhost ~]# lvs myvg/mylv1
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1 myvg -wi-ao---- 5.00g                                                    
[root@localhost ~]# lvextend -L +4G /dev/myvg/mylv1 
  Size of logical volume myvg/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents).
  Logical volume mylv1 successfully resized
[root@localhost ~]# resize2fs /dev/myvg/mylv1 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv1 is mounted on /users; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mylv1 to 2359296 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 2359296 blocks long.
[root@localhost ~]# df -lh
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/mapper/myvg-mylv1
                      8.8G   12M  8.3G   1% /users
[root@localhost ~]# cat /users/magedu/fstab 

#
# /etc/fstab
....
proc                    /proc                   proc    defaults        0 0

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

[root@localhost ~]# umount /dev/myvg/mylv1 
[root@localhost ~]# mount
...
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
[root@localhost ~]# e2fsck -f /dev/myvg/mylv1 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg/mylv1: 18/589824 files (0.0% non-contiguous), 72678/2359296 blocks
[root@localhost ~]# e2fsck -f /dev/myvg/mylv1 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg/mylv1: 18/589824 files (0.0% non-contiguous), 72678/2359296 blocks
[root@localhost ~]# lvreduce -L -2G /dev/myvg/mylv1 
  WARNING: Reducing active logical volume to 7.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv1? [y/n]: y
  Size of logical volume myvg/mylv1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents).
  Logical volume mylv1 successfully resized
[root@localhost ~]# mount /dev/myvg/mylv1 /users/
[root@localhost ~]# ll /users/
total 20
drwxr-xr-x. 2 root   root   16384 Aug  9 15:50 lost+found
drwx------. 2 magedu magedu  4096 Aug  9 16:01 magedu
[root@localhost ~]# cat /users/magedu/inittab 
# inittab is only used by upstart for the default runlevel.
...
# 
id:3:initdefault:

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

[root@localhost ~]# lvcreate -s -L 1M -n lv_magedu -p r /dev/myvg/mylv1 
  Rounding up size to full physical extent 8.00 MiB
  Logical volume "lv_magedu" created
[root@localhost ~]# mount /dev/myvg/lv_magedu /backup/
mount: block device /dev/mapper/myvg-lv_magedu is write-protected, mounting read-only
[root@localhost ~]# cd /backup/magedu/
[root@localhost magedu]# ll
total 8
-rw-r--r--. 1 magedu magedu 860 Aug  9 16:00 fstab
-rw-r--r--. 1 magedu magedu 884 Aug  9 16:00 inittab

   

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

(0)
Net21_LionNet21_Lion
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • 使用httpd反向代理模块实现tomcat负载均衡集群(上)

    前言  tomcat介绍:   tomcat是一个免费开放源代码的web应用服务器,不是一个完整意义上的Java EE服务器;它甚至都没有提供哪怕对一个主Java EE API的实现,但由于遵守apache开源协议,tomcat却有为众多的java应用程序服务器嵌入自己的产品中构建商业的java应用程序服务器,如JBoss和JOnAS等。…

    Linux干货 2015-07-21
  • man命令的用法

    man 命令的用法    在linux运维工作中,经常会有一些命令我们不是很清楚它们的准确用法,这时候我们就需要去查询这些命令的用法,linux中就有很多文档帮助我们去了解这些命令的用法,其中就有一条命令man,下面我就总结一下它的用法。     man 是 manual 的简写,提供命令的帮助文件。   &…

    Linux干货 2017-02-17
  • N22-第六周博客作业

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; :%s@^[[:space:]]\+[^[:space:]]@#\1@g 或 :%s@^[[:space:]]\+[^[:space:]]@#&a…

    Linux干货 2016-09-26
  • 文本处理工具-习题

    1 、找出ifconfig 命令结果中本机的所有IPv4地址 [root@centos7 ~]# ifconfig |head -2 |tail-1 |cut -dn -f2 |cut -d" " -f2 2 、查出分区空间使用率的最大百分比值 [root@centos7 ~]# df |cut -c44-46 |sort -n|tail…

    Linux干货 2016-08-15
  • ftp的配置

    FTP服务器配置 VSFTP主配置文件路径:/etc/vsftpd/vsftpd.conf,重要参数: anonymous_enable=yes/no 是否允许匿名用户访问 anon_upload_enable=yes/no 是否允许匿名用户上传文件 anon_mkdir_write_enable=yes/no 是否允许匿名用户创建目录 anon_other…

    2017-10-16
  • CA和证书

    A与B双方通信,需要通过签证机构CA颁发证书,才可以互相信任,从而安全的进行数据传输。想要获取证书,除了付费购买认证机构的证书,还可以自签名获取证书。 openssl命令可以搭建CA,实现自签名证书。下面以三台主机为例,模拟根CA、子CA的搭建,以及客户端申请证书的过程。 一、搭建根CA /etc/pki/tls/openssl.cnf文件是openssl的…

    2017-09-10

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-17 15:31

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