文件系统知识总结node
新买的硬盘要存放数据须要怎么作?数据库
首先将硬盘装机作RAID,作完RAID后进行分区,分完区后格式化建立文件系统,最后存放数据。安全
硬盘的内外部结构:并发
物理形状:运维
接口类型:高并发
IDE(Integrated Drive Electronics)即“电子集成驱动器”。工具
SCSI(Small Computer System Interface)小型计算机系统接口。布局
SATA(Serial Advanced Technology Attachment)串口硬盘。性能
SAS(Serial Attached SCSI)串行链接SCSI,是新一代的SCSI技术,向下兼容SATA。测试
采购磁盘考虑因素:
选型:
Note:千万不要用SATA磁盘来作在线高并发服务的数据存储或数据库业务。
企业生产环境主流磁盘的相关信息对比:
单位容量对比性能和价格:SSD > SAS > SATA >SCSI
单位价格购买磁盘容量:SATA > SAS > SSD
企业生产场景普及程度:SAS > SATA > SSD
SSD固态硬盘(Solid State Drive)用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的彻底相同,在产品外形和尺寸上也彻底与普通硬盘一致。
固态硬盘优势 |
优势说明 |
启动快 |
没有点击加速转动的过程 |
写入速度快 |
基于DRAM的固态磁盘写入速度极快 |
碎片不影响读取时间 |
相对固定的读取时间。因为寻址时间于数据存储位置无关,所以磁盘碎片不会影响读取时间 |
无噪音 |
由于没有机械马达和风扇,工做时噪音值为0分贝。某些高端或大容量产品装有风扇,所以仍会产生噪音 |
发热量较低 |
低容量的基于闪存的固态磁盘在工做状态下能耗和发热量较低,但高端或大容量产品能耗会较高 |
无机械故障 |
内部不存在任何机械活动部件,不会发生机械故障,也不怕碰撞、冲击、振动。这样即便在高速移动甚至伴随翻转倾斜的状况下也不会影响到正常使用,并且在笔记本电脑发送意外掉落或硬物碰撞时能将数据丢失的可能性降到最小 |
工做温度范围更大 |
普通硬盘只能在5到55℃范围内工做,而大多数固态硬盘能在10~70℃工做,一些工业级的还能够在-40~85℃,甚至更大的温度范围下工做 |
体积小重量轻 |
低容量的固态磁盘比同容量磁盘体积小、重量轻。但这一优点随容量增大而逐渐减弱,直至256GB,固态磁盘仍比同容量的普通硬盘轻 |
抗震动 |
比起传统磁盘,固态磁盘抗震能力要强不少,使得数据能更加安全地保存 |
固态硬盘缺点 |
缺点说明 |
成本高 |
每单位容量价格是传统磁盘的5~10倍(基于闪存),甚至200~300倍(基于DRAM) |
容量低 |
目前固态磁盘最大容量远低于传统磁盘。美国公司Foremay推出了EC188M系列固态磁盘2TB。传统磁盘的容量仍在增加,目前已有4TB的了 |
易受外界影响 |
因为不像传统磁盘那样屏蔽于法拉第笼中,固态磁盘更易受到某些外界因素的不良影响。如断电(基于DRAM的固态磁盘尤甚)、磁场干扰、静电等 |
写入寿命有限 |
写入寿命有限(基于闪存),通常闪存写入寿命为1万到10万次,特制的可达100万到500万,然而整台计算机寿命期间内文件系统的某些部分(如文件分配表)的写入次数仍将超过这一极限。特制的文件系统或者固件能够分担写入的位置,使固态磁盘的总体寿命达到20年以上 |
数据难以恢复 |
数据损坏后难以恢复,一旦在硬件上发送损坏,若是是传统的磁盘或磁带存储方式,经过数据恢复也许还能挽救一部分数据,可是若是是固态存储,一旦芯片发生损坏,想要在碎成几块或电流击穿的芯片中找回数据那几乎是不可能的,固然这种不足也是能够牺牲存储空间来弥补的,主要用RAID |
电池续航较短 |
根据实际测试,使用固态磁盘的笔记本在空闲或低负荷运行下,电池续航短于使用5400RPM的2.5英寸的传统硬盘 |
能耗较高 |
基于DRAM的固态磁盘在任什么时候候的耗能都高于传统磁盘,尤为是关闭时仍需供电,不然数据丢失 |
Note:运维工做中要合理规划好分层存储机制,根据业务及数据使用频率结合着使用SSD+SAS(15000转/分钟)+SATA(10000转/分钟)。
磁盘相关术语:主轴,盘片,磁道,扇区,0号盘面,磁头,传动手臂,传动轴,起停区,寻道,扇区(标识符(磁头,磁道,扇区号)+数据)
计算磁盘大小公司:磁盘大小=512字节 * 扇区数 * 磁道数 * 磁头数
机械磁盘读写磁盘数据的原理小结:
一、磁盘是按照柱面为单位读写数据的,即先读取同一个盘面的某一个磁道,读完以后,若是数据没有读完,磁头也不会切换到其余的磁道,而是选择切换磁头,读取下一个盘面的相同半径的磁道,直到全部盘面的相同半径的磁道读取完成以后,若是数据尚未读写完成,才会切换其余不一样半径的磁道,这个切换磁道的过程称过寻道。
二、不一样磁头间的切换时电子切换,而不一样磁道间的切换须要磁头作径向运动,这个径向运动须要步进电机调节,这个动做时机械的切换。
磁头寻道是机械运动,切换磁头是电子切换。
RAID:廉价冗余磁盘阵列
作raid最直接的好处:
各级RAID优缺点对比:
RAID级别 |
关键优势 |
关键缺点 |
实际应用场景 |
RAID 0 |
读写速度最快 |
没有任何冗余 |
MySQL Slave,集群的节点RS |
RAID 1 |
100%冗余,镜像 |
读写性能通常、成本高 |
单独的,数据重要,且不能宕机的业务,监控,系统盘 |
RAID 5 |
具有必定性能和冗余,能够坏一块盘,读性能不错 |
写入性能不高 |
通常的业务均可以用 |
RAID 10 |
读写速度很快,100%冗余 |
成本高 |
性能和冗余要求都很高的业务,数据库主库和存储的主节点 |
Note:RAID 0不能坏盘,RAID 1容许坏50%的盘,RAID 5容许坏1块盘,RAID 6(专门作硬件存储)容许坏2块盘。
RAID 10和01
磁盘分区
16字节分区表的内容
字节数 |
说明 |
1Bytes |
State:分区状态,0=未激活,0x80=激活 |
1Bytes |
StartHead:分区起始磁头号 |
2Bytes |
StartSC:分区起始扇区和柱面号。低字节的低6位为扇区号,高2位为柱面号的第9,10位;高字节为柱面号的低8位 |
1Bytes |
Type:分区类型,如0x0B=FAT32,0x83=Linux等,00表示此项未用 |
1Bytes |
EndHead,分区结束磁头号 |
2Bytes |
EndSC:分区结束扇区和柱面号,定义同前 |
4Bytes |
Relative:线性寻址方式下分区相对扇区地址(对于基本分区即为绝对地址) |
4Bytes |
Sectors:分区大小(总扇区数) |
分区的本质:修改0磁头0磁道1扇区的前446字节以后的64字节的分区表信息。
分区工具:fdisk(适合给小于2T的磁盘分区),parted(擅长给大于2T的磁盘分区,也能够对小于2T的磁盘分区),首选fdisk,大于2T时才去选parted。
Note:
一、 GUID磁盘分区表(GUIDPartition Table,缩写:GPT)是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口(EFI)标准(被Intel用于替代我的计算机的BIOS)的一部分,被用于替代BIOS系统中的一个扇区来存储逻辑块地址和大小信息的主开机纪录(MBR)分区表。由于对于那些扇区为512字节的磁盘,MBR分区表不支持容量大于2.2TB(2.2 × 10^12字节)的分区。
二、 fdisk命令不支持gpt分区方式,parted支持gpt分区方式。
三、 parted的操做是实时的
文件系统
文件系统新增文件操做流程
一、 先肯定用户对欲新增文件的目录是否具备w与x的权限,如有的话才能新增;
二、 根据inode bitmap找到没用使用的inode号码,并将新文件的权限/属性写入;
三、 根据block bitmap找到没有使用中的block号码,并将实际的数据写入block中,并更新inode指向数据存放地block;
四、 将刚刚写入的inode与block数据同步更新到inode bitmap与block bitmap中,并更新superblock的内容。
在通常正常的状况下,上述的新增操做固然能够顺利完成,但若是遇到意外状况,就会产生superblock、inode bitmap、block bitmap这些中间数据与实际数据存放区产生不一致的状况。
系统读取数据流程:
一、 找到文件名
二、 找到inode,查看访问权限
三、 找到block
四、 反复循环1-3步骤
格式化(建立文件系统):文件系统是操做系统用于明确在存储设备上组织文件(数据的存储、分级组织、访问和获取等操做)的方法。
格式化(建立文件系统)工具:mkfs
查看系统支持的文件系统格式:ls /lib/modules/`uname -r`/kernel/fs
建立文件系统时会产生必定数量的Inode和Block:
Inode:存放文件的属性信息(包括不限于文件大小、属主(用户)、属组(用户组)、文件权限、文件类型、修改时间,还包含指向文件实体的指针的功能(inode-block对应关系)等,但inode里惟独不包含文件名)。
Block:存储实际数据(图片、视频,普通文件数据)。
文件属性:
inode小结:
一、 磁盘被分区并格式化为ext4文件系统后会生成必定数量的inode和block
二、 inode成为索引节点,它的做用是存放文件的属性信息以及做为文件的索引(指向文件的实体)。
三、 ext3/4文件系统的block存放的是文件的实际内容。
四、 inode是磁盘上的一块存储空间,C6非启动区inode默认大小256字节,C5是128字节。
五、 inode的表现是一串数字,不一样的文件对应的inode(一串数字)在文件系统里是惟一的。
六、 inode节点号相同的文件,互为硬连接文件,能够认为是一个文件的不一样入口。
七、 ext3/4文件系统下,一个文件被建立后至少要占用一个Inode和block。
八、 ext3/4文件系统下,正常状况一个文件占用且只能占用一个Inode(人和身份证的关系)。
九、 block是用来存储实际数据的,每一个block的大小通常有1K,2L,4K几种。其中引导分区等为1K,其余普通分区多为4K(C6)。
十、 若是一个文件很大(高清大片4G),须要占多个block,若是文件很小(0.01K),至少占一个block,而且这个block的剩余空间就浪费了,即没法再存储其余数据了。
十一、 查看inode的大小和总量:
dumpe2fs /dev/vda1|egrep -i "block size|Inode size"
dumpe2fs /dev/vda1|egrep -i "block count|Inode count"
十二、 查看inode的总量和使用量
命令df -i
1三、 查看文件的inode信息方法
ls -li 或stat /etc/hosts
1四、 如何生成及指定Inode大小
格式化命令:mkfs.ext4 -b 2048 -I 256 /dev/sdb
block小结:
一、 磁盘要读取数据是按block为单位读取的。
二、 一个文件可能占用多个block。但每读取一个block就会消耗一次磁盘I/O。
三、 若是要提高磁盘IO性能,那么就要尽量一次读取数据尽可能的多。
四、 一个block只能存放一个文件的内容,不管内容有多小。若是block默认是4K大小,那么存放一个1K的文件,剩余3K就不能存放别的文件,只能浪费了。
五、 block并不是越大越好。block太大对于存放小文件就会浪费磁盘空间,例如:1000K的文件,block大小为4K,占用250个block,若是block默认为1K,则须要占1000个block。访问效率谁更高?消耗IO分别为250次和1000次。
六、 根据业务需求,肯定默认的block大小,若是是大文件(大于16K)通常设置block大一点,小文件(小于1K)通常设置小一点。
七、 block太大,例如4K,文件都是0.1K,大量浪费磁盘空间,可是访问性能高。
八、 block过小,例如1K,文件都是1000K,消耗大量磁盘IO。
九、 block大小设置也是格式化分区时候肯定的,命令mkfs.ext4 -b 2048 -I 256 /dev/sdb
十、 企业文件都会比较大(通常会大于4K),block设置大一些会提高磁盘访问效率。
十一、 ext3/4文件系统(C5/6),通常都设置为4K。