一、概念
1、机械硬盘物理结构
磁头-摆动->读取盘片上的数据
数据存储在盘面
盘面:
- 磁道
- 扇区-sector,硬盘最小的存储单位,512Bytes 0.5kb
- 柱面-分区的界限
磁盘性能指标IPOS:input/output per second :
- 磁盘性能指标, 即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。
- 指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位。
2、block
操作系统无法对数目众多的扇区进行寻址,因此操作系统将相邻的扇区组合在一起,形成了块block,(8个扇区,80.5 kb 4kb大小)*
在linux文件系统重多个连续的扇区,被称之为block,块的概念,也是在系统中被认为是最小的存储单位
操作系统规定,一个block只能存放一个文件的内容,因此文件占用的空间大小,只能是block的整数倍
3、存储单位
bit->Byte->KB->MB->GB->TB
1 Byte = 8 bit
后面都是1024级别
4、分区表
MBR分区表
- master boot record,主分区引导记录
- MBR分区硬盘容量受限制,最大2T
GPT分区
- 现在大多的硬盘分区表,都是GPT分区了
- 优点:
- GPT分区表硬盘容量没有限制
- 分区个数,没有限制
- 自带磁盘保护机制
5、常见的文件系统
fat16、fat32,最早的windows文件系统,缺点是单个文件不能超过2GB
NTFS,支持文件加密,采用日志形式的文件系统,详细记录磁盘读写的操作,支持数据恢复,能够提高磁盘数据的安全性,突破单个文件4GB大小的限制
exFAT文件系统,新式的文件系统,单个文件支持16GB的大小。能够在windows、linux、macOS中同时识别
6、磁盘分区
硬盘设备,插到linux主机上,会被识别为硬盘设备文件:/dev/ad[a-z]
分区:
/dev/sda,第一块硬盘名
主分区 /dev/sda1
扩展分区 /dev/sda2
逻辑分区 /dev/sda3
/dev/sda4
/dev/sda5
/dev/sdb, 第二块硬盘名
7、inode是什么?
概念:
- 操作系统中专门用于管理和存储文件的信息软件,被称之为文件系统。
- 文件是以文件数据+元信息组成的,文件的inode号+文件数据内容,代表单个文件
- 文件系统又将文件元信息(元信息,存储文件的创建信息,修改信息,文件大小,等等)存储在了一个称之为
inode
区域的地方,中文叫做索引节点
- inode大小的关系:
- 硬盘在格式化的时候,系统自动的分为了2部分,一个部分是元数据区域,存放文件的inode信息;一个是文件数据内容区域
- 每个inode的大小,都是在格式化分区的时候,决定好了,默认是128字节或是256字节
查看文件的inode号:
ls -li filename.txt
通过ls -li 查看到的数据,唯独文件名不属于inode储存的元信息
inode元数据区域,保存的是:
- 文件大小
- 属主信息
- 用户组信息
- 文件权限数字
- 文件的修改时间
- 还存储了一个文件的实体指针,指向block的位置
读取文件步骤:
1、打开文件
2、找到文件的inode号
3、通过inode号,找到文件数据在磁盘上的位置,也就是block的位置
8、文件系统
vfs文件系统
virtualenv File System 虚拟文件系统
linux系统的文件系统格式有
ext2
ext3
ext4
不同的系统,使用的文件系统也各不相同
windows 98: FAT、FAT16、FAT32
windows 2000: NTFS文件系统
Linux的文件系统:
- ext2
- ext3 centos5
- ext4 centos6
- xfs centos7
网络共享文件系统
- nfs ,network file system
- smb,server message block 服务消息块
集群文件系统
- gfs,google file system 是google公司为了存储海量的数据而开发的文件系统
- ocfs,oracle cluster file system 是oracle 公司问了数据库研发平台,而定制的文件系统
分布式文件系统:
- ceph 为了存储的可靠性和扩展性的分布式文件系统
交换文件系统:
- swap
区别主要在于:是否是日志型文件系统
二、相关命令
1、fdisk
- 列出分区表:
-
fdisk -l
fdisk -l |grep sd
对磁盘进行分区
fdisk /dev/sdb m进入选项: n: 新建分区 d: 删除分区 p: 打印分区表 q: 退出不保存 w: 写入并且退出
2、df
机器挂载的文件系统的空间剩余量:
df -h
查看磁盘的分区表号:
cat /proc/partitions
3、parted
小于2TB的磁盘都可以用fdisk分区,但是大于2TB的磁盘,只能用parted命令分区,且转换磁盘为GPT格式
显示所有分区信息:
parted -l
分区:
parted /dev/sdc
进入parted
mklabel gpt # 更改分区表类型为gpt,危险磁盘数据都将丢失
p:打印分区表
mkpart primary 0 500 # 创建主分区,name为primary,大小为500M
mkpart logical 501 10000 # 创建逻辑分区
p:打印分区表
q:退出
4、ln 软硬链接
软链接:
快捷方式的创建,可以快捷的指向另一个文件的特殊文件
语法:
创建软链接:
ln 命令 -s ,创建符号链接,软链接,快捷方式 ln -s 目标文件绝对路径 快捷方式绝对路径 ln -s /opt/test.txt /tmp/gugu
可以看见
gugu
文件为ln
链接文件也可以针对文件夹创建
查看软链接:
readlink ln文件名 # 查看的是软连接指向的源文件的路径
硬链接:
软链接特点:
- inode号,是不一样的,代表软链接文件,是两个单个的个体,
硬链接特点:
- 一般情况下,文件名和inode号是一对一的
- 目录文件夹不支持硬链接
- 不得跨文件系统
- 硬链接数据量的增加,会增加inode号码的计数
- 删除源文件,对硬链接也是无影响的,但是影响软链接
- 只有删除源文件,和所有的硬链接,文件的链接数就为0了,此时文件数据丢失
创建硬链接
可以通过
ls -l
查看文件的硬链接数量语法:
ln 目标文件绝对路径 硬链接文件路径
创建出来的硬链接,和源文件的inode号是一样的
5、mkfs
针对磁盘分区进行格式化文件系统
mkfs.ext4 /dev/sdc1 # 将sdc1分区格式化为ext4文件系统
mksfs.xfs /dev/sdc2
6、fsck
修复文件系统的命令
- 默认读取/etc/fstab 开机挂载文件的
fsck命令,是否检查磁盘文件系统,修复错误
禁止文件系统开机修复错误
1.修改/etc/fstab文件,然后改成如下配置
结尾的数字是0就不检查错误,1就检查错误 /dev/mapper/centos-root / xfs defaults 0 0
2.针对磁盘进行修复检查
fsck -t 文件系统类型 设备名
7、dumpe2fs、xfs_info
查看文件系统的属性
- 对于centos7之前的文件系统
- dumpe2fs命令,打印文件系统的块组信息,适用于ext2 ext3 ext4
- 对于centos7之后的系统而言默认用的是xfs文件系统,使用xfs_info打印文件系统信息
8、tune2fs
设置linux是否开机自动检查文件系统正常与否
关闭文件系统自检:
tune2fs -c -1 /dev/sdc1
9、lsblk
列出所有的设备以及文件系统信息
lsblk -f #列出分区的文件系统类型