磁盘管理
磁盘介绍
相关历史
外存储器:常用的外存储器由磁盘存储器、光盘存储器
磁盘存储器有两种:
- 以软质聚酯塑料薄片为基体,在基体上涂敷氧化铁磁性材料作为作为记录介质,称为软盘
- 采用硬质基体,在基体上生成一层很薄但很均匀的记录磁层,称为硬盘
软盘在20世纪80至90年代盛行。软盘驱动器即软驱,是读取软盘的设备。
软盘想要读取到计算机中,就需要映射到计算机中的某一个标识,于是字母A作为第一个盘符被软盘驱动器所占用;随后第二个软驱使用盘符B,来满足数据拷贝的需要。
A盘是3.5英寸的软盘驱动器、B盘是5.25英寸软盘驱动器。
后来Windows系统沿用DOS下分区设置,硬盘使用CDE盘
目前的计算机主要使用硬盘做存储,因此都有C盘。
- 软件默认安装到C盘的原因和磁盘的读取方式以及分区位置有关。
硬盘分区实质上是对硬盘的一种格式化,然后才能使用硬盘保存信息。
分区一般是先划分出一个主分区,即C盘,然后建立扩展分区,在扩展分区内再建立若干个逻辑分区,即DE等盘。
软件默认安装C盘是为了避免出现无此分区的情况。
另外,C盘在磁盘的最外圈,磁盘外圈的读取速度比内圈速度要快。
这种情况仅限于机械硬盘,当前的固态硬盘(SSD)没有这种情况。- 大家普遍认为的C盘文件过多会影响速度,是历史遗留问题。电脑配置低的时候如果内存不够用,会调用虚拟内存使用,而虚拟内存就在C盘。不过如今的硬件配置已经足够强大,系统会有充足的空间合理分配虚拟内存,所以这个问题基本不存在了。
-
作用:用来存放永久保存的数据(二进制方式来管理数据)
-
分类:机械硬盘、固态硬盘
-
机械磁盘组成:
- 盘片:上面布满磁性颗粒,保存写入数据
- 主轴:带动盘片转动,转到磁头的下方
- 读/写磁头:负责数据的读写
- 磁头臂:带动磁头,将磁头移动到指定位置
- 控制电路:控制硬盘的速度,磁头臂的移动等等
-
磁盘属性:
- 磁道:盘片围绕在主轴周围的同心环
- 扇区:磁道上被分成的更小的单位,也是磁盘中保存数据最小的存储单元,
一般大为512k,也有更大的扇区4k - 柱面:在同一个磁盘中,所有盘片相同位置编号的磁道形成的一个机械磁盘
-
操作系统读取硬盘
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(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)
- 单个IO:
操作系统内核发出一个读IO命令,当控制磁盘的控制器接到这个指令后,控制器会给磁盘发送一个读数据的指令,并同时将要读取数据块的地址传送给磁盘,然后硬盘读取数据传送给控制器,并由控制器返回给操作系统,完成一个IO操作。 - 读写IO:写磁盘为写IO,读数据为读IO
随机访问(Random Access)与连续访问(Sequential Access):由档次IO给出的扇区地址与上次IO结束的扇区地址相差得是否较大决定。
顺序IO模式(Queue Mode)/并发IO模式(Burst Mode):由磁盘组一次能执行的IO命令个数决定
完整的IO操作:
当控制器读硬盘发出一个IO操作指令的时候,磁盘的磁头臂带着读写磁头离开着陆区,然后移动到要操作初始数据块所在的磁道正上方。此过程为寻道,消耗时间为寻道时间;
磁头等到盘片旋转到初始数据块所在的扇区的正上方,此时才能进行数据的读取,这个过程称之为旋转时间
然后读取相应数据,直到完成这次IO所操作的全部数据,这个过程所花费时间称之为数据传送时间
- 硬盘性能
- 机械部件:影响着存储系统的整体性能
- 磁盘服务时间:磁盘完成一个I/O请求的总时间
- 寻道时间:用于将磁头
全程寻道时间
平均寻道时间
道间寻道时间 - 旋转时间:评价转动延迟:完全旋转用时的一半
- 数据传输时间:
- IOPS:
IOPS是IO系统每秒所指向IO操作的次数,是一个重要的用来衡量系统IO能力的参数。对于单个磁盘,计算完成一次IO所需要的时间来推算其IOPS
IOTime=寻道时间+60s/转速/2 + IOChunkSize/传送速度
IOPS=1/IOTime = 1/(寻道时间+60s/转速/2) + IOChunkSize/传输速度
当单次IO越小的时候,单次IO所耗费的时间也越少,相应的IOPS也就越大 - 带宽:
指磁盘在实际使用的时候从磁盘系统总线上流过的数据量 - 利用率和相应时间
固态硬盘概述
- 由于价格逐渐下降,容量越来越大,固态硬盘(SSD)变得越来越流行
- SSD原理:
1.使用flash技术存储信息
2.内部没有机械结构因此耗电量更小、散热小、噪音小 - 但是,基于SSD的使用频率,SSD盘使用寿命有限
- SSD的3种主要类型:
- SLC(Single Level Cell), 单层式存储单元
每个存储单元只能存1bit数据 - MLC(Multi Level Cell),多层式存储单元
每个存储单元只能存2bit数据 - TLC(Triple Level Cell),三层式存储单元
每个存储单元只能存3bit数据
- SLC(Single Level Cell), 单层式存储单元
- 固态硬盘的磨损
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开头。
- /dev/hda 表示第一个IDE通道(IDE1)的主设备
- /dev/hdb 表示第一个IDE通道(IDE1)的从设备
- /dev/hdc 表示第二个IDE通道(IDE2)的主设备
- /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
-
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。 -
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: - -
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 -
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号.
用户通过文件名打开文件:
系统内部分三个过程:
a. 系统找到这个文件名对应的inode号码;
b. 通过inode号码,获取inode信息;
c. 根据inode信息,找到文件数据所在的block,读出数据。
查看文件名对应的inode号:[root@localhost ~]# ls -i aa
35260632 aa -
目录(directory)也是一种文件,目录文件就算一系列目录项的列表。每个目录项,由两部分组成:
a. 所包含文件的文件名
b. 该文件名对应的inode号码
ls -i命令列出整个目录文件,即文件名和inode号码 -
硬连接
一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。
这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)ln 源文件 目标文件
-
软链接
文件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