网站地图    收藏   

主页 > 系统 > linux系统 >

Linux重要知识点汇总——磁盘与文件系统管理 -

来源:自学PHP网    时间:2015-04-14 10:28 作者: 阅读:

[导读] Linux重要知识点汇总磁盘与文件系统管理EXT2文件系统:文件系统特性:格式化(format):每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分...

Linux重要知识点汇总——磁盘与文件系统管理
 
EXT2文件系统:
 
文件系统特性:
 
格式化(format):每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,以成为操作系统能够你用的文件系统格式
 
通常我们称呼一个可被挂载的数据为一个文件系统而不是一个分区(一个分区多个文件系统,多个分区一个文件系统)
 
super block:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等
inode:记录文件的属性,一个文件占用一个inode,同时记录文件的数据所在的block号码
block:实际记录文件的内容,若文件太大时,会占用多个block
每个inode和block都有编号,而每个文件占用一个inode,inode内则有文件数据放置的block号码。这种数据访问的方法称为索引式文件系统。
 
碎片整理:文件写入到block太过于分散了,此时文件读取的性能将会变得很差。通过碎片整理将同一文件所属的block汇合在一起,这样数据的读取会比较容易。
 
文件系统一开始就将inode和block规划好了,除非重新格式化(或者利用resize2fs等命令更改文件系统大小),否则inode与block固定后就不再变动。
 
Ext2文件系统在格式化的时候基本上是区分多个块组(block group)的,每个块组都有独立的inode/block/superblock系统。
 
整体规划中,文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装引导装载程序。
 
调出目前挂载的设备:df
 
查看文件系统信息:dumpe2fs 【-bh】 设备文件名
 
与目录树的关系
 
目录:
新建一个目录时,ext2会分配一个inode与至少一块block给该目录。
 
inode记录该目录的相关权限与属性,并可记录分配到的那块block号码;
 
block记录在这个目录下的文件名与该文件名占用的inode号码数据
 
查看目录内文件所占用的inode号码:ls –i
 
文件:
当我们新建一个文件时,ext2会分配一个inode与相对于该文件大小的block数量给该文件。
 
目录树的读取:
 
系统通过挂载的信息找到挂载点的inode号码(通常一个文件系统的最顶层inode号码会由2号开始),此时就能够得到根目录的inode内容,并依据该inode读取根目录的block内的文件名数据,再一层一层地往下读到正确的文件名
 
新建一个文件或者目录的步骤:
 
确定用户对于欲添加文件的目录是否具有w与x的权限,若有的话才能添加
根据inode bitmap找到没有使用的inode号码,并将新文件的权限/属性写入
根据block bitmap找到没有使用中的block号码,并将实际的数据写入block中,且更新inode的block指向数据
将刚才写入的inode与block数据同步更新inode bitmap与block bitmap,并更新superblock的内容(未使用与已使用的量)
inode table与data block称为数据存放区域,其他super block、block bitmap与inode bitmap等区段为meta data(中间数据),数据是经常变动的,每次添加、删除、编辑时都可能会影响到这三个部分的数据。
 
数据的不一致(Inconsistent)状态
 
meta data的内容与实际数据存放区产生不一致的情况。Ext2文件系统中,通过Super block当中记录的valid bit(是否有挂载)与文件系统的state(clean与否)等状态来判断是否强制进行数据一致性的检查。若有需要检查时则以e2fsck这支程序来进行的
 
日志文件系统(Journaling file system)
 
预备:当系统要写入一个文件时,会先在日志记录块中记录某个文件准备要写入的信息
实际写入:开始写入文件的权限与数据;开始更新meta data的数据
结束:完成数据与meta data更新后,在日志记录块当中完成该文件的记录
在这样的程序当中,万一数据的记录过程当中发生了问题,那么我们的系统只要去检查日志记录块就可以知道哪个文件发生了问题,针对该问题做一致性检查即可。
 
linux文件系统的操作
 
异步处理(asynchronously):当系统知道一个文件到内存后,如果该文件没有改动过,则在内存区段的文件数据会被设置为(clean)的。但如果内存中的文件数据被更改过了,此时该内存中的数据会被设置为Dirty。此时所有的操作还在内存中执行,并没有写入到磁盘中。系统会不定时地将内存中设置为Dirty的数据写回磁盘,以保持磁盘与内存数据的一致性。
 
文件系统与内存:
 
系统会将常用的文件数据放置到主存储器的缓冲区,以加速文件系统的读写
Linux的物理内存最后都会被用光。这是正常的情况,可加速系统性能。
可以手动使用sync强迫内存中设置为Dirty的文件写回到磁盘中
若不正常关机,由于数据尚未回写到磁盘内,因此重新启动后可能会花很多时间在进行磁盘检验,甚至可能导致文件系统损毁(非磁盘损坏)
Linux VFS(Virtual Filesystem Switch):Linux内核通过VFS管理文件系统,用户并不需要知道么个分区上头的文件系统是什么。
 
文件系统的简单操作:
磁盘与目录的容量:df,du
 
df:列出文件系统的整体磁盘使用量
du:评估文件系统的磁盘使用量(常用来评估目录所占容量)
df -hi:以人们较易阅读的GB、MB、KB等格式自行显示;不用硬盘容量,而以inode的数量来显示
 
读取的范围是在super block内的信息,所以命令显示结果的速度非常快。
 
du -s:列出总量而已,而不列出每个个别的目录占用容量
 
直接到文件系统内去查找所有的文件数据,默认情况下大小的输出是以KB为单位的。
 
连接文件:ln
 
hard link(硬连接或实际连接):
 
在某个目录下面新建一条文件名连接到某inode号码关联的记录。
 
安全:如果将任何一个“文件名”删除,其实inode与block还是存在的。此时可以通过另一个“文件名”来读取到正确的文件数据。此外,不论使用哪个“文件名”来编辑,最终的结果都会写入到相同的inode和block中,因此均能进行数据的修改。
 
限制:不能跨文件系统,不能连接到目录。
 
symbolic link(符号链接,也即快捷方式)
 
创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。当源文件被删除之后,symbolic link的文件会“开不了”
 
内容:目标文件的“文件名”
 
symbolic link与Windows的快捷方式可以划上等号,有symbolic link所创建的文件为一个独立的新的文件,所以会占用inode与block
 
ln -s:如果不加任何参数就进行连接,那就是hard link,至于-s就是symbolic link
 
磁盘分区:fdisk
-l:输出后面接的设备所有分区内容
 
df:找出可用磁盘文件名,再使用fdisk查阅
 
删除分区:
fdisk:先进入fdisk界面
p:先看一下分区信息,确定删除的分区
d:选择一个分区
w:存储到磁盘数据表中,并离开fdisk
新增磁盘分区:
fdisk:进入fdisk界面
n:选择分区类型(主分区,扩展分区)
起始柱面(默认值)
终止柱面:+512MB
p:查看分区结果
强制更新内核分区表信息:partprobe
 
磁盘格式化
mkfs 【-t 文件系统格式】 设备文件名
 
磁盘检验:fsck,badblocks
fsck 【-t 文件系统】 【-ACay】 设备名称
 
-A:依据/etc/fastab的内容,将需要的设备扫描一次
 
-a(y):自动修复检查时遇到的有问题的扇区
 
-C:检验的过程当中用一个直方图来显示目前的进度
 
通常只有身为root且文件系统有问题的时候才使用这个命令,否则在正常情况下使用此命令,可能对系统造成危害。
 
执行fsck时,被检查的分区务必不可挂载到系统上!
 
磁盘的挂载与卸载
单一文件系统不应该被重复挂载在不同的挂载点中
单一目录不应该重复挂载多个文件系统
作为挂载点的目录理论上应该都是空目录
mount -a:依据配置文件/etc/fstab的数据将所有未挂载的磁盘都挂上来
 
mount -l:显示目前挂载的信息(加上label列)
 
重新挂载根目录:mount –o remount,rw,auto  /
 
umount(将设备文件卸载)
磁盘参数的修改:
mknod 设备名 【bcp】 【major】 【minor】
 
b:外部存储设备文件
 
c:外部输入设备文件
 
p:FIFO文件
 
设置文件系统卷标:e2label 设备名称 新的label名称
 
tune2fs
 
hdparm –Tt 设备名称 :测试这块硬盘的读取性能
 
设置开机挂载
开机挂载/etc/fstab及/etc/mtab
根目录/是必须挂载的,而且一定要先于其他mount point被挂载进来
其他挂载点必须为已新建的目录,可任意指定,但一定要遵守必需的系统目录架构原则
所有挂载点在同一时间内,只能挂载一次
所有分区在同一时间内,只能挂在一次
如若进行卸载,必须先将工作目录移到挂载点(及其子目录)之外
特殊设备loop挂载(镜像文件不刻录就挂载使用)
mount –o loop 文件地址 挂载地址
 
新建大文件以制作loop文件
 
帮助解决分区不良的情况。
 
创建大型文件  dd if=/dev/zero of=/home/loopdev bs=1M count=512
格式化 mkfs –t ext4 /home/loopdev
挂载 mount –o loop …
内存交换空间(swap)的构建
设置一个swap分区
创建一个虚拟内存文件
使用物理分区构建swap
 
分区:先使用fdisk分出一个分区给系统作为swap,同时还要设置一下system ID。fdisk /dev/sda –> p –> t (修改系统ID),几号分区改成swap的ID为82,p,w,partprobe(更新内核分区表)
构建swap格式:mkswap
开始查看与加载:free(查看)、swapon(开启分区)、free
使用文件构建swap
 
使用dd新增一个文件
使用mkswap将文件格式化为swap的文件格式
使用swapon将其启动
使用swapoff关掉swap file
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论