RAID

RAID 独立磁盘冗余阵列RAID 独立磁盘冗余阵列 RAID 计算机发展初期,”大容量”硬盘相当昂贵,1988年加州大学伯克利分校的工程师们提出了使用多块廉价硬盘组合成”大容量”硬盘的解决方案,这便是RAID,所以早期RIAD称作Redundant Array of Inexpensive Disks,中文名:廉价冗余磁盘阵列。而随着后期的发展,将硬盘组合起来的RAID阵列卡并不便宜,甚至比硬盘本身还贵,所以RAID改名为Redundant Array of Independent Disks, 中文名:独立冗余磁盘阵列 RAID通过硬件的阵列卡(也有使用软件模拟,但一般情况不会这么做,性能太差)将多块容量相同的硬盘组合成一块逻辑的大硬盘。然后再在RAID盘上进行分区,装文件系统。这样做的目的是,配合不同的RAID级别,数据存储时,RAID先将数据分解成chunk(大小可以指定),然后并行的将chunk并行写入各个硬盘,读取也是并行的从各个硬盘中读取,提高了硬盘的I/O性能。其次还能实现存储数据的时候生成校验位,存储于某块或全部硬盘中,这样模块硬盘损坏,其上的数据也能通过其它硬盘计算而来,这是自动进行的,提高了硬盘的容错能力。总之使用RAID,配合不同的运行级别,将提高硬盘总体的I/O性能和容错能力。 RAID实现方式 外接RAID卡 主板集成RAID控制器 通过软件模拟 对于有硬件的RAID卡,可以在启动BIOS时按照硬件厂商提供的配置界面对RAID进行配置,然后再在RAID盘上安装操作系统。也可以先安装操作系统再配置RAID。 RAID级别 目前常用的RAID级别: RAID-0, RAID-1, RAID-5, RAID-6, RAID-10, RAID-01 RAID-0 条带卷 strip, 将数据分割成chunk, 存在不同的硬盘中,写入和读取时并行进行。 提升读写能力 无容错能力 最少磁盘数2 可用空间: n*min(disk1,disk2 …) RAID-1 镜像卷 mirror, 存储数据时,将数据复制一份存在另一块硬盘中。读取时并行进行。 降低写入能力,提升读取能力 可以同时坏一块硬盘 最少两块磁盘 可用磁盘空间: 0.5*n*min(disk1,disk2,disk3 … ) RAID-4 存储数据的时候,并行进行,并生成校验位, 其中一块磁盘做校验盘,通过计算可算出任意一块磁盘的数据,读取数据也是并行进行。RAID-4有一个天生的缺陷,由于该级别使用一块硬盘来存储校验位,实际生产经验得到,这块存储校验位的硬盘总比其它硬盘更容易损坏,可能是其I/O次数比其它硬盘多所致。 提高读写能力 可以同时坏一块磁盘 至少三块磁盘 可以空间: (n-1)*min(disk1,disk2 … ) RAID-5 为了改进RAID-4的缺陷,RAID-5各磁盘轮循做校验盘。 提高读写能力 可以同时坏一块磁盘 至少三块磁盘 可以空间: (n-1)*min(disk1,disk2 … ) RAID-6 RAID-6在RAID-5的基础上,存储数据的时候计算两份校验只,将校验验值存在不同磁盘中,各磁盘轮循做校验盘

磁盘配额 quota

磁盘配额 quota磁盘配额 quota 对于多用户的Linux系统而言,磁盘空间总是很宝贵的,若某用户过度占用磁盘将影响其他用户的使用,若磁盘空间耗尽将会影响系统的正常运行。征对此种情况,我们可以通过磁盘配额限制普通用户最大能使用的磁盘空间。 quota 常用情况 /home/ 限制家目录的空间 httpd server 限制网站空间 ftp server 限制网络共享空间 mail server 限制邮件空间 磁盘配额quota限制的方式 通过属主限制 当用户添加了quota, 该用户创建的的文件所占的空间必须遵守限额规定。即对文件的属主生效。 通过属组限制 当属组添加了quota,主组是该组的用户所创建的文件所占的空间必须遵守限额的规定。即对文件的属组生效。 quota 限制方法 限制block,磁盘容量,一般使用这种方式 限制inode,创建文件的数量 柔性劝导(soft),硬性规定(hard),宽限期限(grace period ) 柔性劝导(soft): 当磁盘空间使用超过soft(block/inode)规定的值时将在每次用户增加磁盘空间的时候均提醒用户,在未超过硬性规定值之前,不禁止用户增加使用空间。 硬性规定(hard): 当磁盘空间超过硬性规定值之后,用户将无法再增加磁盘的使用空间。 宽限期限(grace period ): 设置soft和hard的目的在于提前提醒用户空间将快使用完,而宽限期限是当用户使用的空间在soft和hard之间时,再增加日期的限定,当超过此日期(从超过soft的时间开始算起),用户能使用的最大空间将是soft设定的值。 实验 这里的磁盘配额针对单独的分区做限制,默认新分区未启用磁盘限额的功能,我们需在挂载分区时添加磁盘配额特性,并启用该功能。其次还需在分区所挂载的目录下生成限额数据库(quota.user, quota.group 分别征对用户和用户的主组),我们新建两个用户(user1, user2)和组(grp1),将用户user1,user2的主组设定为grp1,然后对这两个用户和组添加quota磁盘空间限制,测试用户和组在启用配额的分区空间的限制 第一步 配置实验环境 关闭SELinux 不关闭SELinux,将无法生成磁盘配额数据库,所以我们这里将其关闭 #停用SELinux [root@zhubiaook work]# setenforce 0 #修改配置文件,禁止开机启动SELinux [root@zhubiaook work]# cat /etc/selinux/config | grep "^SELINUX=" SELINUX=permissive 创建用户和组 #创建组grp1

源码安装 rpm & yum

程序包管理: 源码安装 rpm & yum程序包管理: 源码安装 rpm & yum 操作系统上的程序都是程序员通过工具开发出来的,程序员直接编写的文本称为源码,计算机只能识别二进制文件,所以程序员编好的源码要能在计算机上运行需编译为二进制文件。 通过源码来安装首先要部署好系统环境,然后将源码编译为二进制文件,然后再将二进制文件及运行该程序的一些配置文件放到指定的目录下,这对于没有编程经验的人来说是很痛苦的一件事。系统厂商为了解决编译所给客户带来的麻烦,在与我们相同的系统环境上完成编译,并将二进制文件,配置文件,程序安装默认路径,程序相关信息打包压缩到一个文件中,发布到网络上或光盘中提供给用户下载,用户只需要将该文件下载下来,用系统厂商提供的安装工具进行安装即可完成软件的部署。对于CentOS系统,给系统厂商给我们提供的编译好的程序是以.rpm结尾的压缩文件,安装工具有rpm和yum,两者的关系后文件介绍。 源码安装 在网络上有很多开源程序是通过源码的方式发布的,若此时又没有编译好的压缩包,或者未针对我们使用的系统编译的程序包,那我们只能自己下载源码,自己编译。 我们以一个C语言编写的源码为例演示,程序开发、编译、运行的过程 编译过程如下: 程序源码(hello.c) --预处理--> 预处理程序(hello.i) --编译--> 汇编程序(hello.s) --汇编--> 目标程序--链接--> 可执行文件 首先安装好c语言编译工具gcc,gcc可以将源码一步就编译为可执行文件,但此处为了演示编译的过程,我们按上面的编译过程分步操作。 [root-yum.repos.d] $ yum -y install gcc 上面是通过yum工具安装gcc编译工具,对于yum安装的方式后文介绍 a. C语言源码 我们用C语言,打印一句经典的话”hello world!” [root-c] $ cat hello.c #include <stdio.h> //声明头文件 int main() //程序入口 { printf("hello world!\n"); //打印"hello world!" return 0; } b. 预处理 gcc中 -E选项是用来生成预处理程序 [root-c] $ gcc -E hello.c -o hello.i [root-c] $ ls

文件查找 locate & find

文件查找(find, locate)文件查找(find, locate) 在Linux文件系统中快速、准确的搜索到自己想要的文件是运维人员的一项基本能力 在Linux系统中主要使用find和locate来查找文件,两者的区别如下 locate 基于数据库索引进行查找,查找文件速度快,是模糊查询,查找不够精确,同时数据库自动更新周期为每天一次,导致不能实时查找,可以通过手动更新数据库来达到实时查找,不过更新数据库将会搜索整个磁盘,耗费系统资源,当系统繁忙时是一件危险的操作。 find 命令选项特别多,可以根据各种条件精确查找文件,通过搜索磁盘进行查找,属于实时查找,由于搜索磁盘,速度比locate慢。 locate locate [options] keyword locate 查找包含关键词或正则表达式匹配的文件路径或文件名,然后输出文件的完整路径,所查找的文件需具有读、执行权限。 常用选项 -i | –ignore-cate #查找文件时忽略大小写 -r | –regexp REGEXP #使用基本正则表达式匹配文件路径 -n NUM #输出搜索到的前N个匹配的路径 实例 查找家目录下面包含.txt的文件 [centos7@root math]# locate ~/*.txt /root/1.txt /root/3.txt /root/dest.txt /root/destination.txt /root/passwd.txt /root/shadown.txt /root/source.txt 查找/etc/目录下面结尾包含config,且路或文件名中包含数字的文件 locate -r "/etc/.*[[:digit:]]\+.*config$" <=使用正则表达式进行匹配 /etc/dconf/db/distro.d/10-authconfig /etc/selinux/targeted/active/modules/100/authconfig /etc/setuptool.d/98netconfig /etc/setuptool.d/99authconfig /etc/setuptool.d/99kbdconfig /etc/setuptool.d/99mouseconfig /etc/setuptool.d/99sndconfig /etc/setuptool.d/99timeconfig /etc/sysconfig/ip6tables-config 查找家目录下以m开头的文件,忽略大小写 [centos7@root math]# locate -i ~/m <= -i忽略大小写

文本三剑客之 grep

文本三剑客之 grep文本三剑客之 grep 正则表达式是一钟特殊的字符串模式,用于匹配一组字符串,正则表达式的宗旨是文本资源为我所用。正则表达式是vim, grep, sed, awk等重多强大文本处理工具的重要组成部分。正则表达式因”坑”多而闻名,其实是对正则的掌握不到位所致。各工具中正则的语法有所差别,我们将介绍在Linux系统上处理文本的三个重要工具grep, sed, awk。 本文首先介绍grep grep, sed, awk grep(包括egrep): 主要用来过滤文本 sed: 文本编辑 awk: 文本分析处理 正则表达式分类 在Linux系统中,正则表达式分为两类: 基本正则表达式 扩展正则正则表达式 正则表达式的组成 正则表达式一般由匹配字符,次数控制字符,位置控制字符,分组字符,普通字符组成,除了普通字符外的字符都叫元字符,元字符不再表示字符字面意义,而表示控制或通配功能。 基本正则表达式 字符匹配 用来表示通配功能 字符 作用 . 匹配任意单个字符 [] 匹配指定范围内的任意单个字符 [:lower:] 匹配小写字母, 同a-z,但与匹配路径的通配符不一样喔 [:upper:] 匹配大写字母,同A_Z [:alph:] 匹配所有大小写字母,同a-z,A-Z [:digit:] 匹配数字,同0-9 [:xdigit:] 匹配十六进制数字 [:alphnum:] 匹配所有字母和数字, 同a-z,A-Z,0-9 [:blank:] 匹配空白字符(空格和制表符) [:space:] 匹配水平或垂直空白字符(比[:blank:]包含的范围广) [:cntrl:] 匹配不可打印的控制字符(退格、删除等) [:print:] 匹配可打印字符 [:punct:] 匹配标点符号 [:graph:] 匹配可打印的非空白字符 匹配次数

Linux 用户和组的管理

Linux 用户和组的管理Linux 用户和组的管理 本文基于CentOS6 和 CentOS7系统 Linux 属于多用户多任务管理系统,系统上一切皆文件,一切用户或程序首先得获得Linux系统分配的用户,通过用户所具有对文件访问、读取、执行的权限来获取Linux系统上的资源。 用户和组的概念 用户和组在Linux系统体现为用户名、UID和组名、GID,对于Linux系统只识别UID和GID,而用户名和组名是给人看的,便于记忆,有点类似域名和IP吧。也就是说修改了用户名和组名,UID和GID不变并不会影响用户和组所具有的权限,列如我们将UID为500的用户名删除后属主部分将变成UID-rw-r--r--. 1 500 zb10 0 Jul 23 09:47 1.txt,既然通过用户就可以获取系统资源,那我们为什么还需要组呢,都是为了权限分配的方便,比如有一类用户,对某些文件具有相同的读取、删除、修改等权限,若我们一个一个的将这些权限分配给这类用户,用户数量少还可以做到,大批量用户将累惨了。可以创建一个组,然后将这类用加入到组中,然后将权限分配给组,该组的用户将继承组中的权限。 用户和组的关系 一对一 一对多 多对一 一个用户既可以只有一个组(该组为这个用户的私有组), 也可以加入多个组中(其中与用户同名的是用户的基本组,其它为该用户的附加组)。当然一个组中也可以有多个用户,这是创建组的初衷。 用户和组配置文件 文件路径 描述 /etc/passwd 用户及属性信息 /etc/shadow 用户密码及属性信息 /etc/group 组及属性信息 /etc/gshadow 组密码及属性信息 /etc/login.defs 控制新建用户和组的属性 /etc/default/useradd 新建用户默认值 /etc/skel/ 此路径中存放用户家目录的模板文件 /etc/passwd 格式描述 UserName : x : UID : GID : Comment : HomeDir : ShellDir 包含7个字段,下面分别介绍