第二部分 第八章 Linux磁盘与文件管理系统
1) 磁盘的物理组成
2)分区,分区的要点:记录每一个分区的起始点与结束柱面
主引导区,MBR就是在一块硬盘的第0轨道上,计算机启动后要去使用硬盘时
必须读取的第一个区域。这个去路记录了硬盘的所有分区信息,以及启动时
可以写入引导程序的位置。
MBR的最大限制,它的大小不能大到存储所有分区与引导程序的信息,因此
MBR仅能提供最多四个分区的信息,这就是主分区与扩展分区最多只能有4个的
原因
3)文件系统
一个扇区大小为512字节,为了提高效率,就有了逻辑块的概念,块的大小
是以扇区的2n次方的倍数。划的大文件读取效率高,但是造成的浪费空间
也大。
进行分区时,每个分区就是一个文件系统,每个文件系统开始位置的那个块
就称为超级块,超级块的作用是存储文件爱你系统的大小,空的和填满的快
使用一个分区来访问数据时,第一个要经过的就是超级块。
4)Linux的EXT2文件系统(inode)
在标准的EXT2文件系统中,每个人文件的内容分为两个部分来存储,
一个是文件的属性,一个是文件的内容。
ext2规划出inode与块来分别存储文件的属性(放在inode中)与文件内容
(放在block中),
inode记录“该文件的相关属性,以及文件内容放置在哪个块内”的信息,
1.该文件的拥有者与用户组(owner/group)
2.该文件的访问模式(read/write/execute)
3.该文件的类型(type)
4.该文件建立或状态改变的时间(ctime),最近一次的读取时间(atime)
最近修改的时间(mtime)
5.该文件的大小
6.定义文件属性的标志,如SetUID
7.该文件真正内容的指针
一个inode的大小是128字节,
5)Linux读取文件内容
1.目录,ext2会给该目录分贝一个inode与至少一个块,
inode记录该目录的相关属性, 并指向分配到那个块,块记录这个目录
下的相关文件的关联性
2.文件, ext2会给该文件分配至少一个inode与该文件大小的块数量,
例如一个块大小为4KB,要建立一个100KB的文件,Linux将分配一个inode
与25个块来存储该文件。
注意,inode本身并不记录文件名,而是记录文件的相关属性,文件名则记录
在目录所属的块区域。文件的相关连接会记录在目录的块数据区域,
操作系统读取/etc/crontab的流程
1.操作系统根据根目录的相关数据获取/etc目录所在的inode,并读取/etc
这个目录的所有相关属性.
2.根据/etc的inode数据,可以获取/etc目录下所有文件的关联数据是放置在
哪一个块中,并前往该块读取文件的关联性内容.
3.由上一个步骤的快照那个,可以知道crontab文件的inode所在地,
并前往该inode
4.有上一个步骤的inode,俄可以获取crontab文件你的所有属性,
前往inode所指向的块区域,顺利获取crontab的文件内容
目录最大的功能在于提供文件的关联性,在关联性中就是"文件名
与inode的对应数据",在ext2文件系统中,有几个要注意的事情:
1)ext2与ext3文件在建立时,就已经设置好固定的inode数与块数目
2)格式化ext2文件系统,可以使用mke2fs程序执行
3)ext2允许块的大小为1024,2048,4096
4)一个分区所能允许的最大文件数与inode的数量有关,因为有一个文件
至少要占用一个inode
5)目录下面的文件数如果太多,导致一个块无法容纳所有的数据,
Linux会给予该目录多个块,来继续记录关联数据。
6)通常inode数量设置为“分区的容量”/“一个inode预计想要控制的容量”。
7)inode比块多是没有意义的
8)块越小,inode数量越多,
8)块越大,inode数量越少
简单归纳,ext2有以下几种特性
1)块与inodes在一开始格式化时就已经固定了
2)一个分区能够容纳的文件数与inode有关
3)一般,每4KB的硬盘空间分配一个inode
4)一个inode的大小为128字节
5)块为固定大小,当前支持1024/2048/4096
6)块越大,则损耗的硬盘空间也越多
7)对于单一文件,若块大小=1024,最大容量为16GB,
若块大小=4096,容量最大为2TB
8)对于整个分区,若块大小=1024,则容量为2TB,若块大小=4096,
则容量为32TB。
9)文件名最长大255,文件文件名长达4096
另外,分区太大,文件碎片,会使效率太低,分区分散,数据读取性能也
低下。
6) ext2/ext3 文件的访问与日志文件系统的功能
建立ext2时,它拥有超级块(superblock), 组描述(group description)
/ 块位图(block bitmap)/inode位图(inode bitmap)/
inode表(inode table),数据块(data blocks)。
1)SuperBlock(超级块):它是记录整个文件系统相关信息的地方
记录的信息主要有:
1.块与inode的总量
2.未使用与已使用的inode/块数量
3.文件系统的载入时间,最近一次写入数据的时间,
最近一次检查磁盘文件的相关信息
4.有效位数值,若已被载入,则为0,若未载入,则为1
2)Group Description :记录此块由何处开始记录。
3)Block bitmap :此处记录块是否使用
4) inode bitmap :此处记录inode是否使用
5)Inode table :为每个inode的数据存放区
6)Data blocks :为每个块的数据存放区
例如:dumpe2fs /dev/hda1
当新增一个文件(目录)时:
1)根据inode位图/块位图信息,找到尚未使用的inode与块,进而将
文件的属性与数据写入inode与块
2)将刚刚使用的inode与块的号码告知超级块,inode位图,块位图,
让这些元数据更新信息。
inode与块区域称为数据存放区,超级块,块位图,inode bitmap记录
称为元数据(metadata)。
数据的不一致
系统中断时,会发生元数据与数据存放区不一致的情况。在ext2中会强制
检查数据的一致性,不过会非常费时,以为要搜索整个分区。
日志系统:
1。写文件时,先在日志记录块中记录:要开始写入文件了
2.开始吸入文件的权限与数据
3.开始更新元数据与数据
4.完成数据与元数据的更新后,在日志记录块中完成该文件的记录
当发生问题时,系统只用去减产日志记录就可以了。可以通过ext3
可以实现
7) Linux文件系统的运行
Linux采用异步方式读取文件, 系统将块数据加载到内存中,改动时需要
回写到文件中
8)载入点 载入点就是进入该文件系统的入口
9)Linux支持的其他文件系统,常见的有:
传统文件系统:ext2/ minix /MS-DOS/FAT/iso9660
日志式文件系统:ext3/reiserFS/NTFS/JFS/XFS
网络文件系统:NFS/SMBFS
10) 文件系统的简单操作
df :磁盘与目录的容量
du :查看文件或目录
11)连接文件 : In
1,硬连接或实际连接
硬连接只是在某个目录下新增了一个该文件的哦关联数据而已
都是指向同一份数据块,硬连接不会同调inode与磁盘空间
限制:不能块文件系统,不能连接目录
2.符号链接(即快捷方式)
指令:In [-sf] 源文件 目标文件
12)磁盘的分区,格式化,检验与载入
fdisk :分区(略,暂时不想了解)
mke2fs :磁盘格式化
fsck,badblocks:磁盘检验,
13)磁盘的载入与卸载
mount [-tonL] 设备号 载入点
例如: mount -t ext3 /dev/hdb5 /mnt/hdb5
载入光盘:mount -t iso9660 /dev/cdrom /mnt/cdrom
列入所有已载入的分区数据:mount
unmonut 设备号或载入点
14)修改磁盘参数
mknod
e2label
tune2fs 转化文件系统
hdparm 启动DMA模式
15)设置启动载入
1.载入软盘 mount -t ext2 /dev/fd0 /media/floppy
2.载入windows磁盘 mount -t vfat /dev/hda1 /mnt/win96
mount -t vfat -o iocharset=cp950 /dev/hda1 /mnt/win98
3.载入U盘 fdisk -l 查看所有的磁盘载入的情况
mount -t vfat /dev/sda1 /mnt/usb
16)启动载入/etc/fstab 和 /etc/mtab
系统载入的一些限制:
根目录是必须被载入的,一定要先于其他的载入点载入
其他载入点必须是已建立的目录,但要遵守系统目录结构的原则
所有载入点同一时间之内,只能载入一次
所有分区在同一时间,只能载入一次
若进行卸载,必须将工作目录移到载入点之外
cat /etc/fstab
17)建立虚拟内存容量
1.fdisk /dev/hd[a-d][1-16] 建立一个新磁盘分区
2.使用mkswap /dev/hd[a-d][1-16] 将分区格式化成swap的文件格式
3.启动swap,swapon /dev/hd[a-d][1-16]
4.关闭虚拟内容,使用swapoff即可
18) 建立虚拟内存文件
1.使用dd命令建立swap文件
2.使用mkswap将swap文件格式化为虚拟内存的文件格式
3.使用swapon来启动该文件,使其成为虚拟内存
使用swapiff来关闭该文件
习题:
1) 如何在Linux系统中增加一个新硬盘,请详述流程
答:插上硬盘
fdisk进行分区
mkfs 格式化
mkdir建立目录
mount进行磁盘挂载
vi /etc/tstab
最后一行加上 /dev/sdb1 /www ext3 defaults 1 2
2) 假设条件:原来规划的/home只有1GB,但当前用户很多,
所以容量不足,我想增加一个一个8GB硬盘,如何做
答:分成多个区,mount到/home目录下的不同目录
3) 如果分区/dev/hda3有问题,但它是被载入的,如何改变
答:umount /dev/hda3 然后进行操作
4) 我们常说,启动的时候“发现硬盘有问题”,请问,这个问题
是指“文件系统的损坏”,还是指“硬盘的损坏”
答:一般指的是“文件系统的损坏”
5) 我有两个文件,分别是file1和file2,这两个文件互为硬连接文件,
请问,若将file1删除,然后再以vi的方式建立一个名为file1的文件
,file2的内容是否会被更改
答: 会被更改的。
删除file1,但是file2还是包含file1的信息,删除后会找不到文件
但是新建同名文件会造成file2会指向新的file1,所以内容会发生
更改的
第二部分 第八章 Linux磁盘与文件管理系统
最新推荐文章于 2023-06-16 11:23:36 发布