【N25第七周作业】

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

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

[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, 5242880 blocks
104857 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: 完成

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

 [root@localhost ~]# mkdir /data/mydata -pv
mkdir: 已创建目录 "/data"
mkdir: 已创建目录 "/data/mydata"
[root@localhost ~]# mount -o noexec,noatime,acl /dev/sdb1 /data/mydata
[root@localhost ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        50G  1.2G   49G    3% /
devtmpfs        480M     0  480M    0% /dev
tmpfs           489M     0  489M    0% /dev/shm
tmpfs           489M  6.7M  483M    2% /run
tmpfs           489M     0  489M    0% /sys/fs/cgroup
/dev/sda5        28G   33M   28G    1% /home
/dev/sda1       497M  118M  379M   24% /boot
tmpfs            98M     0   98M    0% /run/user/0
/dev/sdb1       9.8G   13M  9.6G    1% /data/mydata

[root@localhost ~]# dumpe2fs -h  /dev/sdb1
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="MYDATA" UUID="4c5efe18-1e76-4722-909b-a931c9cea4af" TYPE="ext4" 
[root@localhost ~]# vi /etc/fstab 
[root@localhost ~]# tail -1 /etc/fstab
UUID=4c5efe18-1e76-4722-909b-a931c9cea4af /data/mydata            ext4    defaults    0 0

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

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 
Using default response p
分区号 (2-4,默认 2):2
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+1G           
分区 2 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x311490c4

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568    23070719     1048576   83  Linux
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):2
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[root@localhost ~]# fdisk -l

磁盘 /dev/sda:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a0565

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048     5222399     2098176   82  Linux swap / Solaris
/dev/sda3         5222400   110079999    52428800   83  Linux
/dev/sda4       110080000   167772159    28846080    5  Extended
/dev/sda5       110082048   167772159    28845056   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x311490c4

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568    23070719     1048576   82  Linux swap / Solaris
[root@localhost ~]# mkswap /dev/sdb2
/dev/sdb2: 没有那个文件或目录
[root@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partition 1
[root@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
[root@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   2        0          4 fd0
   8        0   83886080 sda
   8        1     512000 sda1
   8        2    2098176 sda2
   8        3   52428800 sda3
   8        4          1 sda4
   8        5   28845056 sda5
   8       16   20971520 sdb
   8       17   10485760 sdb1
   8       18    1048576 sdb2
  11        0    1048575 sr0
[root@localhost ~]# mkswap /dev/sdb2
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=09374644-2556-4b3f-b267-893f87c2a768
[root@localhost ~]# swapon /dev/sdb2
[root@localhost ~]# vi /etc/fstab 
[root@localhost ~]# tail -1 /etc/fstab
UUID=09374644-2556-4b3f-b267-893f87c2a768 swap            swap    defaults        0 0

3、写一个脚本

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

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

#!/bin/bash
#
FILESYSTEM=`fdisk -l|grep -o '/dev/s[hd][a-z]\>'`
for i in $FILESYSTEM;do
    echo -e  "\033[31m disk : $i \033[0m"
    echo
    df -h|egrep "文件系统|Filesystem|$i"
    echo "==========================================="
done


[root@localhost data]# sh b.sh 
 disk : /dev/sdb 

文件系统        容量  已用  可用 已用% 挂载点
/dev/sdb1       9.8G   13M  9.6G    1% /data/mydata
===========================================
 disk : /dev/sda 

文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        50G  1.3G   49G    3% /
/dev/sda5        28G   33M   28G    1% /home
/dev/sda1       497M  118M  379M   24% /boot
===========================================

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

组成RAID阵列的不同方式称为RAID级别,不同的级别有着不同的性能、不同的数据可靠性和不同的存储成本;
主要有以下几种常用的阵列:
RAID0:以条带的形式将数据均匀分布在阵列的各个磁盘上
【N25第七周作业】
所需成员磁盘数 2个或更多,最低为2个
优点 极高的磁盘读写效率;不存在校验,
不会占用太多CPU资源设计、使用和
配置比较简单
缺点 无冗余,不能用于对数据安全性要求
高的环境
适用领域 视频生成和编辑、图像编辑
其他需要大的传输带宽的操作
RAID1:以镜像为冗余方式,对虚拟磁盘上的数据做多分拷贝,放在成员磁盘上
【N25第七周作业】
所需成员磁盘数 2N个,(N≥1),最低为2个
优点 具有100%数据冗余,提供最高的数据安全保障
理论上可以实现2倍的读取效率
设计和使用比较简单
缺点 开销大,空间利用率只有50%
在写性能方面提升不大
适用领域 财务、金融等高可用、高安全的数据存储环境
RAID5:采用独立存取的阵列方式,校验信息被均匀的分散在阵列的各个磁盘上
【N25第七周作业】
所需成员磁盘数 3个或更多,最低为3个
优点 读性能比较高
中等的写性能
校验信息的分布式存取,避免出现写操作的瓶颈
缺点 控制器设计复杂
磁盘重建的过程比较复杂
适用领域 文件服务器、Email服务器、Web服务器等环境
数据库应用
组合不同级别RAID的目的:不同级别的RAID在性能、冗余、价格等方面做了不同程度的折中,可以扬长避短,产生具有优势特性的混合RAID级别,一般使用RAID10,RAID1,RAID5,RAID50等比较多
RAID10:先镜像,再条带化
【N25第七周作业】
所需成员磁盘数 2N个,(N≥2),最低为4个
优点 读性能很高
写性能比较好
数据安全性好,允许同时有N个磁盘失效
缺点 空间利用率只有50%
开销大
适用领域 多用于要求高可用性和高安全性的数据库应用
RAID50:先实现RAID5再条带化
【N25第七周作业】
所需成员磁盘数 6个或更多,最低为6个
优点 比RAID5有更好的读性能
比相同容量的RAID5重建时间更短
可以容许N个磁盘同时失效
缺点 设计复杂,比较难实现
同一个RAID5组内的两个磁盘失效会导致整个阵列的失效
适用领域 大型数据库服务器、应用服务器、文件服务器等应用
常用RAID级别的比较:
RAID级别 RAID0 RAID1 RAID3 RAID5 RAID10
别名 条带 镜像 专用奇偶位条带 分布奇偶位条带 镜像阵列条带
容错性
冗余类型 镜像 奇偶校验 奇偶校验 镜像
备盘
读性能 中间
随机写性能 最低 中间
连续写性能 中间
需要的磁盘数 2个或更多 2个或2N个 3个或更多 3个或更多 4个或2N(N≥2)
可用容量 总的磁盘容量 磁盘容量的50% 磁盘容量的(N-1)/N 磁盘容量的(N-1)/N 磁盘容量的50%

5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;
6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;
7、写一个脚本
   (1) 接受一个以上文件路径作为参数;
   (2) 显示每个文件拥有的行数;

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

#!/bin/bash
#
SUM=0
[ $# -lt 1 ] && echo "you must input at least one parameter" && exit 2
for file in $@;do
    if [ -f $file ];then
        LINES=`cat $file |wc -l`
        echo "$file have $LINES lines"
        let SUM=$SUM+$LINES
    else
        echo "$file is not exist"
    fi
done
echo "$@ have $SUM lines in total."

[root@localhost data]# sh  count.sh /etc/fstab /etc/profile 
/etc/fstab have 14 lines
/etc/profile have 76 lines
/etc/fstab /etc/profile have 90 lines in total.
[root@localhost data]# sh  count.sh /etc/fstab /etc/profsad
/etc/fstab have 14 lines
/etc/profsad is not exist
/etc/fstab /etc/profsad have 14 lines in total.

8、写一个脚本
   (1) 传递两个以上字符串当作用户名;
   (2) 创建这些用户;且密码同用户名;

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

#!/bin/bash
#
SUM=0
[ $# -lt 1 ] && echo "you must input at least one string" && exit 2
for string in $*;do
    [ $(echo "$string" |wc -c) -le 4 ] && echo "$string less than 4 letters" && continue
    if id $string &> /dev/null;then
        echo "user $string is exist!"
    else
        useradd $string
        echo "$string" |passwd --stdin $string &> /dev/null
        echo "add user $string sucess!"
        let SUM+=1
    fi
done
echo "add $SUM users in total."

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

#!/bin/bash
#

SUM_UID=0

for((i=1;i<=20;i++));do
    adduser visitor$i
    UID1=`id -u visitor$i`
    let SUM_UID+=$UID1
done
echo "ID intotle $SUM_UID"

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

#!/bin/bash
#

SUM1=0
SUM2=0

for file in /etc/rc.d/rc.local  /etc/rc.d/init.d/functions  /etc/fstab;do
    num1=`egrep "^#" $file|wc -l`
    let SUM1+=$num1
    num2=`egrep "^$" $file|wc -l`
    let SUM2+=$num2
done

echo "SUM1 have $SUM1"
echo "SUM2 have $SUM2"

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

#!/bin/bash
#
SUM=0
egrep 'bash$' /etc/passwd|cut -d: -f1,3
for i in `egrep 'bash$' /etc/passwd|cut -d: -f3`;do
    let SUM+=$i 
done
echo "SUMUID is $SUM"

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

(0)
上一篇 2017-04-13 08:57
下一篇 2017-04-13 14:02

相关推荐

  • Linux基础小模块

    1.基础知识小块:shell 由shell程序的自带命令:即为内置命令(builtin) 独立的可执行程序文件、文件名 :即为外部命令  [root@localhost~]#ls      ~用户当前所在目录  #:命令提示符(管理员帐号root)  $:普通用户   &nbsp…

    Linux干货 2016-08-10
  • N25-第六周作业

    第六周 请详细总结vim编辑器的使用并完成以下练习题 文本编辑器: vim:     模式化的编辑器         基本模式:          &…

    Linux干货 2016-12-28
  • 【N25第四周作业】grep

    文本处理工具: Linux上文本处理三剑客: grep, egrep, fgrep:文本过滤工具(模式:pattern)工具; grep:基本正则表达式,-E,-F egrep:扩展正则表达式, -G,-F grep:不支持正则表达式, sed:stream editor, 流编辑器;文本编辑工具; awk:…

    Linux干货 2016-12-18
  • HA Cluster—Keepalived

    HA Cluster 集群类型:LB(lvs/nginx(http/upstream, stream/upstream))、HA、HP 系统可用性的公式:A=MTBF/(MTBF+MTTR) 系统故障: 硬件故障:设计缺陷、wear out、自然灾害 软件故障:设计缺陷 提升系统高用性的解决方案之降低MTTR: 解决方案:冗余(redundant) acti…

    Linux干货 2017-10-30
  • 第五周博客作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost ~]# grep -E "^(root|fedora|user1)\>" /etc/passwd | cut -d: -f1,7 roo…

    Linux干货 2017-01-07
  • shell脚本编程初步

    shell脚本编程初步    随着课程学习的深入,我们已经学习了一些常用的命令,会去解决了一部分简单的问题,但是这不能满足复杂的工作,它可以帮助我执行自动化的常用命令、执行系统管理和故障排除、创建简单的应用程序、处理文本或文件。所以我们开始了shell脚本的编程,帮助我们更好的去完成工作。简单地说,shell编程相当于帮我们之前…

    Linux干货 2016-08-15

评论列表(1条)

  • 马哥教育
    马哥教育 2017-05-04 14:47

    这次作业涵盖的知识点比较广泛,但是完成的特别好,再接再励。