; 马哥教育网络19期+第7周练习博客 | Linux运维部落

马哥教育网络19期+第7周练习博客

1、创建一个10G分区,并格式为ext4文件系统;
前提磁盘必须有10G的剩余空间
n新建
p选择类型,主分区
分区编号默认
起始柱面默认
+10G大小指定为10G
w保存退出
(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;
mke2fs -t ext4 -b 2048 -L= 'MYDATE' -m 2 /dev/sda3
tune2fs -o acl /dev/sda3

(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
mkdir /data/mydate
mount -t ext4 -o noexec,noatime /dev/sda3 /data/mydata/
2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;
我新加了个硬盘

 fdisk /dev/sdb

  mkswap /dev/sdb1 
  partx -a /dev/sdb
  mkawon /dev/sdb1

3、写一个脚本

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

  #!/bin/bash
 for i in $(grep '.*[^0-9]$' /proc/partitions |grep -v 'major'|tr -s ' ' |cut -d' '  -f5);do
  echo "============$i============"
 fdisk -l /dev/$i
 df -h /dev/$i
  echo 
 done

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

## RAID 0 ##

RAID 0亦称为带区集。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失,危险程度与JBOD相当。

简单的说:2个磁盘并联起来成一个大容量的磁盘,读写能力提高,无容错能力,没有冗余能力,一旦一块硬盘出错就会导致所有数据丢失。

RAID 1

 两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。
 如果用两个不同大小的磁盘建RAID 1,可用空间为较小的那个磁盘,较大的磁盘多出来的空间也可以分区成一个区来使用,不会造成浪费。

  简单的说:2个磁盘都做成一模一样的镜像,一个改动了另一个也会改动。读能力上去了,写能力下降了。有冗余能力,主硬盘坏了,副硬盘会顶上。无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。

RAID 2

这是RAID 0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分区为独立的比特,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些,RAID2最少要三台磁盘驱动器方能运作。

简单的说:跟RAID 0 一样,只不过是改良版。

RAID 3

采用Bit-interleaving(数据交错存储)技术,它需要通过编码再将数据比特分割后分别存在硬盘中,而将同比特检查后单独存在一个硬盘中,但由于数据内的比特分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。

简单的说:采用数据交错存储技术,通过编码将数据比特分割分别存储。同比特检查放在一个硬盘,不同比特放在不同的硬盘。适用读取大量数据时使用。

RAID 4

它与RAID 3不同的是它在分区时是以区块为单位分别存在硬盘中,但每次的数据访问都必须从同比特检查的那个硬盘中取出对应的同比特数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。(块交织技术,Block interleaving)

简单的说: 1101 0110 校验码1011 通过对比生成校验码,也可通过校验码来还原。(1+0,1+1,0+1,0+1)=1011   不常用

RAID 5

 RAID Level 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5至少需要三块硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。

简单的说:就是采用轮流做校验机制,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。读写能力上升了,有容错能力,最少磁盘数为3.

RAID 6

与RAID 5相比,RAID 6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性。RAID 6需要分配给奇偶校验信息更大的磁盘空间和额外的校验计算,相对于RAID 5有更大的IO操作量和计算量,其“写性能”强烈取决于具体的实现方案,因此RAID6通常不会通过软件方式来实现,而更可能通过硬件/固件方式实现。

同一数组中最多容许两个磁盘损坏。更换新磁盘后,数据将会重新算出并写入新的磁盘中。依照设计理论,RAID 6必须具备四个以上的磁盘才能生效。

可使用的容量为硬盘总数减去2的差,乘以最小容量,公式为:


同理,数据保护区域容量则为最小容量乘以2。

RAID 6在硬件磁盘阵列卡的功能中,也是最常见的磁盘阵列档次。

JBOD

JBOD( Just a Bunch Of Disks)在分类上,JBOD并不是RAID的档次。由于并没有规范,市场上有两类主流的做法

使用单独的链接端口如SATA、USB或1394同时控制多个各别独立的硬盘,使用这种模式通常是较高级的设备,还具备有RAID的功能,不需要依靠JBOD达到合并逻辑扇区的目的。
只是将多个硬盘空间合并成一个大的逻辑硬盘,没有错误备援机制。
数据的存放机制是由第一颗硬盘开始依序往后存放,即操作系统看到的是一个大硬盘(由许多小硬盘组成的)。但如果硬盘损毁,则该颗硬盘上的所有数据将无法救回。若第一颗硬盘损坏,通常无法作救援(因为大部分文件系统将磁盘分区表(partition table)存在磁盘前端,即第一颗),失去磁盘分区表即失去一切数据,若遭遇磁盘阵列数据或硬盘出错的状况,危险程度较RAID 0更剧。它的好处是不会像RAID,每次访问都要读写全部硬盘。

RAID 7

RAID 7并非公开的RAID标准,而是Storage Computer Corporation的专利硬件产品名称,RAID 7是以RAID 3及RAID 4为基础所发展,但是经过强化以解决原来的一些限制。另外,在实现中使用大量的高速缓存以及用以实现异步数组管理的专用即时处理器,使得RAID 7可以同时处理大量的IO要求,所以性能甚至超越了许多其他RAID标准的实做产品。但也因为如此,在价格方面非常的高昂。[3]
简单的说:这是一款专利硬件,很贵,一般很少用

RAID 10/01

 RAID 10是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

 RAID 01则是跟RAID 10的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

当RAID 10有一个硬盘受损,其余硬盘会继续运作。RAID 01只要有一个硬盘受损,同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六个硬盘建RAID 01,镜射再用三个建RAID 0,那么坏一个硬盘便会有三个硬盘脱机。因此,RAID 10远较RAID 01常用,零售主板绝大部分支持RAID 0/1/5/10,但不支持RAID 01。

RAID 50

RAID 50
RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0,也就是对多组RAID 5彼此构成Stripe访问。由于RAID 50是以RAID 5为基础,而RAID 5至少需要3颗硬盘,因此要以多组RAID 5构成RAID 50,至少需要6颗硬盘。以RAID 50最小的6颗硬盘配置为例,先把6颗硬盘分为2组,每组3颗构成RAID 5,如此就得到两组RAID 5,然后再把两组RAID 5构成RAID 0。

RAID 50在底层的任一组或多组RAID 5中出现1颗硬盘损坏时,仍能维持运作,不过如果任一组RAID 5中出现2颗或2颗以上硬盘损毁,整组RAID 50就会失效。

RAID 50由于在上层把多组RAID 5构成Stripe,性能比起单纯的RAID 5高,容量利用率比RAID5要低。比如同样使用9颗硬盘,由各3颗RAID 5再组成RAID 0的RAID 50,每组RAID 5浪费一颗硬盘,利用率为(1-3/9),RAID 5则为(1-1/9)。

RAID 53

 它拥有一个镜射条带数组,硬盘里其中一个条带就是一个是由3组以上的RAID 5组成RAID 3硬盘阵列。

RAID 60

RAID 6与RAID 0的组合:先作RAID 6,再作RAID 0。换句话说,就是对两组以上的RAID 6作Stripe访问。RAID 6至少需具备4颗硬盘,所以RAID 60的最小需求是8颗硬盘。

由于底层是以RAID 6组成,所以RAID 60可以容许任一组RAID 6中损毁最多2颗硬盘,而系统仍能维持运作;不过只要底层任一组RAID 6中损毁3颗硬盘,整组RAID 60就会失效,当然这种情况的概率相当低。

比起单纯的RAID 6,RAID 60的上层通过结合多组RAID 6构成Stripe访问,因此性能较高。不过使用门槛高,而且容量利用率低是较大的问题。

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

   先创建3个5G的分区用fdisk
    partx -a /dev/sdb
  mdadm -C /dev/md1 -n 3 -l 1 -c 128 -a yes -x 1 /dev/sdb{1,2,3}

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

    先创建3个分区总和为4G
     partx -a /dev/sdb
   mdadm -C /dev/md1 -n 3 -l 5 -c 256 -a yes /dev/sdb{1,2,3}
   mke2fs -t ext4 /dev/md1
   mount -a /backup -t ext4 -o exec,noatime,acl /dev/md1 /backup

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

  #!/bin/bash
  #
 echo "Files: $@"
 for file in $@
  do
 lines=$(wc -l $file | cut -d' ' -f1)
 sum+=$lines

 echo "$file has $lines line(s)."
 done
 echo "Total files: $sum "

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

#!/bin/sbin
 echo "users:$@"
 for user in $@
 do
 useradd $user
 echo "$user" | passwd --stdin "$user"
 let sum=$sum+1
 done
 echo "total found user: $sum "

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

#!/bin/sbin
 for i in $(seq 1 20)
 do
 useradd vistor$i
 userid='grep "visitor$i" /etc/passwd | cut -d: -f3
  sumid=$[ $sumid + $user ]
 done
 echo "ID sum:$sumid"

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

for i in /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab 
  do
 echo "$i # start is   "grep -E "^#" $i |wc -l" lines"
 echo "$i space start is "grep -E "^$"  $i |wc -l "lines"
 done

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

grep '/bin/bash$' /etc/passwd | cut -d: -f1,3
uid="grep "/bin/bash$" /etc/passwd | cut -d: -f3"
for i in $uid
do
let sumid+=$i
done
echo "uid sum:$sumid"

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

13、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;
先创建两块硬盘 /dev/sdb /dev/sdc
fdisk /dev/sda 创建两个 /dev/sda{11,12}分区
partx -a /dev/sda 让内核读取
pvcreate /dev/sda{11,12} 创建物理卷
vgcreate -s 8M testvg /dev/sda{11,12}
lvcreate -L 5G -n testlv testvg 创建逻辑卷
mke2fs -t ext4 /dev/testvg/mylv1
mount -a /user -o acl /dev/testvg/mylv1 /user

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

     mkdir -p /users/magedu
     useradd -d /users/magedu magedu

     su - magedu
     cp /tmp/* /users/magedu

15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;
之前已经有5G
lvextend -L +4G /dev/testvg/mylv1
df -h #发现硬盘并没有增大
resize2fs -p /dev/testvg/testlv

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

 umount /dev/testvg/mylv1
 resize2fs /dev/testvg/testlv 2G 
 lvreduce -L 2G /dev/testvg/mylv1
 mount /dev/testvg/testlv /users

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

   lvcreate -L 30M -n backup -s -p r /dev/testvg/testlv

有些是以前做过的 改了一下。毕竟没那没多时间  看一下在回忆一下就一天过去了

原创文章,作者:N19_king,如若转载,请注明出处:/19625

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-23 13:41

    写的很好,排版很好,但是脚本很大一部分有些问题,在仔细测试一下

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达开户  万达主管QQ  万达招商  万达招商  万达直属  万达娱乐招商  华宇招商  万达娱乐平台  万达主管  万达娱乐主管