Linux之磁盘和文件系统管理
磁盘介绍
当下流行的磁盘种类常见硬盘品牌:希捷 西数 日立HP,DELL EMC IBM硬盘分几种?
从工作原理分类:
1、固态硬盘:
价格相对贵,寿命长,读取速度快,存储机制类似于内存理论传输数据速度可以跟内存相当(但是受接口限制,)
2、机械硬盘:
怕摔、怕磁,硬盘高速旋转磁头接触盘片的方式去读取盘片中的数据,一般旋转的最高速度是7200 因为速度太快会热
(单位换下来的坏盘会做消磁处理),读取速度==磁道寻址时间,潜伏时间
从硬盘接口分类
从硬盘的接口来说
SATA:用在低端服务器多,理论传输速度达到 600MB/s
SAS3:用在中高服务器,!理论传输速度达到1200MB/S
PCIE 版本5: 理论传输速度达到32 or 25GT/s,mac上用也最贵
硬盘结构图
磁道和扇区
1、硬盘的内部是金属盘片,将圆形的盘片划分成若干个扇形区域,这就是扇区。
2、若干个扇区就组成整个盘片。
为什么要分扇区?
=》是逻辑化数据的需要,能更好的管理硬盘空间。
3、以盘片中心为圆心,把盘片分成若干个同心圆,那每一个划分圆的“线条”,就称为磁道
每个扇区的大小事固定的,为 512Byte(相当于0.5KB)。扇区也是磁盘的最小存贮单位,也是真正存储数据的地方。
对于同心圆来说不管最外侧扇区还是最内侧扇区大小都一样
磁盘与磁柱
磁片是不止一张的一般硬盘是有上下两张磁片
硬盘内的盘片有两个面,都可以储存数据,而硬盘内的盘片往往不止一张,常见的有两张,那么两张盘片中相同位置的磁道就组成一个“柱面”,盘片中有多少个磁道,就有多少个柱面。
盘片两面都能存数据,要读取它,必须有磁头,所以,每一个面,都有一个磁头,一张盘片就有两个磁头。
硬盘的存储容量=磁头数x磁道(柱面)数x每磁道扇区数x每道扇区字节数。磁道从外向内自0开始顺序进行编号,各个磁道上的扇区数是在硬盘格式化时确定的
磁盘补充
磁盘外侧的位移速度最快所以外侧的读取速度最快
所以思考一下windows安装系统的C盘或Linux boot分区一般安装在磁盘最外面还是最里面?
答案:
windows:C盘安装最外,速度也是最快
Linux: boot分区和 swap分区,装最外面
磁盘写数据时,先从外面往里。引导数据一般保存在0磁道0扇区里!系统启动都需要这个引导区里的引导数据来引导系统启动。
磁盘的常用管理命令
1、df 命令
# df -ahT
#-a显示特殊文件系统,这些文件系统几乎都是保存在内存中的。如/pr0c,因为是挂载在内存中,所以占用量都是0
#-h 单位不再只用 KB,而是换算成习惯单位
#-T多出了文件系统类型一列
2、du 命令
du [选项][目录或文件名]
选项:
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如 KB,MB 或 GB 等
-s统计总占用量,而不列出子目录和子文件的占用量
3、fdisk -l命令
查看系统中有多少块磁盘,以及没块磁盘的分区情况
文件管理系统
ext 是 Linux 中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用
ext2 是 ext 文件系统的升级版本,Red HatLinux7.2版本以前的系统默认都是ext2文件系统。于 1993年发布,支持最大16TB的分区和最大2TB的文件(1TB=1024GB=1024x1024KB)
ext3 是 ext2 文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时提高文件系统的可靠性。支持最大 16TB 的分区和最大 2TB 的文件
ext4 是 ext3 文件系统的升级版。 ext4 在性能、 伸缩性和可靠性方面进行了大量改进。ext4的变化可以说是翻天覆地的,比如向下兼容 ext3、最大 1EB 文件系统和 16TB 文件、无限数量子目录、Extents 连续数据块概念、多块分配、延迟分配、持久预分配快速 FSCK、日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barier 等。 它是 CentOs 6.x的默认文件系统
xfs XFS 最早针对 IRIX 操作系统开发,"是一个高性能的日志型文件系统, 能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个64 位的文件系统,后来进行开源并目移植到了 Linux 操作系统中,目前 CentOs 7.x将 XFS+LVM(逻辑卷管理)作为默认的文件系统。据官方所称,XFS 对于大文件的读写性能较好,单个文件系统最大可以支持8EB,单个文件可以支持16TB
swap swap 是 Linux 中用于交换分区的文件系统(类似于 Windows 中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。一般大小为内存的 2倍,但是不要超过 2GB。它是 Linux 的必需分区
NFS NFS 是网络文件系统(Network File Svstem)的缩写,是用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源
iso9660 光盘的标准文件系统。Linux 要想使用光盘,必须支持iso9660 文件系统
fat 就是 Windows 下的 fàt16 文件系统,在 Linux 中识别为 fat
vfat 就是 Windows 下的 fat32 文件系统,在 Linux 中识别为 vfat。支持最大 32GB 的分区和最大 4GB 的文件
NTFS 就是 Windows 下的 NTFS 文件系统,不过 Linux 默认是不能识别 NTFS 文件系统的,如果需要识别, 则需要重新编译内核才能支持。 它比 fat32,文件系统更加安全, 速度更快,支持最大 2TB 的分区和最大 64GB 的文件
ufs sun 公司的操作系统 Solaris 和 Sunos 所采用的文件系统
proc Linux 中基于内存的虚拟文件系统,用来管理内存存储目录/proc
sysfs 和 proc 一样,也是基于内存的虚拟文件系统,用来管理内存存储目录/sys
tmpfs 也是一种基于内存的虚拟文件系统,不过也可以使用 swap 交换分区
文件系统的组成部分
Linux文件系统具体由三部分组成:文件名,inode,block
inode的内容(类型window文件的属性)
inode包含文件的元信息,相当于windows的文件的属性:
文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:
ctime指inode上一次变动的时间
mtime指文件内容上一次变动的时间
atime指文件上一次打开的时间。
链接数,即有多少文件名指向这个inode
文件数据block的位置
可以用stat命令,查看某个文件的inode信息
inode的大小
inode也会消耗硬盘空间所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。
一个是数据区,存放文件数据;另一个是,inode区(inode table)存放inode所包含的信息。linux的文件系统中把这部分区域又叫superblock(超级块)一般是128字节或256字节。inode节点的总数,在格式化时就给定,假定在一块1GB的硬盘中,每个inode每个inode节点的大小,节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
inode号码
每个inode都有一个号码,操作系统用inode号码来识别不同的文件Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。
对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:
1、首先,系统找到这个文件名对应的inode号码;
2、其次,通过inode号码,获取inode信息;
3、根据inode信息,找到文件数据所在的block,读出数据最后,
使用Is -i命令,可以看到文件名对应的inode号码
使用 df -i命令,查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令
block
操作系统读取硬盘的时候,不会一个个扇区(512字节)地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取-个"块”(block)。
这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是1KB,即连2个扇区组成一个block。或4K,连8个扇区组成一个 block。
1、block是真正存储数据的地方。
2、block是文件系统中最小的存储单位
3、扇区是磁盘中最小的存储单位(物理上)
block调大:
优点:速度快,节约寻址时间,缺点:空间浪费
比如:2T硬盘,前1.5T,使用4K,把剩下的500G格式化成64K块。
用空间换时间原因:block的大小(1KB、2KB 或 4KB)和数量在格式化后就已经决定,不能改变,除非重新格式化,每个blcok只能保存一个文件的数据,要是文件数据小于一个bock块,那么这个 bock 的剩余空间不能被其他文件是要:要是文件数据大于一个 block块,则占用多个 block 块。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?