Linux磁盘和文件系统

早期的Linux版本使用ext2文件系统,是一种索引型的文件系统。文件系统(FileSystem)与磁盘的关系是,将磁盘挂载到文件系统相应的目录下面。磁盘的使用必须经过分割、格式化和挂载,相应的命令为fdisk、mkfs和mount。通过df命令可以查看操作系统中磁盘都是挂载在哪些位置的。一般安装Linux操作系统时,至少要分区为/和swap,swap是为了在系统内存不足的时候用来给系统做内存用的。以下五个目录必须和/根目录在同一个文件系统中:/bin、/sbin、/ect、/lib和/dev。

 

磁盘第一个扇区很重要,记录MBR(master boot record),可以安装开机管理程序,446字节用于这个,还有64字节用于记录磁盘分区情况,即partion table。

 

开机管理流程:BIOS->MBR->boot loader->加载kernel。其中boot loader可以安装在两个地方,一个是MBR,另一个是文件系统的boot sector。

 

ext2文件系统最前面部分是一个boot sector,即启动扇区,可以安装开机管理程序,这个很重要,因为它对电脑安装多系统环境很有帮助,只需要将不同的系统的开机管理程序安装在不同文件系统的boot sector,,而不用都占用唯一的一个MBR。另外,如果整个文件系统只有一块的话,会导致磁盘碎片的产生,进而可能影响搜索的性能(毕毕竟ext2是索引式文件系统)。分块的话,文件系统就被分成了boot sector和各个block group,(命令dumpe2fs  /dev/sda2可以显示)。每个block group(其实superblock只有一个,其他有的话也是拷贝第一个里面的内容的)包括:档案系统描述、superblock、inode bitmap、block bitmap、inode table和block六大部分。其中superblock用来记录文件系统大小,本身大小有的是1024字节,存放的inode和block的数目、大小,可用的inode、block数目,就是一些文件系统基本信息,很重要。inode bitmap用来记录已用和未使用的inode位置和大小,block对应记录block的。inode table记录文件的属性、权限等,大小有128字节和256字节。block记录的是文件的实际内容,大小有1K、2K和4K的。一个文件只有一个inode来存储,可以占用多个block。每个block记录会在inode中花费4字节。


128字节的inode是如何索引到一个比较大的文件的?(即inode、block与文件的关系)

假定block大小为1K。系统将inode记录block号码的区域分为12个直接,1个间接,1个二级间接,1个三级间接。间接的时候,1K可以存放1024/4=256个,故间接可以存放256X1K=256K的数据,所以,总共可以存储12+256+256X256+256X256X256的数据,转换后可得出大约是16GB的数据。所以block为1K时,一个inode最大可以存储的文件大小是16GB。但是block为2K和4K时不能简单的用同样的方式计算,因为系统设置了相应的限制,不能让其过大,2K最大文件为256GB,4K为2TB。

目录树:

文件系统中创建目录的时候,系统会给该目录分配inode和block,inode用来记录目录的属性、权限和block号码等,block用来记录该目录下的文件名和文件名占用的inode号码数据。所以文件读取的时候,比如/home/test文件,读取的顺序为/的inode和block,然后home的inode和block,最后是文件test的inode和block。

创建文件的时候,文件系统中相应的inode bitmap、block bitmap和superblock都会相应的改变。


由于ext2文件系统没有日志管理的功能,导致系统突然断电等情况下编写的文件不容易找回,后来又使用了ext3系统,在文件系统中增加了日志模块,可以记录文件的信息,即使系统突然down掉,通过日志文件可以迅速定位到编写的文件并复原文件,使文件不容易丢失。


磁盘使用流程:

使用fdisk /dev/hdc建立新的partion,按p查看是否正确,按w保存。格式化命令为mkfs -t ext4 /dev/hdcnew,格式化新建的partion。修改/etc/fstab文件,格式如/dev/hdc /要挂载的目录地址 default 1 2。最后,用mount -a自动挂载。用df可以查看挂载的是否正确。

 

关于硬盘中磁盘的介绍,这篇博客写的比较好:http://blog.chinaunix.net/uid-23069658-id-3413957.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值