磁盘存储和文件系统1. EXT3 (1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件(2)Ext3目前只支持32000个子目录(3)Ext3文件系统使用32位空间记录块数量和i-节点数量(4)当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块
2.EXT4 EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本。(1)Ext4的文件系统容量达到1EB,而文件容量则达到16TB (2)理论上支持无限数量的子目录(3)Ext4文件系统使用64位空间记录块数量和i-节点数量(4)Ext4的多块分配器支持一次调用分配多个数据块

  1. XFS (1)根据所记录的日志在很短的时间内迅速恢复磁盘文件内容(2)采用优化算法,日志记录对整体文件操作影响非常小(3) 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间(4)能以接近裸设备I/O的性能存储数据
    命令是扫描硬盘是否挂载上。
    表示以80表示一个硬盘只能有一个活动分区和3个非活动分区,
    80代表着活动分区,操作系统启动的时候从80标记的分区上寻找启动的相关文件,
    查看分区表的前512字节,着前512字节起到了保护分区的作用
    成二进制转换方式。的前512字节。
    磁盘管理分区命令及用法

lsblk:查看块设备的命令。对应的是B开头的设备
管理小于两个T的MBR硬盘分区用fdisk。管理GPT的分区最好用gdisk命令来管理partition Table:显示为masdo则这个是MBR分区,更改分区时一定要小心更改时数据会直接清理。

Parted命令的用法和注意事项:同步磁盘信息在centos7和centos5都可以使用唯独在6上不行
:只能在6上同步磁盘信息
Parted这命令既可以交互又可命令行的命令方式来执行。
交互式进入之后用quit退出,
也可以是非交互式直接输命令也可以直接打印。这个命令式查看分区信息
:使用parted命令分区中间加分区路径,后面跟mkpart primary 和分区 数大小
:parted /dev/sdb rm 后面带磁盘编号删除磁盘。

分区工具fdisk和gdisk的命令用法

设备名是不稳定的。 所有尽可能不要用可能变化的东西写到文件里
Fdisk是对硬盘来管理分区。
删除扩展分区,连扩展分区里的逻辑分区也会同时删掉
:这个命令看到的是实时同步
用fdisk创建分区顺序:
1.找到要分区的路径。
2.选项n创建新分区
3.:p选项分区列表然后选择1分区
4.:默认初始内存以2048K开始然后+1GB的内存
5.Fdisk创建方法:下图
6.

:这个克隆命令是永久保存主分区克隆过去的所有信息。:这个命令是清理sdb分区所有内容。:用双重定向也可以完成交互式命令写到脚本里
文件系统

:这个命令是支持文件系统,:该命令查看文件系统驱动,文件系统驱动都为ko文件
:该目录可查看支持的文件系统。
创建文件系统命令及用法
:输入mkfs . 用tap键补全找自己想安装的文件系统,后跟磁盘分区路径,在放到磁盘分区中去。:blkid命令对查询设备上所采用文件系统类型进行查询。
:mkfs -f 选项是强制覆盖,然后在加-L是修改卷标。

:该命令指定在磁盘路径创建ext系列文件系统,默认情况下创建的是ext2文件系统。
:加-t后跟想选择的ext文件系统类型在跟安装磁盘路径。
:创建ext文件系统-b 1024指定为1024的块大小,-m 0.1给管理人员预留空间是全部分区的0.1 ,-I 128是inode记录占用的磁盘空间大小, 后面是挂载路径和创建路径。-L 是加卷边
:加-U后面跟设备uuid来查询对应设备
:加 -L 后面跟卷标LABEL来查询对应设备。
:e2label后跟设备路径再加挂载路径来加卷标命令意思是在/dev /sda7 设备中加一个/mnt/ sda7的卷标名。
:修改文件系统属性配置。后跟属性选项
Centos6加acl权限
1.关闭挂载umount /设备路径/ 分区名
2.:加-o(小o)选项是调整文件系统的默认挂载选项调整为acl
3.删除挂载加脱字符
4.重启挂载这样就加号上了acl权限

Superblock:超级块存放的是源数据信息为了避免超级块损坏在每个组的前面都有超级块的备份。

:命令后面跟设备路径可直接修复,修复的是xfs系列文件系统。根据不同文件系统进行修复,centos7采用的是xfs的文件系统。

修改文件系统方法
文件系统出了问题
1.取消挂载umount /设备路径/ 分区名
2.:命令后面跟文件设备路径是对文件系统的检查,加选项修复。
3.修复好了再挂载za
挂载使用方法及注意事项
挂载原理:
一个设备同时可以挂载多个文件夹, 一个文件夹不允许挂载多个设备,只能挂一个设备。挂多个设备只可以使最后一个设备生效,而且当挂载点的文件夹必须是一个干净的空文件夹。一个分区要想使用必须的挂载到文件夹上。
作为一个普通用户不能挂载因为普通用户没有权限,而且做的挂载都是临时挂载只要虚拟机重启,加的所有挂载就全没了。但是也有办法做到挂载永久生效。

:根据卷标来挂载mount -L 后面跟卷标名。
:根据UUID来挂载,mount -U 后面跟uuid再跟挂载路径

Centos6上创建loop文件
在centos6上最多支持8个loop设备文件,而centos7上是没有限制的当用户创建的时候系统便自动生产loop设备,loop设备满足了磁盘对文件的挂载但是在centos6上用户可以手动创建:这就是临时创建的loop设备用mknd命令来创建7代表着以7结尾的8则代表第八个loop设备的创建。也可以通过vim文本编辑器来进行多个创建:这就是多个创建loop设备的目录
进入之后找到kernel这行行尾直接添加max loop=100(你想创建的loop设备数量),然后reboot重启才能使之生效。这就实现了cento6上文件往文件夹上挂。

        挂载方法

挂载逻辑:1.在一个挂载点,同一时间只能挂一个设备,不允许挂多个,否则后面的会把之前的给顶掉2.一个设备可以挂载多个文件夹(可以有多个挂载点)3.当挂载点的文件夹应该是一个干净的空文件夹

文件挂载
centos6系统禁止将文件挂载到目录中,系统会给文件映射/dev/loop0设备
losetup -a 可以查看对应关系例:1创建一个大文件
dd if=/dev/zero of=/data/bigfile bs=1M count=10 2给bigfile创建一个文件系统
mkfs.ext4 /data/bigfile3查看bigfile的系统信息
blkid /data/bigfile
/data/bigfile: UUID="6a176a88-5eb9-4a25-8a39-0249aceedb13" TYPE="ext4" 4.创建文件夹,挂载文件
mkdir /mnt/file
mount /data/bigfile /mnt/file5.创建文本
echo abc >> /mut/file/f1.txt6.losetup -a 可以查看对应关系7.hexdump -C /data/big -v |less
查找二进制
centos6 添加loop设备losetup -a ll /dev/loopmknod /dev/loop8 b 7 8 ll /dev/loop
在内核中添加loop数量vim /boot/grub/grub.confmax loop=100 reboot
目录挂载
将文件夹挂载到文件夹mkdir /mnt/bootmount /boot /mnt/boot -B这样/boot 和 /mnt/boot 看到的目录内容相同mount 可以看到挂载关系
(centos7不支持)
mount -B -n /etc /mnt/etc/etc/mtab 不在更新 起到隐藏挂载的功能
cat /proc/mounts 可以看到所有挂载关系
卸载命令
查看挂载情况
findmnt MOUNT_POINT|device例:findmnt /bootTARGET SOURCE FSTYPE OPTIONS/boot /dev/sda1 xfs rw,relatime,attr2,inode64,noquota
查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT
卸载
umount DEVICE
umount MOUNT_POINT

1.:先确认一下当前的设备得卷标和uuid还有设备名
2.再通过mkdir建立一个和卷标一样的文件,必须使用卷标文件因为这个文件有系统
3.然后再把/dev/下的/sdb1/磁盘挂再到/data/html这个文件下,这样才能使用,这就挂载好了
而/dev/sdb1里这个33M得数据就是创使挂载得源数据,等于说一个磁盘挂载好了就会拥有一个33M得源数据。
卸载删除挂载
1.:umount 加挂载路径取消挂载。如果说有人正在访问该文件夹就取消不了挂载。
2.那就使用lsof加挂载文件路劲就能查看谁在访问该目录
3.再使用fuser -km 加路径强行将访问/data/html文件的用户踢出去,再一次取消挂载。

lost+found
lost+found 类似于收容所
lost+found是ext文件系统自带的默认文件夹当文件系统出现异常,某些文件可能会找不到在哪个目录里,系统会自动归入到lost+found里

使挂载关系永久生效方法
/etc/fstab这个文件可以记录系统的挂载关系
使用文本编辑工具vim进入/etc/fstab目录中去
:每一行都是由6项文件挂载配置组成
1, 选择要挂载的设备或伪文件系统,设备文件:LABEL和UUID尽量写uuid因为uuid稳定,伪文件:proc,sysfs
2, 选择挂载点
3,选择 文件系统类型:ext4,xfs,iso9660,nfs,none
4, 选择挂载选项:defaults ,acl,bind这是默认选项这里看上面的mount常用命令选项
5、选择转储频率:0:不做备份 1:每天转储 2:每隔一天转储
6、fsck检查的文件系统的顺序:允许的数字是0 1 2
0:不自检
1:首先自检;一般只有rootfs才用
2:非rootfs使用
7.这时候已经在vim /etc/fstab中创建好了挂载,退出来后直接输入mount -a选项使之自动挂载,这样就实现了系统开机重启后挂载保存问题。 对文件挂载只能写文件名,写uuid 保存不住。mi

挂载修复 输入
:使用du -sh 加路径可以查看这个磁盘里文件大小

什么是RAID以及RAID各级别优缺点

4.2 标准 RAID 等级
  SNIA 、 Berkeley 等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级,这也被业界和学术界所公认。标准等级是最基本的 RAID 配置集合,单独或综合利用数据条带、镜像和数据校验技术。标准 RAID 可以组合,即 RAID 组合等级,满足 对性能、安全性、可靠性要求更高的存储应用需求。 [6][7][8][9][10][11]
1.RAID0
  RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间(如图 2 所示),将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。
  RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。

图2 RAID0 :无冗错的数据条带
2.RAID1
  RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。工作原理如图 3 所示。
  RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。

图3 RAID1 :无校验的相互镜像
3.RAID2
  RAID2 称为纠错海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余。海明码是一种在原始数据中加入若干校验码来进行错误检测和纠正的编码技术,其中第 2n 位( 1, 2, 4, 8, … )是校验码,其他位置是数据码。因此在 RAID2 中,数据按位存储,每块磁盘存储一位数据编码,磁盘数量取决于所设定的数据存储宽度,可由用户设定。图 4 所示的为数据宽度为 4 的 RAID2 ,它需要 4 块数据磁盘和 3 块校验磁盘。如果是 64 位数据宽度,则需要 64 块 数据磁盘和 7 块校验磁盘。可见, RAID2 的数据宽度越大,存储空间利用率越高,但同时需要的磁盘数量也越多。
  海明码自身具备纠错能力,因此 RAID2 可以在数据发生错误的情况下对纠正错误,保证数据的安全性。它的数据传输性能相当高,设计复杂性要低于后面介绍的 RAID3 、 RAID4 和 RAID5 。
  但是,海明码的数据冗余开销太大,而且 RAID2 的数据输出性能受阵列中最慢磁盘驱动器的限制。再者,海明码是按位运算, RAID2 数据重建非常耗时。由于这些显著的缺陷,再加上大部分磁盘驱动器本身都具备了纠错功能,因此 RAID2 在实际中很少应用,没有形成商业产品,目前主流存储磁盘阵列均不提供 RAID2 支持。

图 4 RAID2 :海明码校验
4.RAID3
  RAID3 (图 5 )是使用专用校验盘的并行访问阵列,它采用一个专用的磁盘作为校验盘,其余磁盘作为数据盘,数据按位可字节的方式交叉存储到各个数据盘中。RAID3 至少需要三块磁盘,不同磁盘上同一带区的数据作 XOR 校验,校验值写入校验盘中。 RAID3 完好时读性能与 RAID0 完全一致,并行从多个磁盘条带读取数据,性能非常高,同时还提供了数据容错能力。向 RAID3 写入数据时,必须计算与所有同条带的校验值,并将新校验值写入校验盘中。一次写操作包含了写数据块、读取同条带的数据块、计算校验值、写入校验值等多个操作,系统开销非常大,性能较低。
  如果 RAID3 中某一磁盘出现故障,不会影响数据读取,可以借助校验数据和其他完好数据来重建数据。假如所要读取的数据块正好位于失效磁盘,则系统需要读取所有同一条带的数据块,并根据校验值重建丢失的数据,系统性能将受到影响。当故障磁盘被更换后,系统按相同的方式重建故障盘中的数据至新磁盘。
  RAID3 只需要一个校验盘,阵列的存储空间利用率高,再加上并行访问的特征,能够为高带宽的大量读写提供高性能,适用大容量数据的顺序访问应用,如影像处理、流媒体服务等。目前, RAID5 算法不断改进,在大数据量读取时能够模拟 RAID3 ,而且 RAID3 在出现坏盘时性能会大幅下降,因此常使用 RAID5 替代 RAID3 来运行具有持续性、高带宽、大量读写特征的应用。

图5 RAID3 :带有专用位校验的数据条带
5.RAID4
  RAID4 与 RAID3 的原理大致相同,区别在于条带化的方式不同。 RAID4 (图 6 )按照 块的方式来组织数据,写操作只涉及当前数据盘和校验盘两个盘,多个 I/O 请求可以同时得到处理,提高了系统性能。 RAID4 按块存储可以保证单块的完整性,可以避免受到其他磁盘上同条带产生的不利影响。
  RAID4 在不同磁盘上的同级数据块同样使用 XOR 校验,结果存储在校验盘中。写入数据时, RAID4 按这种方式把各磁盘上的同级数据的校验值写入校验 盘,读取时进行即时校验。因此,当某块磁盘的数据块损坏, RAID4 可以通过校验值以及其他磁盘上的同级数据块进行数据重建。
  RAID4 提供了 非常好的读性能,但单一的校验盘往往成为系统性能的瓶颈。对于写操作, RAID4 只能一个磁盘一个磁盘地写,并且还要写入校验数据,因此写性能比较差。而且随着成员磁盘数量的增加,校验盘的系统瓶颈将更加突出。正是如上这些限制和不足, RAID4 在实际应用中很少见,主流存储产品也很少使用 RAID4 保护。

图6 RAID4 :带有专用块级校验的数据条带
6.RAID5
   RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。
  RAID5 (图 7)的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。
  RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。

图7 RAID5 :带分散校验的数据条带
7.RAID6
  前面所述的各个 RAID 等级都只能保护因单个磁盘失效而造成的数据丢失。如果两个磁盘同时发生故障,数据将无法恢复。 RAID6 (如图 8 )引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。
  RAID6 不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设计也比其他等级更复杂、更昂贵。 RAID6 思想最常见的实现方式是采用两个独立的校验算法,假设称为 P 和 Q ,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。
  RAID6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10 方案的经济性选择。

图8 RAID6 :带双重分散校验的数据条带
4.3 RAID 组合等级
  标准 RAID 等级各有优势和不足。自然地,我们想到把多个 RAID 等级组合起来,实现优势互补,弥补相互的不足,从而达到在性能、数据安全性等指标上更高的 RAID 系统。目前在业界和学术研究中提到的 RAID 组合等级主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但实际得到较为广泛应用的只有 RAID01 和 RAID10 两个等级。当然,组合等级的实现成本一般都非常昂贵,只是在 少数特定场合应用。 [12]
1.RAID00
  简单地说, RAID00 是由多个成员 RAID0 组成的高级 RAID0 。它与 RAID0 的区别在于, RAID0 阵列替换了原先的成员磁盘。可以把 RAID00 理解为两层条带化结构的磁盘阵列,即对条带再进行条带化。这种阵列可以提供更大的存储容量、更高的 I/O 性能和更好的 I/O 负均衡。

  1. RAID01 和 RAID10
      一些文献把这两种 RAID 等级看作是等同的,本文认为是不同的。 RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;而 RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力,原理如图 9 所示。
      RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。

图 9 典型的 RAID01 (上)和 RAID10 (下)模型
3.RAID100
  通常看作 RAID 1+0+0 ,有时也称为 RAID 10+0 ,即条带化的 RAID10 。原理如图 10 所示。 RAID100 的缺陷与 RAID10 相同,任意一个 RAID1 损坏一个磁盘不会发生数据丢失,但是剩下的磁盘存在单点故障的危险。最顶层的 RAID0 ,即条带化任务,通常由软件层来完成。
  RAID100 突破了单个 RAID 控制器对物理磁盘数量的限制,可以获得更高的 I/O 负载均衡, I/O 压力分散到更多的磁盘上,进一步提高随机读性能,并有效降低热点盘故障风险。因此, RAID100 通常是大数据库的最佳选择。

图10 典型的 RAID100 模型
4.RAID30 ( RAID53 )、 RAID50 和 RAID60
  这三种 RAID 等级与 RAID00 原理基本相同,区别在于成员 “ 磁盘 ” 换成了 RAID3 、 RAID5 和 RAID6 ,分别如图 11 、 12 、 13 所示。其中, RAID30 通常又被称为 RAID53[13] 。其实,可把这些等级 RAID 统称为 RAID X0 等级, X 可为标准 RAID 等级,甚至组合等级(如 RAID100 )。利用多层 RAID 配置,充分利用 RAID X 与 RAID0 的优点,从而获得在存储容量、数据安全性和 I/O 负载均衡等方面的大幅性能提升。

图11 典型的 RAID50 模型

图12 典型的 RAID50 模型

图13 典型的 RAID60 模型