马哥教育21期网络班—第7周课程+练习—-成长进行时–努力前进

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

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

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

fdisk /dev/sdb   1、磁盘分区
   [root@localhost ~]# fdisk /dev/sdb 
   欢迎使用 fdisk (util-linux 2.23.2)。
   更改将停留在内存中,直到您决定将更改写入磁盘。
   使用写入命令前请三思。
   Device does not contain a recognized partition table
   使用磁盘标识符 0x645f3764 创建新的 DOS 磁盘标签。
   命令(输入 m 获取帮助):n  
   Partition type:
   			p   primary (1 primary, 0 extended, 3 free)
   			e   extended
   Select (default p): p
   分区号 (1-4,默认 1):
   起始 扇区 (2048-20971519,默认为 2048):
   将使用默认值 2048
   Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
   将使用默认值 20971519
   分区 1 已设置为 Linux 类型,大小设为 10 GiB
   命令(输入 m 获取帮助):w
   The partition table has been altered!
   Calling ioctl() to re-read partition table.
   正在同步磁盘。   2、通知内核重新读取硬盘分区表
   [root@localhost ~]# partx -a /dev/sdb
   [root@localhost ~]# cat /proc/partitions 
	major minor  #blocks  name
   	8        0  125829120 sda
   	8        1     512000 sda1
   	8        2  125316096 sda2
   	8       16   10485760 sdb
   	8       17   10484736 sdb1
  	11        0    1048575 sr0
 	253        0   52428800 dm-0
 	253        1    2097152 dm-1
 	253        2   70721536 dm-2
 	3、格式化分区
 	[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L 'MYDATA'  /dev/sdb1
	mke2fs 1.42.9 (28-Dec-2013)
	文件系统标签=MYDATA
	OS type: Linux
	块大小=2048 (log=1)
	分块大小=2048 (log=1)
	Stride=0 blocks, Stripe width=0 blocks
	655360 inodes, 5242368 blocks
	104847 blocks (2.00%) reserved for the super user
	第一个数据块=0
	Maximum filesystem blocks=273678336
	320 block groups
	16384 blocks per group, 16384 fragments per group
	2048 inodes per group	Superblock backups stored on blocks: 
	16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
	2048000, 3981312
	Allocating group tables: 完成                            
	正在写入inode表: 完成                            
	Creating journal (32768 blocks): 完成
	Writing superblocks and filesystem accounting information: 完成   
	[root@localhost ~]# tune2fs -o acl /dev/sdb1 
	tune2fs 1.42.9 (28-Dec-2013)
	[root@localhost ~]# echo $?
	0
	4、挂载
	[root@localhost ~]# mkdir -p /data/mydata/
	[root@localhost ~]# mount -o noauto,noatime,acl /dev/sdb1 /data/mydata/

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

1、创建交换分区
	[root@localhost ~]# fdisk /dev/sdc 
	欢迎使用 fdisk (util-linux 2.23.2)。
	更改将停留在内存中,直到您决定将更改写入磁盘。
	使用写入命令前请三思。
	Device does not contain a recognized partition table
	使用磁盘标识符 0xa1cdd8bb 创建新的 DOS 磁盘标签。
	命令(输入 m 获取帮助):n
	Partition type:
	   p   primary (0 primary, 0 extended, 4 free)
	   e   extended	Select (default p): p
	分区号 (1-4,默认 1):
	起始 扇区 (2048-2097151,默认为 2048):
	将使用默认值 2048
	Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):
	将使用默认值 2097151
	分区 1 已设置为 Linux 类型,大小设为 1023 MiB
	命令(输入 m 获取帮助):m
	命令操作
	   a   toggle a bootable flag
	   b   edit bsd disklabel	   c   toggle the dos compatibility flag	   d   delete a partition
	   g   create a new empty GPT partition table
	   G   create an IRIX (SGI) partition table
	   l   list known partition types	   m   print this menu	   n   add a new partition
	   o   create a new empty DOS partition table
	   p   print the partition table
	   q   quit without saving changes
	   s   create a new empty Sun disklabel	   t   change a partition's system id
	   u   change display/entry units
	   v   verify the partition table
	   w   write table to disk and exit
	   x   extra functionality (experts only)
	命令(输入 m 获取帮助):t
	已选择分区 1
	Hex 代码(输入 L 列出所有代码):82
	已将分区“Linux”的类型更改为“Linux swap / Solaris”
	命令(输入 m 获取帮助):w
	The partition table has been altered!
	Calling ioctl() to re-read partition table.
	正在同步磁盘。
	2、通知内核重新读取硬盘分区表
	[root@localhost ~]# partx -a /dev/sdc
	[root@localhost ~]# cat /proc/partitions
	[root@localhost ~]# mkswap /dev/sdc1 
	正在设置交换空间版本 1,大小 = 1047548 KiB
	无标签,UUID=a6d304b5-9bb5-4a39-adc9-f8bbdfe1e746
	[root@localhost ~]# free -m 
	              total        used        free      shared  buff/cache   available
	Mem:            977         144         654           6         179         668
	Swap:          3070           0        3070

3、写一个脚本

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

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

   #!/bin/bash
 #
 i=1
 fdisk -l /dev/hd[a-z] | grep "Disk /"
 for DevName in $(ls /dev/[s,h]d[a-z][1-9]);do
     if [ $i -eq 1 ] ;then
         df -h $Dev | awk -v FS="    " '{print $1,$2,$3,$4,$5,$6}'
         let i++
     else
         df -h $DevName | grep -v "File" | awk -v ="    " -v name=$Dev '{print name,$2,$3,$4,$5,$6}'
     fi
 done

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

RAID 介绍.png

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+
JBOD:Just a Bunch Of Disks
		功能:将多块磁盘的空间合并一个大的连续空间使用;
		可用空间:sum(S1,S2,...)

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

fdisk  /dev/sdb 分区
mdadm -C /dev/md0 -n 2 -l 1 -c 128 -x 1 /dev/sdb{1,2,3} 
[root@localhost ~]#  mdadm -D /dev/md0/dev/md0:
        Version : 1.2
  Creation Time : Mon Aug 15 21:41:49 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 : Mon Aug 15 21:42:42 2016
          State : clean 
 Active Devices : 2Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : ef3583dc:ef361cd0:12593e47:8bad609a
         Events : 17

    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功能;

disk  /dev/sdb 分区
mdadm -C /dev/md0 -n 3 -l 5 -c 256 /dev/sdb{1,2,3} 
mkfs.ext4 /dev/md0
echo "/dev/md0    /backup   ext4  defaults,acl,nodiratime  0 0"  >> /etc/fstab
  • 7、写一个脚本

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

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

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

#!/bin/bash 
	# 
	if [ $# -eq 0 ];then
	   echo “请输入文件名:”			
	   exit  0
	fi
		for i in $*	do
	        echo "$i have $(wc -l $i | cut -d' ' -f1) lines"
		done
	echo  "本次共为$#个文件统计了其行数!"
  • 8、写一个脚本

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

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

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

#!/bin/bash #if [ $# -lt 2 ];thenecho "请输入两个以上的参数:"exit 0fi
	for i in $*;do
	if id "$i" &>/dev/null;then
		echo “当前用户已存在”		
		exit 1
		else
 		useradd  "$i"
	fiif [ $? -eq 0 ];then
	echo "$i" | passwd --stdin "$i" &> /dev/null	echo "用户创建成功:"
	exit 2
	fi
	done
	echo "Total Add $# users !"

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

#!/bin/bash 
# 
declare -i tid
for i in {1..10};do
if id user$i &>/dev/null;then
echo "user$i exists."
else
useradd user$i
let tid+=$(id -u user$i)
fi
if [ $? -eq 0 ];then
echo "user$i" | passwd --stadin user$i &> /dev/null
echo "Add user$i finished."
fi
done
echo "Total id is $tid !"

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

#!/bin/bash 
# 
declare -i li 
declare -i line 
	for i in {/etc/rc.d/rc.sysinit,/etc/rc.d/init.d/functions,/etc/fstab};do
		let li+=$(grep ^# $i | wc -l | cut -d' ' -f1)
		let line+=$(grep ^[[:space:]]*$ $i | wc -l | cut -d' ' -f1)
	done
echo "文件中以#号开头的行数之和:$li"
echo "总的空白行数:$line"

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

#!/bin/bash 
#
declare -i uid 
for i in $(grep bash$ /etc/passwd | cut -d: -f1);do
 echo "$i,`id -u $i`"
        let uid+=`id -u $i`
done
echo "Total uid is $uid !"

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

#!/bin/bash
#
declare -i NUM
for i in `grep '[^:]$' /etc/group | cut -d':' -f1`; do
    echo $i
    let "NUM++"
done
echo "Number of user: $NUM"

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

pvcreate /dev/sdb{5,6,7,8} ;
vgcreate -s 8m myvg01 /dev/sdb{5,6,7,8}; 
lvcreate -L 5G -n mylv01 myvg01;
mke2fs -t ext4 /dev/myvg01/mylv01
mount -o acl /dev/myvg01/mylv01 /user; 
echo "/dev/myvg01    /user  ext4  defaults,acl  0 0"  >> /etc/fstab

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

if id magedu &>/dev/null;then
echo "user$i exists."
else
useradd -d /users/magedu magedu
fi
if [ $? -eq 0 ];then
echo "magedu" | passwd --stadin magedu &> /dev/null
echo "Add user$i finished."
fi
su - magedu
cp /etc/passwd /etc/fstab /users/magedu

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

lvextend -L +4G /dev/myvg01/mylv01
resize2fs /dev/myvg01/mylv01

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

umount /dev/myvg01/mylv01; e2fsck /dev/myvg01/mylv01
resize2fs /dev/myvg01/mylv01;lvreduce -L -2G /dev/myvg01/mylv01

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

lvcreate -L 100m -p r -s -n snapmylv01 /dev/myvg01/mylv01

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

(0)
N21_ DominicN21_ Dominic
上一篇 2016-08-19
下一篇 2016-08-19

相关推荐

  • N25-第一周作业

    第一周作业 一 、计算机的组成及其功能 计算机由CPU,控制器,存储器,输入设备,输出设备组成的。 CPU是计算机的重要硬件之一,主要负责运算和指令解释。 控制器是控制计算机系统的各个硬件设备协同工作的如(主板的南桥,北桥等) 存储器分为内存和硬盘,内存负责程序运行,硬盘负责数据存储。 输入设备有键盘,鼠标等。 输出设备有显示器,打印机等。 二 、…

    Linux干货 2016-12-04
  • HAproxy实战

    HAproxy实验一 1、实验要求: (1) 动静分离discuzx,动静都要基于负载均衡实现; (2) 进一步测试在haproxy和后端主机之间添加varnish缓存(见实验二步骤); (3) 给出拓扑设计; (4) haproxy的设定要求: (a) 启动stats; (b) 自定义403、502和503的错误页; (c) 各组后端主机选择合适的调度方法…

    Linux干货 2016-11-15
  • 关于大型网站技术演进的思考(二):存储的瓶颈(2)

    原文出处: 夏天的森林   上篇里我讲到某些网站在高并发下会报出503错误,503错误的含义是指网站服务端暂时无法提供服务的含义,503还表达了网站服务端现在有问题但是以后可能会提供正常的服务,对http协议熟悉的人都知道,5开头的响应码表达了服务端出现了问题,在我们开发测试时候最为常见的是500错误,500代表的含义是服务端程…

    2015-03-11
  • linux 哲学思想

    一切皆文件:普通文件,目录、字符设备、块设备、套接字在linux中都是以文件被对待;虽然类型不通,但是对其提供得却都是统一套操作界面。 由众多的单一程序,一个程序只实现一个功能,多个程序组合完成负责任务。单一的程序可以保持高效的执行效率,对于复杂的功能linux通过许多简单程序组合等方式实现,在保证简单程序的高效性同时,复杂的程序也必然是高效性的。 文本文件…

    Linux干货 2017-08-19
  • Homework Week-3 用户管理

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。  who | cut -f 1 -d \ | uniq “\”后跟一个空格字符 2、取出最后登录到当前系统的用户的相关信息。  who | tail…

    Linux干货 2016-08-24
  • Linux文件权限之facl

    1、什么是facl         facl(file access control list)文件访问控制列表,主要目的是在原有的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的机制;       &nbs…

    Linux干货 2016-09-19

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-22 14:45

    写的很好,排版也很棒,加油,创建swap的时候是不是少了一步,第8题不对