从Linux小白到大牛——与狼共舞的日子7

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

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

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

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


[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Partition number (1-4): 1
First cylinder (1-7832, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-7832, default 7832): +10G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partx -a /dev/sdb
[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda  8:00   40G  0 disk 
├─sda1   8:10 29.3G  0 part /
└─sda2   8:202G  0 part [SWAP]
sdb  8:16   0   60G  0 disk 
└─sdb1   8:17   0   10G  0 part 
sr0 11:01  3.5G  0 rom

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

[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L 'MYDATA'  /dev/sdb1
[root@localhost ~]# tune2fs -o acl /dev/sdb1

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

[root@localhost ~]# mkdir -pv /data/mydata
[root@localhost ~]# mount -o noexec,noatime /dev/sdb1 /data/mydata

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


[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Partition number (1-4): 2
First cylinder (1307-7832, default 1307): 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-7832, default 7832): +1G
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partx -a /dev/sdb
[root@localhost ~]# mkswap /dev/sdb2
[root@localhost ~]# swapon /dev/sdb2

3、写一个脚本

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

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


[root@localhost ~]# cat disk.sh 
#!/bin/bash
#
for i in `lsblk | egrep '^(sd|hd)' | cut -d' ' -f1`;do
    echo Disk:$i
    echo Disk Space:`lsblk /dev/$i | egrep '(sd|hd)[[:alpha:]][[:digit:]]'`
done

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


从Linux小白到大牛——与狼共舞的日子7

RAID 0(条带模式)

  • 这种模式下,RAID 会将磁盘分割成等量大小的区块。存储数据时,将数据交错存储到多块磁盘上去。

  • 性能表现:读、写性能提升

  • 冗余能力(容错能力):无

  • 空间利用率:N*min(S1,S2,…)

RAID 1(镜像模式)

  • 这种模式下,每组至少两颗磁盘,一块用来存储数据,另一块用来存储数据的备份。

  • 性能表现:读性能提升,写性能下降

  • 冗余能力:有

  • 空间利用率:1*min(S1,S2,…)

RAID 5(循环校验)

  • RAID 5 至少需要 3 颗硬盘才能组成。它的写入特点类似于 RAID 0,不同的是在每个循环写入的过程中,在每颗磁盘中会加入一个校验位。当写入硬盘的数据损坏后,可以利用校验位进行数据的恢复。如果单独使用一颗磁盘存储 校验位,会大大增加它的读写负担,所以校验位是轮流写入每颗硬盘的。

  • 性能表现:读、写性能提升

  • 冗余能力:有

  • 空间利用率:(N-1)*min(S1,S2,…)

RAID 0+1

  • 这种模式是 RAID 0 和 RAID 1 的组合。首先用两颗磁盘组成 RAID 0,共设定两组,然后将两组 RAID 0组合成 RAID 1。

  • 性能表现:读、写性能提升

  • 冗余能力:有

  • 空间利用率:N*min(S1,S2,…)/2

RAID 1+0

  • 这种模式就是先组合成 RAID 1,然后在组合成 RAID 0。

  • 性能表现:读、写性能提升

  • 冗余能力:有

– 空间利用率:N*min(S1,S2,…)/2

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


[root@localhost ~]# mdadm -C /dev/md1 -n2 -l1 -a yes -x1 -c128 /dev/sdb1 /dev/sdb2 /dev/sdb3
[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
  Creation Time : Fri Oct 28 16:00:46 2016
 Raid Level : raid1
 Array Size : 10482112 (10.00 GiB 10.73 GB)
  Used Dev Size : 10482112 (10.00 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
Persistence : Superblock is persistent

Update Time : Fri Oct 28 16:01:30 2016
  State : clean, resyncing 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

  Resync Status : 84% complete

   Name : localhost:1  (local to host localhost)
   UUID : ebde693e:fb4f8293:9c3ed012:ee5fb97e
 Events : 13

Number   Major   Minor   RaidDevice State
   0   8   170  active sync   /dev/sdb1
   1   8   181  active sync   /dev/sdb2

   2   8   19-  spare   /dev/sdb3

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


[root@localhost ~]# mdadm -C /dev/md2 -n3 -l5 -c256 /dev/sdb1 /dev/sdb2 /dev/sdb3
[root@localhost ~]# mdadm -D /dev/md2
/dev/md2:
Version : 1.2
  Creation Time : Fri Oct 28 16:11:03 2016
 Raid Level : raid5
 Array Size : 8393216 (8.00 GiB 8.59 GB)
  Used Dev Size : 4196608 (4.00 GiB 4.30 GB)
   Raid Devices : 3
  Total Devices : 3
Persistence : Superblock is persistent

Update Time : Fri Oct 28 16:11:16 2016
  State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

 Layout : left-symmetric
 Chunk Size : 256K

 Rebuild Status : 32% complete

   Name : localhost:2  (local to host localhost)
   UUID : bf022f15:66dbe3d7:93db49c1:bcc40c46
 Events : 6

Number   Major   Minor   RaidDevice State
   0   8   170  active sync   /dev/sdb1
   1   8   181  active sync   /dev/sdb2
   3   8   192  spare rebuilding   /dev/sdb3
[root@localhost ~]# mkfs.ext4 /dev/md2
[root@localhost ~]# mkdir /backup
[root@localhost ~]# vim /etc/fstab
    /dev/md2   /backup  ext4notime,acl   0 0

7、写一个脚本

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

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

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


[root@localhost ~]# cat filecount.sh 
#!/bin/bash
#
declare -i count=0
if [ $# -lt 1 ];then
    echo "Usage:$0 /path/to/file1 /path/to/file2 ...."
    exit 1
fi
for i in $*;do
    [ -f $i ] && echo "$i have lines:`wc -l $i | cut -d' ' -f1`"
    [ $? -eq 0 ] && count=$[$count+1] || echo "$i not file"
done
echo "Files total:$count"

8、写一个脚本

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

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

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


[root@localhost ~]# cat useradd.sh 
#!/bin/bash
#
declare -i count=0
if [ $# -lt 2 ];then
    echo "Usage:$0 user1 user2"
    exit 1
fi
for i in $*;do
    ! id $i &>/dev/null && useradd $i && echo $i | passwd --stdin $i &>/dev/null && count=$[$count+1]
    [ $? -eq 0 ] && echo "User $i added." || echo "User $i exists."
done
echo "Create users:$count"

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


[root@localhost ~]# cat userid.sh 
#!/bin/bash
#
declare -i idcount=0
for i in {1..20};do
    ! id visitor$i &>/dev/null && useradd visitor$i && echo User visitor$i add. 
    [ $? -eq 0 ] && let idcount=$idcount+$(id -u visitor$i) || echo User visitor$i exists.
done
echo ID count:$idcount.

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


[root@localhost ~]# cat colcount.sh 
#!/bin/bash
#
declare -i spacecount=0
declare -i jingcount=0
file1=/etc/rc.d/rc.sysinit
file2=/etc/rc.d/init.d/functions
file3=/etc/fstab
for i in {$file1,$file2,$file3};do
    [ -f $i ] && let jingcount+=$(grep ^# $i | wc -l) || echo $i no exists.
    [ -f $i ] && let spacecount+=$(grep ^$ $i | wc -l) || echo $i no exists. 
done
echo "Spacecount totall:$spacecount"
echo "# count totall:$jingcount"

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


[root@localhost ~]# cat usershell.sh 
#!/bin/bash
#
declare -i count=0
for i in `grep bash$ /etc/passwd | cut -d: -f1,3`;do
    echo $i
    let count+=$[ `echo $i | cut -d: -f2` ]
done
echo "UID count:$count"

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


[root@localhost ~]# cat group.sh 
#!/bin/bash
#
declare -i count=0
for i in `cut -d: -f1 /etc/passwd`;do
    id $i | grep , &>/dev/null && echo $i && let count++
done
echo "User count:$count"

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


[root@localhost ~]# fdisk /dev/sdb
   Device Boot  Start End  Blocks   Id  System
/dev/sdb1   1130610490413+  8e  Linux LVM
/dev/sdb21307261210490445   8e  Linux LVM
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
[root@localhost ~]# vgcreate -s 8M vg1 /dev/sdb1 /dev/sdb2
  Volume group "vg1" successfully created
[root@localhost ~]# lvcreate -n mylv1 -L 5G vg1
  Logical volume "mylv1" created
[root@localhost ~]# mkfs.ext4 /dev/vg1/mylv1 
[root@localhost ~]# mkdir /users
    /dev/vg1/mylv1 /users   ext4acl  0 0

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


[root@localhost ~]# useradd -d /users/magedu/ magedu
[magedu@localhost ~]$ cp /etc/fstab /etc/inittab ./

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


[root@localhost ~]# lvextend -L 9G /dev/vg1/mylv1
[root@localhost ~]# resize2fs /dev/vg1/mylv1

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


[root@localhost ~]# umount /dev/vg1/mylv1
[root@localhost ~]# e2fsck -f /dev/vg1/mylv1
[root@localhost ~]# resize2fs /dev/vg1/mylv1 7G
[root@localhost ~]# lvreduce -L 7G /dev/vg1/mylv1
[root@localhost ~]# mount /dev/vg1/mylv1 /users

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


[root@localhost ~]# lvcreate -L 7G -p r -s -n mylv1_snapshot /dev/vg1/mylv1

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

(0)
N21_孤狼N21_孤狼
上一篇 2016-11-14
下一篇 2016-11-14

相关推荐

  • TCP 的那些事儿(下)

    这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的…

    Linux干货 2016-08-15
  • 马哥教育网络班21期+第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 方法1: [root@zabbix ~]# who |awk '{print $1}'|sort -n|uniq monitor root 方法2: [root@zabbix ~]#…

    Linux干货 2016-07-22
  • shell脚本编程的执行语句

    顺序执行     从上到下逐条执行命令,执行完所有命令及退出。 选择执行     (1)&&,||     &&:代表and,&&左侧为真右侧则执行     ||:代表or…

    Linux干货 2016-08-24
  • N28-第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
    2、取出最后登录到当前系统的用户的相关信息。
    3、取出当前系统上被用户当作其默认shell的最多的那个shell。
    4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
    7、显示/var目录下一级子目录或文件的总个数。
    8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
    9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)、创建组distro,其GID为2016;
    (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
    (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
    (4)、给用户mageia添加密码,密码为mageedu;
    (5)、删除mandriva,但保留其家目录;
    (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
    (7)、修改slackware的默认shell为/bin/tcsh;
    (8)、为用户slackware新增附加组admins;

    Linux干货 2017-12-19
  • 简单shell脚本习题

    习题 作业 简单shell脚本习题 习题1 答案 习题2 答案 习题3 答案 习题4 答案 习题5 答案 习题6 答案 习题1 编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存大小,硬盘大小。 答案 #!/bin/bash IPADDR=$(…

    Linux干货 2017-04-10
  • 进程与计划任务

    PID 进程号,用来标记各个进程;CentOS6中起始的第一个进程为init7中为systemd 进程优先级: 系统优先级:数字越小,优先级越高 0-139(4,5中) 各有140个运行队列和过期队列 0-98,99(6中) 实时优先级:99-0:值越大优先级越高 nice值:-20到19,对应系统优先级100-139或99 进程状态: 运行:running…

    2017-05-14

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-16 15:42

    写的很好,排版也很漂亮,有没有尝试自己画图来理解一下raid的原理