linux 磁盘和文件系统

引言

在介绍linux的磁盘和文件系统之前,我们先来聊聊计算机的开机流程吧。。

1. BIOS:开机主动执行的一个韧体(写到主板上),会识别第一个可开机的设备

2. MBR:第一个可开机设备的第一个扇区的主引导分区块,内含可引导的加载程序

3. 引导加载程序(Boot loader):一个可读取内核文件的可执行软件

4. 内核文件:开始操作系统的功能

MBR

硬盘的0磁头,0柱头,第一个扇区就是MBR(Master Boot Record ,主引导分区),它可以分为三个部分

1. 存放主引导代码,bootloader,446bytes

2. 分区表(partition table):记录整块硬盘的分区的状况,64bytes

3. 硬盘的标示(55AA)

我们知道每一个分区记录项,需要占用16bytes,所以一块硬盘最多可以被分为4个分区。通过下面一个图更加直观来看其结构

磁盘分区

数据写入的地址是盘片,盘片可以细分扇区和柱面,扇区的大小是512bytes。

分区的最小单位是柱面(cylinder),至于为什么要分区:
1. 保证数据的安全性:每一个分区的数据是分开的,比如当你要重装系统c盘,但是需要对某些数据进行保存的时候,可以将需要保存的数据移动到其他盘上,而不会丢失。
2. 系统性能:我们在做分区的时候,一般是连续的柱面作为一个分区,数据的集中性,保证了在读取数据的时候性能更高。
由于只有64bytes来记录分区表,但是如果我们要多于4个的分区时候怎么办,我们采取的策略是使用扩展分区,但是扩展分区只能有一个(操作系统限制),并且无法格式化。
在扩展分区里面分出来的分区叫:逻辑分区(logical partition),逻辑分区数量受到操作系统和硬盘限制。在linux系统中,IDE硬盘最多59个逻辑分区(5-63),SATA硬盘最多11个逻辑分区(5-15),由于1-4是被保留的分区号。

文件系统特性

当我们进行硬盘的分区之后(通过fdisk),还需要进行格式化操作(通过mkfs,make file system),之后操作系统才可以真正的使用这个分区。
然后有人会问,我们为什么需要进行格式化呢,因为各种操作系统设置的文件属性/权限不同,为了存放这些文件所需的数据,因此需要进行格式,以便成为操作系统可以利用的文件系统格式。我来列举几种文件系统:
        1)windows 98 使用的文件系统是FAT(or FAT16);
        2)windows 2000之后所有版本采用的是NTFS;
        3)linux的正规的文件系统是EXT2(linux second extended file system,Ext2fs)
在早期,一个分区是只能够被格式化成一个文件系统,所以我们可以认为一个系统即一个分区。但是由于新技术的利用,我们可以通过LVM与软磁盘阵列(software raid),可以将一个分区格式化成多个文件系统(比如LVM),也可以将多个分区合成一个文件系统(LVM,Raid)。

Ext2文件系统

一个文件系统可以分为3块
1. super block:记录的是inode/block的数量,使用情况,文件系统格式等等信息
2. inode:记录的是文件的属性,一个文件占用一个inode,同时记录文件的数据所在block号码(固定大小128bytes)
3. block:实际记录文件的内容,如果文件过大,会占用多个block
如果把所有的inode和block都放在一块,不容易管理,所以在Ext2文件系统在格式化的时候基本是区分为多个块组(block group),每一个块组都有独立的inode/blcok/superblock系统,如图:

文件系统最前面会有一个启动扇区(boot sector),这个扇区可以安装引导装载程序,这样一来,我们可以将不同的引导装载程序安装到个别的文件系统最前端,而不需要去覆盖块硬盘唯一的MBR,这样也能够制作多重引导。

与目录树的关系

我们已经知道文件的存储方式,那么目录是如何存储的呢,其实linux系统对每一个目录也是会分配一个inode和n个block,在inode里面记录的是目录的相关权限和属性,和指向的block号码,至于目录里面对应的文件列表,以及各个文件的block号都存储在目录的block里面,block里面的内容大致为inode -> 文件名 这样的对应关系。
可想而知,当我们读取某一个文件的时候,是从目录树的根目录开始读取,一层层往下递归,直到读取到指定文件的inode编号。
除了ext2,还有ext3,两者区别在于ext3加入了日志功能,在恢复文件系统时候,更加方便和快速。

VFS

其实一个linux系统里面,有多个不同的文件系统,那么是如何管理这些文件系统的呢?自然需要一个统一的对外接口,linux是通过一个虚拟文件系统(Virtual Filesystem Switch)的内核功能去读取文件系统,通过它来对整个文件系统进行管理。
### 回答1: Linux磁盘文件系统是指在Linux操作系统中,用于管理磁盘的一系列工具机制。磁盘是计算机中存储数据的主要设备之一,而文件系统则是用于组织管理磁盘上的文目录的一种机制。在Linux中,常用的文件系统包括ext4、XFS、Btrfs等,而磁盘管理工具则包括fdisk、parted、LVM等。通过这些工具机制,用户可以对磁盘进行分区、格式化、挂载等操作,以及对文进行创建、读、删除等操作。 ### 回答2: Linux磁盘文件系统Linux操作系统中非常重要的组成部分。磁盘是一种外部设备,用于存储数据文件系统是在磁盘上实现的一种组织结构,用于管理访问存储在磁盘上的文Linux支持多种文件系统,包括EXT2、EXT3、EXT4、XFS等。其中EXT4是当前最常用的文件系统之一。它具有较高的性能可靠性,支持更大的文更高的容量。它还有一个非常重要的特性是支持日志化文件系统,可以保护文件系统数据的完整性。 在Linux中,磁盘分区是必要的,它可以将一个硬盘分割成多个逻辑分区,每个分区都可以被格式化为一个独立的文件系统。此外,Linux还支持逻辑卷管理(LVM),它可以动态地管理磁盘卷,包括自动扩展缩小,实现灵活的磁盘管理使用。 挂载是Linux中非常重要的概念。当磁盘被格式化为文件系统后,需要将其挂载到文件系统层次结构中的一个目录下才能访问。例如,如果一个磁盘挂载到目录“/mnt/data”,那么可以通过“/mnt/data”访问该磁盘上的文。 总之,Linux磁盘文件系统Linux操作系统中非常重要的组成部分,可以帮助用户管理访问存储在磁盘上的文,并实现高效、灵活、可靠的磁盘管理。 ### 回答3: Linux 操作系统的磁盘管理文件系统是其一个非常强大的特点。在 Linux 中,磁盘是通过文件系统来管理组织的。文件系统可以理解为是一种组织文的方法,它是由数据结构算法组成的。 Linux 平台支持多种文件系统,包括 ext2、ext3、ext4、NTFS、FAT32 等,其中 ext2、ext3、ext4 是 Linux 平台上常用的三种文件系统。这些文件系统之间有一些区别特点,如 ext4 是一个比 ext3 更强大更高效的文件系统。NTFS FAT32 是 Windows 平台上的文件系统,但也能够在 Linux 上使用。 Linux 上的文件系统会将磁盘分为多个分区(也就是卷),每个分区都会有自己的格式挂载点。通常我们会将根分区(也就是 / 分区)以及各个其他重要分区分别挂载到不同的目录下,如 /home、/var、/usr 等。 同时,Linux 认为所有设备(包括硬盘、CD-ROM、网络驱动器等)都是文,因此每个设备都会有相应的设备文,如 /dev/sdb 是一个 SATA 硬盘设备文。 为了保护磁盘文件系统的安全完整性,Linux 提供了多种方法来管理文件系统,如创建删除分区、格式化磁盘、挂载卸载文件系统等。同时,Linux 也提供了多种工具来检查修复文件系统的错误,防止数据丢失。 总之,Linux磁盘文件系统管理是一个非常重要的方面,可以帮助用户保护数据安全系统稳定。学会使用这些工具技术,对于 Linux 的系统管理员开发者来说是非常必要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值