磁盘存储
设备类型
1.块设备
以块为单位进行存储和读取,相当于批量存和批量读
2.字符设备
以一个字节或者一个字符为单位进行读取和写入.
cp -a /dev/sda /data/sda
mknod /data/sda b 8 1 创建特殊类型的文件
3.硬盘结构
1.磁头在盘片上进行从里到外-左右移动
2.盘片进行高速旋转
3.磁道 圈和圈之间的空隙(类似于操场的跑道) 每个磁道分成多少个扇区需要占用6个位来存储,最大值是2^6=64
4.扇区 每个扇区512字节 每个磁道被划分成多个扇区
5.柱面 不同盘片之间的相同磁道组成一个柱面
4.硬盘的使用
1.分区
2.创建文件系统(格式化)
3.挂载 (把设备名和目录名关联起来)
4.硬盘如果不进行格式化,那么往硬盘上存储和读取数据的时候只能以二进制(0和1)方式来进行,而不能以文件的方式进行访问.
5. hexdump -C /dev/sda | less 直接以二进制或者相关进制的方式来读取硬盘上的数据.
5.分区方式
分区必须是在一个连续的空间
4个主分区 或者 3个主分区+1个扩展分区+N个逻辑分区
1.MBR分区
1. hexdump -C /dev/sda -n 512 查看磁盘上前面的512个字节内容
2. dd if=/dev/sda of=/data/mbr_bak bs=1 count=512 读取二进制文件内容,每次读取一个字节 总共读取512个字节
3. dd if=/dev/zero of=/dev/sda bs=1 count=512 用0设备读取数据写到其它二进制文件,每次写入一个字节,总共写512个字节
4. dd if=/data/mbr_bak of=/dev/sda bs=1 count=512 恢复二进制文件内容
5. dd if=/dev/zero of=/dev/sda bs=1 count=2 seek=510 把第511和512个字节清0
2.GPT分区
4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域
6.管理分区
列出块设备 lsblk
fdisk创建 MBR分区
gdisk创建 GPT分区
parted高级分区操作
partprobe 同步内存和磁盘上的分区表信息 centos6上无效
partx -a /dev/DEVICE centos6 同步新增分区
partx -d /dev/DEVICE centos6 同步删除分区
7.分区表存储在两个地方,一个在内存,一个存储在磁盘.
fdisk 查看磁盘上的分区表信息
lsblk 等其它命令查看的是内存上的分区表信息
文件系统
操作系统中负责管理和存储文件信息的软件结 构称为文件管理系统,简称文件系统
如果没有文件系统,那么我们只能以0和1二进制的方式来访问磁盘上的内容不能以文件的方式来访问磁盘数据.
分布式文件系统
把一个文件打散,均匀的存储在不同的机器上.具有对文件备份和容错的功能.
日志型文件系统
日志的功能就是记录了用户对数据的一切操作
如果没有日志系统,用户把数据从磁盘调入内存进行修改后,如果在系统还没开始从内存写入磁盘的时候出现异常,那么只会丢到内存的修改,
磁盘上的原数据并没有被损坏。
如果在系统已经开始从内存写入磁盘的过程中出现异常,那么内存中的数据会丢失,同时磁盘上的原文件内容也会被损坏.
日志系统会在硬盘上单独开辟一块空间进行日志存储(journal)日志和文件是分离的,通过日志可以避免系统异常而导致损坏文件,保证系统的稳定性.
虚拟文件系统
封装了各种不同类型文件系统的API给用户统一调用使用户无需关心底层系统,如用户执行ls cp等命令,会首先把命令发送给虚拟文件系统
然后由虚拟系统进行翻译再发送给不同类型的底层文件系统来执行
buffer和cache
1. 当用户访问一个文件的时候,磁盘会先把文件存入磁盘的缓存中,然后内存再从磁盘的缓存中读取数据.
2. buffer是为了提高写数据的性能 先把内存中需要写入磁盘的数据存放到buffer中,然后再批量写入磁盘.
3. cache是为了提高读数据的性能 先把需要读取的数据存放到cache中,下次读取的时候直接从cache中读取.
集群文件系统
默认情况下,当多个服务器同时访问同一块磁盘上的同一个文件,就会造成这个文件的数据损坏. 集群文件系统就是为了解决这个问题
块组和簇(windows)的基本概念
文件系统分配给文件的最小单位,一个文件再小也要占用的最少磁盘空间.