转至:http://www.178linux.com/88405

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

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

~]# mke2fs –t ext4 –b 2048 –m 2 –L MYDATA  /dev/sda3

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

~]# mount –o acl,noatime,noexec /dev/sda3 /data/mydata

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

~]# partx –a /dev/sda

~]# mkswap /dev/sda4

~]# swapon /dev/sda4

3、写一个脚本

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

#!/bin/bash

disk=$(ls /dev/sd[a-z])

echo $disk

fdisk –l /dev/sd[a-z]

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

磁盘阵列的英文全名是RedundantArrays of lnexpensive Disks (RAID),即容错廉价磁盘阵列。RAID 可以通过一些技术将多个较小的磁盘整合成为一个较大的磁盘设备;而这个较大的磁盘功能可不止是存储而已。它还具有数据保护的功能。整个RAID由于选择的等级(level)不同。而使得整合后的磁盘具有不同的功能。基本常见的等级有这几种。

RAID-0(等量模式,stripe):性能最佳

这种模式如果使用相同型号与容量的磁盘来组成时,效果较佳。这种模式的RAID会将磁盘先切出等量的区块,然后当一个文件要写入RAID时。该文件会依据块的大小切割好。之后再依序放到各个磁盘里面去。由于每个磁盘会交错存放数据。因此当你的数据要写入RAID时。数据会被等量放置在各个磁盘上面。使用此等级必须要自行负担数据损毁的风险,如果某一块磁盘损毁了,那么文件数据将缺一块。此时这个文件就损毁了。由于每个文件都是这样存放的。因此RAID-0只要有任何一块磁盘损毁。在RAID上面的所有数据都会丢失而无法读取。

RAID-1(映像模式。mirror):完整备份

这种模式也是需要相同的磁盘容量,最好是一模一样的磁盘。如果是不同容量的磁盘组成RAID-1时。那么容量将以最小的那一块磁盘为主。这种模式主要是让同一份数据完整保存在两块磁盘上面。因此,整体RAID的容量几乎少了一半。由于两块磁盘内的数据一模一样,所以任何一块硬盘损毁时,数据还是可以完整保留下来。所以说RAID-1最大的优点大概就在于数据的备份。不过由于磁盘容量有一半用在备份,因此总容量会是全部磁盘容量的一半。虽然RAID-1的写入性能不佳,不过读取的性能还可以。这是因为数据有两份在不同的磁盘上面,如果多个进程在读取同一条数据是,RAID会自行取得最佳的读取平衡。

RAID 0+1,RAID 1+0

RAID 0+1就是先让两块磁盘组成RAID 0 ,并且这样的设置共有两组;然后将这两组RAID 0再组成一组RAID 1。这就是RAID 0+1。反过来说,RAID1+0就是先组成RAID-1再组成RAID-0的意思。由于具有RAID 0和RAID 1的优点,所以性能得到提升,并且数据也得以备份。但同时总容量会少一半用来作为备份。

RAID 5:性能与数据备份的均衡考虑

RAID-5至少需要三块以上的磁盘才能组成这种类型的磁盘阵列。这种磁盘阵列的数据写入优点类似RAID-0,不过每个循环的写入过程中,在每块磁盘还加入一个同为检查数据,这个数据会记录其他磁盘的备份数据,用于当有磁盘损毁时的救援。由于有同位检查码,因此RAID5的总容量护士整体磁盘数量减一块。当损毁的磁盘数量大于等于两块时,这整组RAID 5的数据就损毁了。因为RAID 5 默认仅能支持一块磁盘的损毁情况。

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

~]# mdadm –C /dev/md0 –l 1 –n 2 –a yes –c 128 –x 1 /dev/sdc{1,2,3}

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

~]# mdadm -C /dev/md1 -a yes -n 3 -c 256 -l 5 /dev/sdd{1,2,3}

~]# blkid /dev/md1

~]# mkdir /backup

~]# mount /dev/md1 /backup/

7、写一个脚本

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

#!/bin/bash

#

declare –I sum=$#

if [$# -ep 0]; then

echo “please input the file path”

exit 1

fi

for I in $*;do

if [-f $i];then

line=$(wc –l $i | cut –d “ ” –f 1)

ecgo “$i has $line lines”

fi

done

echo “there are $sum files total.”

8、写一个脚本

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

#!/bin/bash

#

declare –I sum=$#

if [$# -lt 1];then

echo “please input at least two users”

exit 1

fi

for i in $*;do

useradd $i

password=$i

echo $password | passwd –stdin $i

done

echo ”Creatde users are $sum total.”

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

#!/bin/bash

#

sum=0

for I in {1..20};do

useradd $i

idsum=$(id –u $i)

let sum+=$idsum

done

echo “idsum=$sum”

磁盘管理及shell脚本编程练习的更多相关文章

  1. 《Linux命令行与shell脚本编程大全 第3版》

    第一部分 Linux 命令行 第1章  初识Linux she1.1   什么是Linux 21.1.1 深入探究Linux 内核 31.1.2 GNU 工具 61.1.3 Linux 桌面环境 81 ...

  2. 浅谈自底向上的Shell脚本编程及效率优化

    作者:沐星晨 出处:http://blog.csdn.net/sosodream/article/details/6276758 浅谈自底向上的Shell脚本编程及效率优化 小论文,大家多批评指导:) ...

  3. Shell脚本编程总结及速查手册

    Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算符/if语句/循环控制/… 但在开始之前, 我想先理清Shell语言与Shell之间的关系. ...

  4. 《Linux命令行与shell脚本编程大全》 第二十七章 学习笔记

    第二十七章:shell脚本编程进阶 监测系统统计数据 系统快照报告 1.运行时间 uptime命令会提供以下基本信息: 当前时间 系统运行的天数,小时数,分钟数 当前登录到系统的用户数 1分钟,5分钟 ...

  5. Shell脚本编程(一):初识shell script

    Shell简介 Shell是一个命令解释器,它是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核 ...

  6. SHELL脚本编程的常识和VI常用技巧

    来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...

  7. 【Shell脚本编程系列】Shell脚本开发的习惯和规范

    1.开头指定脚本解释器 #!/bin/sh或#!/bin/bash 2.开头加版本版权信息 #Date #Author #Mail #Function #Version 提示:可配置vim编辑文件时自 ...

  8. 【Shell脚本编程系列】知识储备以及建立规范的脚本

    前言 学习shell脚本编程需要的知识储备: vi/vim编辑器命令 vimrc设置要熟练 基础命令,100多个要熟练 基础和常用的网络服务命令要会:nfs . rsync. inotify . la ...

  9. Shell脚本编程与文件系统修复

    导读 Linux基金会发起了LFCS认证(Linux 基金会认证系统管理员)Linux Foundation Certified Sysadmin,这是一个全新的认证体系,旨在让世界各地的人能够参与到 ...

随机推荐

  1. 『无为则无心』Python函数 — 40、Python自定义异常

    目录 1.使用 raise 语句来抛出异常 (1)抛出异常类 (2)抛出异常类的实例 2.自定义异常类 (1)简单实现 (2)完整实现 在Python中,抛出自定义异常的语法为 raise 异常类对象 ...

  2. linux判断物理CPU,逻辑CPU和CPU核数

    ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的 physical id 有几个 ② 逻辑CPU Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. ...

  3. 人口信息普查系统-JavaWeb-三

    今天给大家分享前端主页面的代码,设有五个功能.涉及到增删改查,用到了超链接的跳转. <!DOCTYPE html> <html lang="en"> < ...

  4. React之react-router(connected-react-router/react-router-dom)

    文档: react-router-dom官方文档:https://reacttraining.com/react-router/web/guides/quick-start connected-rea ...

  5. 011 Linux 打包与解压 tar

    01 压缩.打包命令有哪些? Linux上有着各种压缩.打包的工具:tar.gzip.zip.7z,而 tar 应该算是 Linux 官宣的压缩工具了. tar 的核心压缩工具其实是 gzip,在其上 ...

  6. 聊一聊如何用C#轻松完成一个TCC分布式事务

    背景 银行跨行转账业务是一个典型分布式事务场景,假设 A 需要跨行转账给 B,那么就涉及两个银行的数据,无法通过一个数据库的本地事务保证转账的 ACID ,只能够通过分布式事务来解决. 在 聊一聊如何 ...

  7. bash_profile和bashsrc的区别

    感谢大佬:http://unclealan.cn/index.php/system/128.html 描述 在类Linux或者MACOS系统中,家目录(用户目录)中我们会看到,.bash_profil ...

  8. Ext原码学习之lang-Object.js

    // JavaScript Document (function(){ var TemplateClass = function(){}, ExtObject = Ext.Object = { cha ...

  9. 分配IP地址的好东西 DHCP以及NAT简单介绍

    主机配置协议DHCP 1.DHCP应用场景 2.DHCP基础原理 3.NAT简单介绍 4.配置命令 1.手工配置IP地址,工作量比较大而且不好管理,如果用户自己修改参数,可能会导致ip地址冲突,这个时 ...

  10. 它来了,那个最帅的男人来了 Linux常用命令精华讲解 中部

    Linux 相对于上部,今天这些内容有点干巴 -ls         列表显示目录内容  -alias   设置别名 -du        统计目录及文件空间占用情况 -mkdir   创建新目录 - ...