磁盘管理

磁盘介绍

相关历史
外存储器:常用的外存储器由磁盘存储器、光盘存储器
磁盘存储器有两种:

  1. 以软质聚酯塑料薄片为基体,在基体上涂敷氧化铁磁性材料作为作为记录介质,称为软盘
  2. 采用硬质基体,在基体上生成一层很薄但很均匀的记录磁层,称为硬盘
    软盘在20世纪80至90年代盛行。软盘驱动器即软驱,是读取软盘的设备。
    软盘想要读取到计算机中,就需要映射到计算机中的某一个标识,于是字母A作为第一个盘符被软盘驱动器所占用;随后第二个软驱使用盘符B,来满足数据拷贝的需要。
    A盘是3.5英寸的软盘驱动器、B盘是5.25英寸软盘驱动器。
    后来Windows系统沿用DOS下分区设置,硬盘使用CDE盘
    目前的计算机主要使用硬盘做存储,因此都有C盘。
  • 软件默认安装到C盘的原因和磁盘的读取方式以及分区位置有关。
    硬盘分区实质上是对硬盘的一种格式化,然后才能使用硬盘保存信息。
    分区一般是先划分出一个主分区,即C盘,然后建立扩展分区,在扩展分区内再建立若干个逻辑分区,即DE等盘。
    软件默认安装C盘是为了避免出现无此分区的情况。
    另外,C盘在磁盘的最外圈,磁盘外圈的读取速度比内圈速度要快。
    这种情况仅限于机械硬盘,当前的固态硬盘(SSD)没有这种情况。
  • 大家普遍认为的C盘文件过多会影响速度,是历史遗留问题。电脑配置低的时候如果内存不够用,会调用虚拟内存使用,而虚拟内存就在C盘。不过如今的硬件配置已经足够强大,系统会有充足的空间合理分配虚拟内存,所以这个问题基本不存在了。
  • 作用:用来存放永久保存的数据(二进制方式来管理数据)

  • 分类:机械硬盘、固态硬盘

  • 机械磁盘组成:

    1. 盘片:上面布满磁性颗粒,保存写入数据
    2. 主轴:带动盘片转动,转到磁头的下方
    3. 读/写磁头:负责数据的读写
    4. 磁头臂:带动磁头,将磁头移动到指定位置
    5. 控制电路:控制硬盘的速度,磁头臂的移动等等
  • 磁盘属性:

    1. 磁道:盘片围绕在主轴周围的同心环
    2. 扇区:磁道上被分成的更小的单位,也是磁盘中保存数据最小的存储单元,
      一般大为512k,也有更大的扇区4k
    3. 柱面:在同一个磁盘中,所有盘片相同位置编号的磁道形成的一个机械磁盘
  • 操作系统读取硬盘
    操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

  • 硬盘数据组织:
    一块硬盘由若干张盘片构成,每张盘片的表面都会涂上一层薄薄的磁粉;
    硬盘提供一个/多个读写头,由读写磁头改变磁盘上磁性物质的放向,由此存储计算机中的0或1的数据;
    一块硬盘包括盘面、磁道、扇区、磁柱等逻辑组件;
    低级格式化将空白磁盘划分出柱面和磁道,再讲磁道划分为若干个扇区,每个扇区又划分出标识区、间隔区(GAP)和数据区等。

  • 磁盘分区:磁盘在系统中使用都必须先进行分区,然后建立文件系统,才可以存储数据。
    每个磁盘可以划分为若干个分区,每个分区有一个起始扇区和终止扇区。
    分区表:用来存储这些磁盘分区的相关数据。比如磁盘分区的起始地址、结束地址、是否活动等。

  • 高级格式化:磁盘分区上建立相应的文件系统,对磁盘的各个分区进行磁道的格式化,在逻辑上划分磁道。
    一个磁盘分区被格式化后,可以被称为卷(volumn)

  • 机械磁盘工作方式:
    主轴带动盘片做圆周运动,磁头臂带动磁头做直接运动

  • 常用总线协议/硬盘类型:硬盘接口-SCSI协议
    SCSI:最初是一种为小型机研制的接口技术,用于主机与外部设备之间的连接
    产生:1981年由Shugart Associates NCR研发
    作用:主要用于主机与存储之间的通信(最多可以连接16个设备)
    DAS使用SCSI协议实现主机服务器与存储设备的互联
    SCSI的版本:
    SCSI-1:定义了线缆长度,信号特性、命令和传输模式 5MB/s
    SCSI-2:定义了通用命令集CCS,提高了性能
    SCSI-3:最新版本,由多个相关标准组成
    SCSI-3架构(分三层):
    指令层:各类型设备通用的主要命令
    传输层:设备间互联和信息共享的标准规则
    物理层:接口细节;比如电信传送方法和数据传输模式
    SCSI协议模型
    主机到存储磁盘间的通信由启动器发起,由目标器接收和处理
    SCSI协议寻址:
    总线号:区分不同的SCSI总线
    设备ID:区分总线上不同的设备
    逻辑单元号:设备中的子设备

  • ATA和SATA
    ATA(高级技术附件)是上世纪90年代桌面机标准.一般被称为IDE硬盘。现已被淘汰
    采用可编程IO技术,速度和智能性不高
    SATA(Serial)技术是ATA技术的升级版本,目前桌面机主流磁盘
    特点:容量大、价格便宜,应用广泛
    SAS(Sarial Attached SCSI) 串行
    采用点对点连接方式,高带宽,效率高,支持热插拔,带宽300M/s,600M/s
    SATA是SAS的一个子标准
    SAS的可扩展性

  • I/O操作(Input/Output)

  1. 单个IO:
    操作系统内核发出一个读IO命令,当控制磁盘的控制器接到这个指令后,控制器会给磁盘发送一个读数据的指令,并同时将要读取数据块的地址传送给磁盘,然后硬盘读取数据传送给控制器,并由控制器返回给操作系统,完成一个IO操作。
  2. 读写IO:写磁盘为写IO,读数据为读IO
    随机访问(Random Access)与连续访问(Sequential Access):由档次IO给出的扇区地址与上次IO结束的扇区地址相差得是否较大决定。
    顺序IO模式(Queue Mode)/并发IO模式(Burst Mode):由磁盘组一次能执行的IO命令个数决定
    完整的IO操作:
    当控制器读硬盘发出一个IO操作指令的时候,磁盘的磁头臂带着读写磁头离开着陆区,然后移动到要操作初始数据块所在的磁道正上方。此过程为寻道,消耗时间为寻道时间;
    磁头等到盘片旋转到初始数据块所在的扇区的正上方,此时才能进行数据的读取,这个过程称之为旋转时间
    然后读取相应数据,直到完成这次IO所操作的全部数据,这个过程所花费时间称之为数据传送时间
  • 硬盘性能
    1. 机械部件:影响着存储系统的整体性能
    2. 磁盘服务时间:磁盘完成一个I/O请求的总时间
    3. 寻道时间:用于将磁头
      全程寻道时间
      平均寻道时间
      道间寻道时间
    4. 旋转时间:评价转动延迟:完全旋转用时的一半
    5. 数据传输时间:
    6. IOPS:
      IOPS是IO系统每秒所指向IO操作的次数,是一个重要的用来衡量系统IO能力的参数。对于单个磁盘,计算完成一次IO所需要的时间来推算其IOPS
      IOTime=寻道时间+60s/转速/2 + IOChunkSize/传送速度
      IOPS=1/IOTime = 1/(寻道时间+60s/转速/2) + IOChunkSize/传输速度
      当单次IO越小的时候,单次IO所耗费的时间也越少,相应的IOPS也就越大
    7. 带宽:
      指磁盘在实际使用的时候从磁盘系统总线上流过的数据量
    8. 利用率和相应时间

固态硬盘概述

  • 由于价格逐渐下降,容量越来越大,固态硬盘(SSD)变得越来越流行
  • SSD原理:
    1.使用flash技术存储信息
    2.内部没有机械结构因此耗电量更小、散热小、噪音小
  • 但是,基于SSD的使用频率,SSD盘使用寿命有限
  • SSD的3种主要类型:
    • SLC(Single Level Cell), 单层式存储单元
      每个存储单元只能存1bit数据
    • MLC(Multi Level Cell),多层式存储单元
      每个存储单元只能存2bit数据
    • TLC(Triple Level Cell),三层式存储单元
      每个存储单元只能存3bit数据
  • 固态硬盘的磨损
    1.对SSD盘的可靠性影响最大的是其抗磨损能力,即其cell能被擦写的次数
    2.企业级的SLC、MLC和TLC在抗磨损方面区别明显,SLC最高
  • 固态硬盘结构
    SSD硬件结构
    备用电源、FLASH、SAS接口、SSD控制器、DDR内存
  • SSD性能优势
    1.相应时间短
    机械硬盘的机械特性导致大部分时间浪费在寻道和机械延迟上,数据传输效率受到严重制约
    2.读写效率高
    机械硬盘在进行随机读写操作时,磁头不停的移动,导致读写效率低下。而SSD通过内部控制器计算出数据的存放位置,直接进行存取操作,故效率高。
    3.SSD功耗优势
    4.SSD的环境适应优势强

磁盘与文件系统管理

概述

  • 设备名用字母表示不同的设备接口。原则上,SCSI/SAS/SATA/USB接口硬盘都被视为SCSI接口类型,其设备文件名以/dev/sd开头
  • IDE硬盘由内部连接来区分,以/dev/hd开头。
    1. /dev/hda 表示第一个IDE通道(IDE1)的主设备
    2. /dev/hdb 表示第一个IDE通道(IDE1)的从设备
    3. /dev/hdc 表示第二个IDE通道(IDE2)的主设备
    4. /dev/hdd 表示第二个IDE通道(IDE2)的从设备

sd: 串行设备,SCSI,U盘等外设
hd:标识为IDE设备
fd:软驱
tty:终端
vd: virtio磁盘

a:标识磁盘的编号或者顺序 a,b,c,d…
1:代表分区的编号,以数字来标识

分区

  • 磁盘中的分区表用来存储磁盘分区的相关数据。分区表存储在主引导记录(MBR, Master Boot Record)内。
  • 基于x86处理器的操作系统通过BIOS与硬件进行通信,BIOS使用MBR分区样式来识别所配置的磁盘。
  • MBR分区结构:主引导记录,是目前最广泛的一种分区结构,又称为DOS分区结构
    位于磁盘的0号扇区(512字节)
  • 一个MBR磁盘内最多可用创建3个主分区和1个扩展分区。必须在扩展分区中建立逻辑分区才能存储文件。
    组成部分:
    引导代码:负责整个系统的启动,引导代码占用440字节,loader
    磁盘签名:
    初始化磁盘写入的磁盘标签,标签被损坏,则系统会提示初始化磁盘’
    占用4字节大小
    MBR分区表:
    整个硬盘的分区表,占用64字节(64/16=4)
    MBR结束标志:
    一直为’55 AA’,占用扇区最后2个字节
  • GPT分区结构:GUID分区
    组成部分:
    保护MBR:
    位于GPT磁盘第一扇区,0号扇区,包含磁盘签名,MBR磁盘分区表和结束标志,没有引导代码
    GPT头部信息:位于1号扇区,创建GPT磁盘时会定义分区表的起始位置,和结束位置以及每个分区项的大小和校验信息
    分区表
    2-33号磁盘,共用32扇区,最多创建128分区选项,每个分区表大小为128字节
    分区区域:代表用户存储数据区域
    分区表备份:
    对32个扇区进行完整的备份
    GPT头备份
    存放于最后一个扇区
  • MBR与GPT的区别:
    识别磁盘MBR最多2T
  • MBR分区:
    P = Primary partition主分区
    E = Extended partition扩展分区 1个
    L = Logical partition逻辑分区 最多12个

inode

  1. 文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
    每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

  2. inode包含的元信息有:文件字节数、uid,gid,rwx权限、时间戳、链接数、数据block位置
    stat命令可以查看inode信息:

    [root@localhost ~]# stat aa
    File: ‘aa’
    Size: 0 Blocks: 0 IO Block: 4096 regular empty file
    Device: fd00h/64768d Inode: 35260632 Links: 1
    Access: (0644/-rw-r–r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2019-02-23 13:47:13.904701959 +0800
    Modify: 2019-02-23 13:47:10.845702557 +0800
    Change: 2019-02-23 13:47:10.845702557 +0800
    Birth: -

  3. inode大小:一般是128字节或256字节;inode节点总数在格式化的时候给定,一般每1KB或2K一个inode
    查看每个硬盘分区的inode总数和已使用,用df命令
    查看每个节点的大小:dumpe2fs -h /dev/hda | grep “Inode size”

    [root@localhost ~]# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/mapper/centos-root 8910848 242368 8668480 3% /
    devtmpfs 121483 399 121084 1% /dev

  4. 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号.
    用户通过文件名打开文件:
    系统内部分三个过程:
    a. 系统找到这个文件名对应的inode号码;
    b. 通过inode号码,获取inode信息;
    c. 根据inode信息,找到文件数据所在的block,读出数据。
    查看文件名对应的inode号:

    [root@localhost ~]# ls -i aa
    35260632 aa

  5. 目录(directory)也是一种文件,目录文件就算一系列目录项的列表。每个目录项,由两部分组成:
    a. 所包含文件的文件名
    b. 该文件名对应的inode号码
    ls -i命令列出整个目录文件,即文件名和inode号码

  6. 硬连接
    一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。
    这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)

    ln 源文件 目标文件

  7. 软链接
    文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)
    这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:“No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。

    ln -s 源文文件或目录 目标文件或目录

文件系统:

文件系统是系统用于明确磁盘或者分区上的文件的方法和数据结构,用来组织和存放数据的
常用文件系统类型:
linux:
ext4:第四代扩展文件系统(主流)
ext3
XFS: SGI高级日志文件系统
SWAP:交换分区
windows:
Fat16,32,NFTS,JFS

ext4与ext3的区别:
更多的子目录数据:ext3:32000子目录;ext4不限制
编辑更大的文件系统和更大的文件
ext3 最多支持32T的文件系统和2T的文件
ext4 支持文件系统为1EB,文件容量16TB
日志校验功能
XFS文件系统
数据安全性
可扩展性
高带宽

命令操作:

fdisk -l 查看系统中磁盘详情
1.利用fdisk工具进行分区
partprobe /dev/sdb1 使分区生效
2.进行文件系统创建
mkfs -t ext4|xfs|ext3 分区名称
eg: mkfs -t ext4 /dev/sdb1
mkfs.ext4 /dev/sdb1
3.创建挂载点,一般在mnt目录
mkdir /mnt/mount_dir
4.进行文件系统挂载
mount /dev/sdb1 /mnt/mount_dir #此方法为一次性挂载
永久挂载修改/etc/fstab文件,此文件为开机自动引导的文件系统
#挂载文件内容:
[root@localhost ~]# cat /etc/fstab
/dev/sdb1 #所挂载的文件系统
/mnt/class #挂载点
ext4 #文件系统类型
defaults #挂载选项(rw,defaults)
0 #是否需要dump备份(0不需要1需要)
0 #开机磁盘检查顺序(0不检查1优先检查2其次)
5.查看挂载
mount
df -hT
6.卸载
umount /mnt/mount_dir or
umount /dev/sdb1
7.创建交换分区
7.1:分区
7.2:创建交换分区文件系统
mkswap /dev/sdc1
7.3: 挂载
swapon /dev/sdc1
7.4:查看挂载
swapon -s
swapon -a 重新挂载

具体操作:

[root@localhost ~]# fdisk /dev/sda 
		Welcome to fdisk (util-linux 2.23.2).
		Changes will remain in memory only, until you decide to write them.
		Be careful before using the write command.
		Command (m for help): m       
		Command action
		   a   toggle a bootable flag
		   b   edit bsd disklabel
		   c   toggle the dos compatibility flag
		   d   delete a partition			#删除一个分区
		   g   create a new empty GPT partition table
		   G   create an IRIX (SGI) partition table
		   l   list known partition types #列出一个分区
		   m   print this menu
		   n   add a new partition	#增加一个新的分区
		   o   create a new empty DOS partition table
		   p   print the partition table	#打印分区列表
		   q   quit without saving changes	#退出
		   s   create a new empty Sun disklabel
		   t   change a partition's system id	#改变分区类型
		   u   change display/entry units
		   v   verify the partition table
		   w   write table to disk and exit		#保存退出
		   x   extra functionality (experts only)

		
		创建一个5G的分区:
		Command (m for help): n
		Partition number (1-128, default 1): 
		First sector (34-41943006, default 2048): 
		Last sector, +sectors or +size{K,M,G,T,P} (2048-41943006, default 41943006): +5G
		Created partition 1


		Command (m for help): p

		Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
		Units = sectors of 1 * 512 = 512 bytes
		Sector size (logical/physical): 512 bytes / 512 bytes
		I/O size (minimum/optimal): 512 bytes / 512 bytes
		Disk label type: gpt
		Disk identifier: F46355D8-33D2-48E8-B85E-6929D22CC910


		#         Start          End    Size  Type            Name
		 1         2048     10487807      5G  Linux filesyste 
		...
		#         Start          End    Size  Type            Name
		 1         2048     10487807      5G  Linux filesyste 
		 2     10487808     20973567      5G  Linux filesyste 
		 3     20973568     27265023      3G  Linux filesyste 
		 4     27265024     41943006      7G  Linux filesyste 
	让分区立即生效:
		parprobe /dev/sdb
	创建文件系统:
		mkfs -t ext4 /dev/sdb
	创建交换分区:
		mkswarp /dev/sdc1
	查看交换分区:
		swapon -s
	查看id号:(建议挂载时使用UUID号,因为UUID是唯一的)
		blkid
	
	整个流程总结:
	 1004  fdisk /dev/sdb  	#添加分区 	注意最后w保存
	 1005  mkfs -t ext4 /dev/sdb1 	#创建文件系统
	 1006  mkdir /mnt/room		#创建挂载目录
	 1007  mount /dev/sdb1 /mnt/room/	#挂载
	 1008  vim /etc/fstab 	#添加到fstat配置文件
	 1009  mount -a		#挂载全部
	 1010  df -hT	#查看挂载是否成功
	 #删除分区前先卸载
	 1012  umount /dev/sdb1 	#卸载磁盘
	 1013  umount /mnt/room/	#卸载
	 1014  fdisk /dev/sdb	#d命令删除磁盘

LVM(Logical Volume Manager)逻辑卷管理

概述

逻辑卷管理是Linux环境下对磁盘分区进行管理的一种机制 LVM是建立在磁盘和分区之上的一个逻辑层(类似于虚拟化技术),来提高磁盘分区管理的一个灵活性。
特点:
1.灵活的容量
2.可伸缩的存储池
3.在线的数据再分配
4.方便的设备命名
5.磁盘条带化
注意:
LVM屏蔽了底层磁盘的布局,便于动态调整磁盘容量
/boot分区不能应用LVM机制,存放引导文件

LVM机制的基本概念:
PV:(Physical Volume)物理卷
利用分区工具(fdisk)得到的普通分区,也可以是整块磁盘
包含许多PE(Physical extent基本单元),默认大小为4MB
VG:(Volume Group)卷组
由一堆PV组成的资源组,称为卷组
LV:(Logical Volume)逻辑卷
从VG里面动态划出一部分用于创建文件系统的空间称为LV

逻辑卷的创建

1.准备物理设备(磁盘/分区)
	#在虚拟机中添加两块磁盘(/dev/sdb1, /dev/sdc1)
	  Device Boot      Start         End      Blocks   Id  System
		/dev/sdb1            2048    41943039    20970496   83  Linux
		/dev/sdc1            2048    41943039    20970496   83  Linux
2.创建物理卷(PV)
	创建pv:pvcreate /dev/sdb1 /dev/sdb2
	[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1
	Physical volume "/dev/sdb1" successfully created.
	Physical volume "/dev/sdc1" successfully created
3.创建卷组(VG)
	[root@localhost ~]# vgcreate -s 8M mygroup /dev/sdb1 /dev/sdc1
	Volume group "mygroup" successfully created
	注释: 
		-s 8M 	设置PE块大小
4.创建逻辑卷(LV)
	[root@localhost ~]# lvcreate -n mymate -L 10G mygroup
	Logical volume "mymate" created.
	注释:
		-n mymate 逻辑卷名称
		-L  20G  将逻辑卷的大小直接确定为20G
		-l 500   将逻辑卷的大小设置为500个PE块
		
5.创建文件系统(mkfs)
[root@localhost ~]# mkfs -t ext4 /dev/mygroup/mymate  或(mkfs -t ext4 /dev/mapper/mygroup-mymate )  二选一
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done


6.进行挂载
	创建挂载目录:
		mkdir /mnt/class 
	一次性挂载:
		mount /dev/mygroup/mymate /mnt/class 
	查看挂载:
		df -hT
	永久性挂载(/etc/fstab)
		/dev/mygroup/mymate /mnt/class ext4  default  0  0  
		
	[root@localhost ~]# mount /dev/mygroup/mymate /mnt/class/
	[root@localhost ~]# df -hT
	Filesystem                 Type      Size  Used Avail Use% Mounted on
	/dev/mapper/mygroup-mymate ext4      9.8G   37M  9.2G   1% /mnt/class
	#查看uuid
	[root@localhost ~]# blkid
	/dev/sda1: UUID="c56eb279-6ae0-407b-bbb1-bd3db02dcc75" TYPE="xfs" 
	/dev/sda2: UUID="qzN6u3-Rh9A-Joo1-Ydlh-Y7F1-pYzw-BVnN7i" TYPE="LVM2_member" 
	/dev/sdb1: UUID="lGL6z2-bA8s-cQBc-SNng-4qxj-nHnE-C9EYN4" TYPE="LVM2_member" 
	/dev/sdc1: UUID="PudbjS-ABZe-IM1o-oGIL-RgnU-IBD6-3shMg8" TYPE="LVM2_member" 
	/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
	/dev/mapper/centos-root: UUID="7907627f-08ca-4a91-b7e0-75e5fefce813" TYPE="xfs" 
	/dev/mapper/centos-swap: UUID="ed1a5b17-5a84-4077-9568-39837b13c0f2" TYPE="swap" 
	/dev/mapper/mygroup-mymate: UUID="58178fe1-7393-4243-8adb-7a6d1668405f" TYPE="ext4" 
	#使用uuid挂载
	UID=58178fe1-7393-4243-8adb-7a6d1668405f /mnt/class ext4  defaults  0  0  
	
	注意:如果启动失败,可能原因是/etc/fstab配置错误,请查看该文件并重启服务器
	
7.验证逻辑卷可用性
[root@localhost ~]# cd /mnt/class/
[root@localhost class]# ls
lost+found
[root@localhost class]# vim aa
[root@localhost class]# ls
aa  lost+found
8.查看逻辑卷
	#查看pv
	[root@localhost class]# pvdisplay /dev/sdb1 
	  --- Physical volume ---
	  PV Name               /dev/sdb1
	  VG Name               mygroup
	  PV Size               <20.00 GiB / not usable 7.00 MiB
	  Allocatable           yes 
	  PE Size               8.00 MiB
	  Total PE              2559
	  Free PE               1279
	  Allocated PE          1280
	  PV UUID               lGL6z2-bA8s-cQBc-SNng-4qxj-nHnE-C9EYN4
	[root@localhost class]# pvdisplay /dev/sdc1 
	  --- Physical volume ---
	  PV Name               /dev/sdc1
	  VG Name               mygroup
	  PV Size               <20.00 GiB / not usable 7.00 MiB
	  Allocatable           yes 
	  PE Size               8.00 MiB
	  Total PE              2559
	  Free PE               2559
	  Allocated PE          0
	  PV UUID               PudbjS-ABZe-IM1o-oGIL-RgnU-IBD6-3shMg8
	#查看vg
	[root@localhost class]# vgdisplay mygroup 
	  --- Volume group ---
	  VG Name               mygroup
	  System ID             
	  Format                lvm2
	  Metadata Areas        2
	  Metadata Sequence No  2
	  VG Access             read/write
	  VG Status             resizable
	  MAX LV                0
	  Cur LV                1
	  Open LV               1
	  Max PV                0
	  Cur PV                2
	  Act PV                2
	  VG Size               39.98 GiB
	  PE Size               8.00 MiB
	  Total PE              5118
	  Alloc PE / Size       1280 / 10.00 GiB
	  Free  PE / Size       3838 / 29.98 GiB
	  VG UUID               pVtz1Y-Hny5-7K1O-cGMT-Vg7n-mXtK-DWr5Yt

	[root@localhost class]# lvdisplay /dev/mygroup/mymate 
	  --- Logical volume ---
	  LV Path                /dev/mygroup/mymate
	  LV Name                mymate
	  VG Name                mygroup
	  LV UUID                Hu3rn1-fV9r-49si-mpf0-LR4g-RQXJ-nqso5a
	  LV Write Access        read/write
	  LV Creation host, time localhost.localdomain, 2019-02-25 10:14:14 +0800
	  LV Status              available
	  # open                 1
	  LV Size                10.00 GiB
	  Current LE             1280
	  Segments               1
	  Allocation             inherit
	  Read ahead sectors     auto
	  - currently set to     8192
	  Block device           253:2

9.删除逻辑卷
	1).卸载文件系统
		umount /dev/class 或 umount /dev/mapper/mygroup-mymate 
	2).删除逻辑卷 
		lvremove /dev/mygroup/mymate
		[root@localhost class]# lvremove /dev/mygroup/mymate 
		Do you really want to remove active logical volume mygroup/mymate? [y/n]: y
		Logical volume "mymate" successfully removed
		[root@localhost class]# lvdisplay
	3).删除卷组
		[root@localhost class]# vgremove mygroup 
		  Volume group "mygroup" successfully removed
		[root@localhost class]# vgdisplay 
		  --- Volume group ---
		  VG Name               centos
		  System ID             
		  Format                lvm2
		  Metadata Areas        1
		  Metadata Sequence No  3
		  VG Access             read/write
		  VG Status             resizable

	4).删除物理卷
	[root@localhost class]# pvremove /dev/sdb1 /dev/sdc1
	  Labels on physical volume "/dev/sdb1" successfully wiped.
	  Labels on physical volume "/dev/sdc1" successfully wiped.
	5).删除/etc/fstab中的磁盘

逻辑卷的扩展和缩减

扩展卷组

[root@localhost ~]# ll /dev/sd{b,c,d}
brw-rw----. 1 root disk 8, 16 Feb 25 11:17 /dev/sdb
brw-rw----. 1 root disk 8, 32 Feb 25 11:17 /dev/sdc
brw-rw----. 1 root disk 8, 48 Feb 25 11:19 /dev/sdd
[root@localhost ~]# ll /dev/sd{b,c,d}1
brw-rw----. 1 root disk 8, 17 Feb 25 11:17 /dev/sdb1
brw-rw----. 1 root disk 8, 33 Feb 25 11:17 /dev/sdc1
brw-rw----. 1 root disk 8, 49 Feb 25 11:19 /dev/sdd1
[root@localhost ~]# pvcreate /dev/sd{b,c}1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# vgcreate group /dev/sd{b,c}1
  Volume group "group" successfully created
[root@localhost ~]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created.       
[root@localhost ~]# vgextend group /dev/sdd1
  Volume group "group" successfully extended
[root@localhost ~]# vgdisplay group
  --- Volume group ---
  VG Name               group
  System ID             
  Format                lvm2
  Metadata Areas        3

缩减卷组

				1.移动物理区段(在VG空间足够的情况下,将被移除的PV物理区域重新分配到VG中)(pvmove)
				[root@localhost ~]# vgreduce group /dev/sdb1 
				  Removed "/dev/sdb1" from volume group "group"
				2.缩减卷组空间
				[root@localhost ~]# vgdisplay group
				  --- Volume group ---
				  VG Name               group
				  System ID             
				  Format                lvm2
				  Metadata Areas        2
				  Metadata Sequence No  3
				  VG Access             read/write
				  VG Status             resizable
				  MAX LV                0
				  Cur LV                0
				  Open LV               0
				  Max PV                0
				  Cur PV                2
				  Act PV                2
				  VG Size               40.99 GiB
				  PE Size               4.00 MiB

具体的扩展卷组操作

			一、给予XFS文件系统的逻辑卷扩展
				1.验证卷组是否有可用的空间
					# vgdisplay  group 
					  VG Size               40.99 GiB
				2.扩展逻辑卷 
					[root@localhost ~]# lvcreate -n lvname -L 10G group
					  Logical volume "lvname" created.
					[root@localhost ~]# mkfs -t xfs /dev/mapper/group-lvname 
					meta-data=/dev/mapper/group-lvname isize=512    agcount=4, agsize=655360 blks
							 =                       sectsz=512   attr=2, projid32bit=1
							 =                       crc=1        finobt=0, sparse=0
					data     =                       bsize=4096   blocks=2621440, imaxpct=25
							 =                       sunit=0      swidth=0 blks
					naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
					log      =internal log           bsize=4096   blocks=2560, version=2
							 =                       sectsz=512   sunit=0 blks, lazy-count=1
					realtime =none                   extsz=4096   blocks=0, rtextents=0
					[root@localhost ~]# mkdir /mnt/xfs_dir
					[root@localhost ~]# mount /dev/mapper/group-lvname /mnt/xfs_dir/
					[root@localhost ~]# df -hT
					Filesystem               Type      Size  Used Avail Use% Mounted on
					/dev/mapper/centos-root  xfs        17G  5.0G   12G  30% /
					devtmpfs                 devtmpfs  475M     0  475M   0% /dev
					tmpfs                    tmpfs     492M     0  492M   0% /dev/shm
					tmpfs                    tmpfs     492M  8.4M  483M   2% /run
					tmpfs                    tmpfs     492M     0  492M   0% /sys/fs/cgroup
					/dev/sda1                xfs      1014M  150M  865M  15% /boot
					tmpfs                    tmpfs      99M   24K   99M   1% /run/user/0
					/dev/sr0                 iso9660   4.3G  4.3G     0 100% /run/media/root/CentOS 7 x86_64
					/dev/mapper/group-lvname xfs        10G   33M   10G   1% /mnt/xfs_dir
				3.扩展文件系统
					[root@localhost ~]# lvdisplay /dev/group/lvname 
					  --- Logical volume ---
					  LV Path                /dev/group/lvname
					  LV Name                lvname
					  VG Name                group
					  LV UUID                uPVNLn-jM1K-sjTX-I0l0-NflG-hpoB-EKVCt9
					  LV Write Access        read/write
					  LV Creation host, time localhost.localdomain, 2019-02-25 11:42:59 +0800
					  LV Status              available
					  # open                 1
					  LV Size                10.00 GiB
					  Current LE             2560
					  Segments               1
					  Allocation             inherit
					  Read ahead sectors     auto
					  - currently set to     8192
					  Block device           253:2
					   
					[root@localhost ~]# lvextend -L 20G /dev/group/lvname 
					  Size of logical volume group/lvname changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
					  Logical volume group/lvname successfully resized.
					[root@localhost ~]# xfs_growfs /mnt/xfs_dir/
					meta-data=/dev/mapper/group-lvname isize=512    agcount=4, agsize=655360 blks
							 =                       sectsz=512   attr=2, projid32bit=1
							 =                       crc=1        finobt=0 spinodes=0
					data     =                       bsize=4096   blocks=2621440, imaxpct=25
							 =                       sunit=0      swidth=0 blks
					naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
					log      =internal               bsize=4096   blocks=2560, version=2
							 =                       sectsz=512   sunit=0 blks, lazy-count=1
					realtime =none                   extsz=4096   blocks=0, rtextents=0
					data blocks changed from 2621440 to 5242880
					[root@localhost ~]# lvdisplay /dev/group/lvname 
					  --- Logical volume ---
					  LV Path                /dev/group/lvname
					  LV Name                lvname
					  VG Name                group
					  LV UUID                uPVNLn-jM1K-sjTX-I0l0-NflG-hpoB-EKVCt9
					  LV Write Access        read/write
					  LV Creation host, time localhost.localdomain, 2019-02-25 11:42:59 +0800
					  LV Status              available
					  # open                 1
					  LV Size                20.00 GiB

					#可用看到大小为20G,扩展成功
					`Free PE`
				4.验证是否扩展成功
					df -hT
			二、给予ext4文件系统的扩展
				1.验证卷组是否有可用扩展空间
					vgdisplay group 
				2.扩展逻辑卷
					lvextend -L 10G /dev/group/BJTLXY
				3.扩展文件系统
					resize2fs /dev/mapper/group-BJTLXY
				4.验证是否扩展成功
					df -hT
				具体操作如下:
				[root@localhost ~]# lvcreate -n BJTLXY -L 5G group 
				  Logical volume "BJTLXY" created.
				[root@localhost ~]# lvdisplay | grep BJTL
				  LV Path                /dev/group/BJTLXY
				  LV Name                BJTLXY
				[root@localhost ~]# 
				[root@localhost ~]# mkfs -t ext4 /dev/mapper/group-BJTLXY 
				mke2fs 1.42.9 (28-Dec-2013)
				Filesystem label=
				OS type: Linux
				Block size=4096 (log=2)
				Fragment size=4096 (log=2)
				Stride=0 blocks, Stripe width=0 blocks
				327680 inodes, 1310720 blocks
				65536 blocks (5.00%) reserved for the super user
				First data block=0
				Maximum filesystem blocks=1342177280
				40 block groups
				32768 blocks per group, 32768 fragments per group
				8192 inodes per group
				Superblock backups stored on blocks: 
					32768, 98304, 163840, 229376, 294912, 819200, 884736

				Allocating group tables: done                            
				Writing inode tables: done                            
				Creating journal (32768 blocks): done
				Writing superblocks and filesystem accounting information: done 

				[root@localhost ~]# mkdir /mnt/ext4_dir
				[root@localhost ~]# mount /dev/mapper/group-BJTLXY /mnt/ext4_dir/
				[root@localhost ~]# df -hT | grep BJ
				/dev/mapper/group-BJTLXY ext4      4.8G   20M  4.6G   1% /mnt/ext4_dir
				[root@localhost ~]# lvextend -L 10G /dev/group/BJTLXY 
				  Size of logical volume group/BJTLXY changed from 5.00 GiB (1280 extents) to 10.00 GiB (2560 extents).
				  Logical volume group/BJTLXY successfully resized.
				[root@localhost ~]# resize2fs /dev/mapper/group-BJTLXY 
				resize2fs 1.42.9 (28-Dec-2013)
				Filesystem at /dev/mapper/group-BJTLXY is mounted on /mnt/ext4_dir; on-line resizing required
				old_desc_blocks = 1, new_desc_blocks = 2
				The filesystem on /dev/mapper/group-BJTLXY is now 2621440 blocks long.

注意:
xfs_growfs和resize2fs直接的主要区别是为识别文件系统而传递参数
xfs_growfs采用挂载点 resize2fs采用逻辑卷名称

扩展参数选择:
lvextend -L 10G 将逻辑卷的大小正好调整为10G
lvextend -L +10G 将逻辑卷大小在原基础之上增加10G
lvextend -l 1000 将逻辑卷的大小正好调整为1000个PE块大小
lvextend -l +1000 将逻辑卷大小在原基础之上增加1000个PE块大小
lvextend -l +50%FREE 向LV中添加VG中当前可用空间的50%

试题练习:
1.根据下面的要求创建一个新的逻辑卷
逻辑卷命名为wshare,属于卷组wgroup,并且逻辑卷的大小为100个物理扩展单元
在wgroup卷组中的逻辑卷,起物理扩展单元的大小应为8MIB
使用vfat文件系统对新的逻辑卷进行格式化,逻辑卷应该在系统启动的时候自动挂载在/mnt/wshare目录下
答案:
创建分区
pvcreate /dev/sdb7
vgcreate -s 8M wgroup /dev/sdb7
lvcreate -n wshare -l 100 wgroup
mkfs -t vfat /dev/wgroup/wshare
mkdir /mnt/wshare
vim /etc/fstab
/dev/wgroup/wshare /mnt/wshare vfat defaults 0 0

2.将逻辑卷home和其文件系统大小调整到300M。要确保文件系统中的内容保持完整。请注意:
分区大小很少能够完全符合要求的大小,所以大小在270M和330M之间都是可用接受的
答案:
lvextend -L 300M  /dev/卷组名字/逻辑卷名字
resize2fs -p /dev/卷组名字/逻辑卷名字

3.在您的系统中添加一个大小为256M的分区。当您的系统启动时,swap分区应该可用自动挂载,不需要移动或者修改其已存在与您的系统中的swap分区
答案:
图像界面:
	fdisk  /dev/vdb
	mkswap  /dev/vdb1
	vim /etc/fstab
	/dev/vdb1  swap  swap  defaults  0 0

RAID的基本概念和实现方式

RAID: redundant array of independent disks

独立硬盘冗余阵列,也被称为RAID
两个特点:
	1.高效的数据组织:条带化和并行访问
		条带(strip):硬盘中单个或多个连续的扇区构成一个条带,他是一块硬盘上进一次数据读写的最小单元。它是组成分条的元素。
		分条(stipe):同一硬盘阵列中的多个硬盘驱动器上的相同"位置"(或者说是相同编号)的条带
		分条宽度:指在一个分条中数据成员盘的个数
		分条深度:指一个条带的容量大小
	2.数据保护:奇偶校验和热备用
		方法一:在另一块冗余的硬盘上保存数据的副本
		方法二:奇偶校验算法(XOR)(相同为假相异为真)
实现方法:
	硬件RAID(用的较多)
	软件RAID(主要将的内容)

RAID状态:
			(创建成功)			(成员盘掉线或故障)	(故障盘数超过冗余盘数)
	RAID组被创建---->RAID组正常工作--------->RAID组降级-------->RAID组失败
									<--------
									重构成功

常见的RAID级别与分类标准

  • RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑盘,提高了硬盘的毒性性能和数据安全性,根据不同的组合方式可用分为不同的RAID级别。
    常见RAID级别:RAID0 RAID1 RAID3 RAID5 RAID6 RAID10 RAID50
    RAID0:无差错校验的分条RAID(条带化) 不提供差错保护
    RAID1: 镜像结构的阵列(两个磁盘之间互为镜像,双写保证数据一样)
    RAID3:带奇偶校验码的分条RAID
    RAID5: 分布式奇偶校验码的独立硬盘结构
    RAID6: 具有两种校验算法的RAID类型;需要至少N+2个硬盘来构成阵列
    一般用在数据可靠性、可用性要求极高的应用场合
    常用的RAID6技术有:
    RAID6 P+Q Huawei
    RAID6 DP(Double Parity) NetApp
    在RAID4所使用的一个行XOR校验硬盘的基础上又增加了一个硬盘用于存放斜向的XOR校验信息
    RAID10: 是将镜像和条带进行组合的RAID级别,先进行RAID1镜像然后再做RAID0
    RAID10也是一种应用比较广泛的RAID级别
    RAID50: 是将RAID5和RAID0进行两级组合的RAID级别,第一级是RAID5,第二级是RAID0

RAID的典型应用场景:

  • 热备盘
    热备(Hot-Spare):当RAID组中某个硬盘失效时,在不干扰当前RAID系统正常使用的情况下,用该RAID组外一个正常的备用硬盘顶替失效硬盘
    热备通过配置热备盘实现,热备盘分为全局热备盘和局部热备盘

  • 预拷贝
    系统通过监控发现RAID组中某成员盘即将故障时,将即将故障成员盘中的数据提前拷贝到热备盘中,有效降低数据丢失风险。

  • 重构
    当RAID组中某个硬盘故障时,根据RAID算法和其他正常的成员盘,重新计算生成发送故障的硬盘上的所有数据(用户数据和校验数据),并将这些数据写到热备盘或者替换的新硬盘上的过程。

Linux下通过mdadm命令实现软件RAID配置

  • mdadm支持的模式
    1.Assemble:装配模式,将原来属于一个阵列的每个快设备组装为阵列
    2.Build:创建一个不需要元数据的阵列(超级块) ,每个设备没有元数据块
    3.Create():创建一个新的阵列,每个设备都有超级块
    –create(’-C’) 创建一个新的阵列
    –level(’-l’) 设置RAID组级别
    –raid-devices(-n) 设置设备活动个数
    –spare-devices(-x) 设置备用盘的个数
    –chunk(-c) chunk默认64k
    4.Monitor:监控模式,监控RAID状态,可以实现全局热备
    –follow(-F) 选择监控模式
    –syslog(-y) 事件日志记录
    –delay(-d) 设置raid轮询,默认时间60s
    –test(-t) 生成警告信息
    5.Grow:修改阵列属性(阵列磁盘个数,使用能量)
    grow(-G) 修改阵列大小或设备数据
    –drad-devices(-n) 活动设备个数
    –chunk(-c) 设置CHUNK大小
    –level(-l) 设置等级
    –name(-N) 设置阵列名称
    6.Incremental Assembly:添加一个设备带阵列中
    7.Misc:报告或者修改阵列中相关设备信息
    –query(-Q) 查询要给RAID或者RAID组件设备信息
    –detail(-D) 查询RAID组件详细信息
    –stop(-S) 停止
    8.Auto-detect:要求在linux内核启动时自动检测阵列

操作流程

1.进行软件安装更新
yum install mdadm -y
2.准备两块RAID0的成员盘并进行分区(/dev/sdb /dev/sdc)
# fdisk /dev/sdc
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition ‘Linux’ to ‘Linux raid autodetect’
Command (m for help): p

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x155b61b4

Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#partprobe /dev/sdb1 /dev/sdc1 #使分区生效

3.准备完磁盘后,检查磁盘是否正确定义RAID
[root@localhost ~]# mdadm --examine /dev/sd[b-c] #检查磁盘
/dev/sdb:
MBR Magic : aa55
Partition[0] : 41940992 sectors at 2048 (type fd)
/dev/sdc:
MBR Magic : aa55
Partition[0] : 41940992 sectors at 2048 (type fd)

[root@localhost ~]# mdadm --examine /dev/sd[b-c]1  #检查分区
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdc1.

4.创建RAID0(/dev/md0)
mdadm -C /dev/md0 -l raid0 -n 2 /dev/sd[b-c]1 或者
[root@localhost ~]# mdadm --create /dev/md0 --level=stripe --raid-devices=2 /dev/sd[bc]1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
5.查看raid组的状态
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdc1[1] sdb1[0]
41906176 blocks super 1.2 512k chunks

unused devices: <none>

#查看RAID组的级别:
mdadm -E /dev/sd[bc]1
#查看RAID组设备
[root@localhost ~]# mdadm --detail /dev/md0 
Number   Major   Minor   RaidDevice State
0       8       17        0      active sync   /dev/sdb1
1       8       33        1      active sync   /dev/sdc1

6.针对RAID组进行文件系统创建
[root@localhost ~]# mkfs -t ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10476544 blocks
523827 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

7.创建挂载目录并进行永久挂载
[root@localhost ~]# mount /dev/md0 /mnt/raid0/
[root@localhost ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 ext4 40G 49M 38G 1% /mnt/raid0

永久挂载:(/dev/fstab)
/dev/md0	/mnt/raid0	ext4	defaults	0	0

8.保存配置文件
[root@localhost ~]# mdadm --detail --scan --verbose >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid0 num-devices=2 metadata=1.2 name=localhost.localdomain:0 UUID=2b3e6130:1f000a16:ec205ae1:f6aa6aa1
devices=/dev/sdb1,/dev/sdc1

9.使用RAID组
echo “这是要给RAID0阵列测试文件” > /mnt/raid0/test.conf
10.重启服务器查看是否创建成功,配置成功

RAID5实现过程及故障模拟

1.检查环境并添加磁盘
madam命令是否存在
添加所需磁盘
检查磁盘是否以及存在raid
madam -E /dev/sd[b-e]
2.对磁盘进行分区,并将磁盘分区类型改为fd(raid模式)
fdisk进行磁盘分区,并将磁盘分区类型定义为raid类型
让分区立即生效:
partx -a /dev/sd[b-e] == partprobe /dev/sd[b-e]
3.分区创建完成后继续检查环境
madam -E /dev/sd[b-e]
4.创建RAID组,此处创建RAID5
madam -C /dev/md5 -l 5 -n 3 -x 1 /dev/sd[b-e]1
5.实时查看创建动态
watch -n1 cat /proc/mdstat
6.查看RAID组详细信息
madam --detail /dev/md5
7.创建文件系统并进行RAID组
mkfs -t ext4 /dev/md5
mkdir /mnt/raid5
vim /etc/fstab
mount -a
df -hT

echo "Hello world" > /mnt/raid5/test.conf 

8.写入RAID组配置文件
madam --detail --scan --verbose >> /etc/madam.conf
9.故障模拟
9.1 模拟硬盘损坏
mdadm /dev/md5 --fail /dev/sdb1
9.2 在存在热备盘的情况下,RAID自动重构,若没有热备盘,故障盘数在RAID组冗余范围内,则依旧工作,只不过状态为降级状态
‘’’
Layout: left-symmetric
Chunk Size : 512 K
Rebuild Status : 10% complete

		Name : localhost.localdomain:5 (local to host localhost.localdomain)
		UUID : 7f1515d8:a3ae73db:efd31682:599d63a4
		Events : 25
'''
9.3 移除故障盘
	mdadm /dev/md5  --remove /dev/sdb1 
9.4 修复故障磁盘
	mdamd --zero-superblock --force /dev/sdb1 
9.5 将新的工作磁盘(此为热备)加入到RAID组中
	mdadm /dev/md5  --add /dev/sdb1 
9.6 检查RAID组状态
	mdadm --detail /dev/md5 

具体的上机操作过程

1.准备四块硬盘
	[root@localhost ~]# ll /dev/ | grep sd
brw-rw----. 1 root disk      8,   0 Feb 25 23:08 sda
brw-rw----. 1 root disk      8,   1 Feb 25 23:08 sda1
brw-rw----. 1 root disk      8,   2 Feb 25 23:08 sda2
brw-rw----. 1 root disk      8,  16 Feb 25 23:08 sdb
brw-rw----. 1 root disk      8,  17 Feb 25 23:08 sdb1
brw-rw----. 1 root disk      8,  32 Feb 25 23:08 sdc
brw-rw----. 1 root disk      8,  33 Feb 25 23:08 sdc1
brw-rw----. 1 root disk      8,  48 Feb 25 23:08 sdd
brw-rw----. 1 root disk      8,  49 Feb 25 23:08 sdd1
brw-rw----. 1 root disk      8,  64 Feb 25 23:08 sde
brw-rw----. 1 root disk      8,  80 Feb 25 23:08 sdf
brw-rw----. 1 root disk      8,  96 Feb 25 23:08 sdg
brw-rw----. 1 root disk      8, 112 Feb 25 23:08 sdh
[root@localhost ~]# mdadm --examine /dev/sd[e-h]
mdadm: No md superblock detected on /dev/sde.
mdadm: No md superblock detected on /dev/sdf.
mdadm: No md superblock detected on /dev/sdg.
mdadm: No md superblock detected on /dev/sdh.
# 分别分区fdisk /dev/sde  /dev/sdf  /dev/sdg  /dev/sdh
#生效 partprobe /dev/sd[e-h]
#创建raid5:
root@localhost ~]# mdadm -C /dev/md5 -l 5 -n 4 -x 1 /dev/sd[e-h]1  #4不对,表示活动磁盘
mdadm: You haven't given enough devices (real or missing) to create this array
[root@localhost ~]# mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sd[e-h]1
mdadm: largest drive (/dev/sde1) exceeds size (26195968K) by more than 1%
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
#查看:mdadm --detail /dev/md5 
    Number   Major   Minor   RaidDevice State
       0       8       65        0      active sync   /dev/sde1
       1       8       81        1      active sync   /dev/sdf1
       4       8       97        2      spare rebuilding   /dev/sdg1

       3       8      113        -      spare   /dev/sdh1

#挂载 
[root@localhost ~]# mkfs -t ext4 /dev/md5 
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
3276800 inodes, 13097984 blocks
654899 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2162163712
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

[root@localhost ~]# vim /etc/fstab 
[root@localhost ~]# mkdir /mnt/
cdrom/    class/    ext4_dir/ raid0/    sdb1/     xfs_dir/  
[root@localhost ~]# mkdir /mnt/raid5
[root@localhost ~]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        17G  5.1G   12G  30% /
devtmpfs                devtmpfs  475M     0  475M   0% /dev
tmpfs                   tmpfs     492M     0  492M   0% /dev/shm
tmpfs                   tmpfs     492M  8.4M  483M   2% /run
tmpfs                   tmpfs     492M     0  492M   0% /sys/fs/cgroup
/dev/md0                ext4       40G   49M   38G   1% /mnt/raid0
/dev/sda1               xfs      1014M  150M  865M  15% /boot
tmpfs                   tmpfs      99M   28K   99M   1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0 100% /run/media/root/CentOS 7 x86_64
[root@localhost ~]# mount -a
[root@localhost ~]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        17G  5.1G   12G  30% /
devtmpfs                devtmpfs  475M     0  475M   0% /dev
tmpfs                   tmpfs     492M     0  492M   0% /dev/shm
tmpfs                   tmpfs     492M  8.4M  483M   2% /run
tmpfs                   tmpfs     492M     0  492M   0% /sys/fs/cgroup
/dev/md0                ext4       40G   49M   38G   1% /mnt/raid0
/dev/sda1               xfs      1014M  150M  865M  15% /boot
tmpfs                   tmpfs      99M   28K   99M   1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0 100% /run/media/root/CentOS 7 x86_64
/dev/md5                ext4       50G   53M   47G   1% /mnt/raid5



[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md5 : active raid5 sdg1[4] sdh1[3](S) sdf1[1] sde1[0]
      52391936 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
md0 : active raid0 sdc1[1] sdb1[0]
      41906176 blocks super 1.2 512k chunks
      
unused devices: <none>

[root@localhost ~]# mdadm --detail --scan --verbose >> /etc/mdadm.conf 
[root@localhost ~]# cat /etc/mdadm.conf 


#模拟一个磁盘故障
mdadm --detail /dev/md5 
    Number   Major   Minor   RaidDevice State
       0       8       65        0      active sync   /dev/sde1
       1       8       81        1      active sync   /dev/sdf1
       4       8       97        2      active sync   /dev/sdg1

       3       8      113        -      spare   /dev/sdh1

#使/dev/sde1故障:
[root@localhost ~]# mdadm /dev/md5 --fail /dev/sde1 
mdadm: set /dev/sde1 faulty in /dev/md5
# mdadm --detail /dev/md5 
    Number   Major   Minor   RaidDevice State
       3       8      113        0      spare rebuilding   /dev/sdh1
       1       8       81        1      active sync   /dev/sdf1
       4       8       97        2      active sync   /dev/sdg1

       0       8       65        -      faulty   /dev/sde1

可以看到/dev/sde1在故障,/dev/sdh1在rebuilding重构,
#移除故障盘
[root@localhost ~]# mdadm /dev/md5 --remove /dev/sde1 
mdadm: hot removed /dev/sde1 from /dev/md5
# mdadm --detail /dev/md5 
    Number   Major   Minor   RaidDevice State
       3       8      113        0      active sync   /dev/sdh1
       1       8       81        1      active sync   /dev/sdf1
       4       8       97        2      active sync   /dev/sdg1

#修复
[root@localhost ~]# mdadm --zero-superblock --force /dev/sde1

[root@localhost ~]# mdadm /dev/md5 --add /dev/sde1 
mdadm: added /dev/sde1

再查看:
    Number   Major   Minor   RaidDevice State
       3       8      113        0      active sync   /dev/sdh1
       1       8       81        1      active sync   /dev/sdf1
       4       8       97        2      active sync   /dev/sdg1

       5       8       65        -      spare   /dev/sde1


即:如果发现有故障盘,则删除故障盘,然后再加上一个好的盘

磁盘压力:

写测试:dd if=/dev/zero of=/dev/md10 bs=256M count=1 oflag=dsync
读测试;dd if=/dev/md10 of=/dev/null bs=256K count=1000

#安装iozone ,用于系统测试
#iozone -Ra /dev/md10 -b ~/md10.xls

Linux目录挂载后目录里原文件消失

mkdir /new ###创建临时目录
mount /dev/sdb1 /new ###将磁盘挂载到临时上目录
cp -R /home/* /new ###将/home下的所有数据复制到/new
rm -rf /home/* ####可选,主要为了腾出空间给原来的硬盘
umount /new ###解除挂载
rm -rf /new ###删除临时目录
mount /dev/sdb1 /home ###挂载/home 到新硬盘

  • 分区完以后还要对分区格式化以及加载
    用 mkfs.bfs mkfs.ext2 mkfs.jfs mkfs.msdos mkfs.vfatmkfs.cramfs mkfs.ext3 mkfs.minix mkfs.reiserfs mkfs.xfs 等命令来格式化分区,比如我想格式化 sda7为ext3文件系统,则输入;

    mkfs.ext3 /dev/sda7 #然后加载sda7到目前系统来存取文件,应该有mount 命令,但首先您得建一个挂载目录;比如 /mnt/sda7
    mount /dev/sda7 /mnt/sda7 #然后 df -lh 查看
    就能进入 /mnt/sda7目录,然后存取文件了

swap空间不足导致,需要扩大交换空间的解决办法

解决:1、使用dd命令创建一个swap分区
2、#dd if=/dev/zero of=/home/swap bs=1024 count=16400000
3、格式化刚才创建的分区
4、# mkswap /home/swap
5、再使用swapon命令把这个文件分区变成swap分区
6、#swapon /home/swap
7、(关闭SWAP分区的命令为:#swapoff /home/swap)
8、再用free -m 查看已经扩容的了swap分区。
9、为了能够让swap自动挂载,需要修改etc/fstab文件,用vi /etc/fstab
10、在文件末尾加上 /home/swap swap swap default 0 0
11、这样就算重启系统,swap分区也不用手动挂载了
12、但是我感觉好像我重启了系统 swap就没有了,然后我又百度了一下,要执行下面一段命令 #echo “swapon /home/swap” >> /etc/inittab
13、然后在看 vi 看下 /etc/inittab
14、最后一行是swapon /home/swap,这样就万事大吉了。

oracle安装报错

  • 安装Oracle 11g RAC之前的验证,报错如下:
    Check: Hard limits for “maximum open file descriptors”
    Node Name Type Available Required Status
    aaaaaaa2 hard 131072 65536 passed
    aaaaaaa1 hard 4096 65536 failed
    Result: Hard limits check failed for “maximum open file descriptors”
    直接修改文件“/etc/security/limits.conf”,添加一行如下:
  • hard nofile 131072

然后“ulimit -a”。再次验证,过。

  • 修改max user processes limits
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值