鸟哥的Linux私房菜10.14 磁盘与文件系统管理

第8章 Linux磁盘与文件系统管理

关于EXT2文件系统:这是最传统的磁盘文件系统

传统的技术只能将一个分区格式化为一种文件系统,但是新技术可以将一个分区格式化为多个文件系统(LVM),也可以将多个分区合成一个文件系统(LVM,RAID)

文件系统中超级区块(superblock)用来记录filesystem的整体信息,包括inode/block的总量,使用量、剩余量,以及文件系统的格式与相关信息等。

inode:记录档案的属性(一个档案对应一个inode),有编号

block:实际记录档案的内容(一个档案可能占用多个),有编号,大小只能是1KB,2KB,4KB

该文件系统是索引式文件系统(indexed allocation),不太需要进行碎片整理

--------------------------------------------------------------------------------------------------------

Linux系统中为了防止inode和block过多而将Ext2文件系统分为多个区块群组,每个群组有独立的inode/block/superblock系统

具体介绍如下:

data block(资料区块)

***虽然Ext2已经能够支持大于2GB以上的单一档案容量,但因为某些应用程序依然使用旧的限制,只能捕捉到2GB以下的档案

此外,Ext2文件系统的block还有如下限制:

          1.原则上,block的大小和数量在格式化后就不能改变了

           2.每个block内最多放置一个档案的数据

           3.若档案太大,可能占用多个block

inode table

inode记录的数据至少有以下这些:1.该档案的存取模式(read/write/excute) 2.该档案的用户与群组 3.该档案的容量 4.该档案建立或状态改变的时间 5.最近一次的读取时间 6.最近修改的时间 7.定义档案特性的标识,如SUID等 8.该档案真正内容的指向

inode的数量与大小在格式化时已经固定:每个inode为128bytes,每个档案对应一个inode,系统读取档案时先找到inode,分析其记录的权限才能读取

Superblock

它记录的信息主要有:1.block与inode的容量,2.未使用与已使用的inode/block数量,3.block与inode的大小,4.filesystem的挂载时间、最近一次写入时间、最近一次检验磁盘时间等相关信息,5.一个valid bit的数值,若此文件系统已被挂载,则数值为0,若未被挂载,则数值为1

Filesystem Description

描述每个block group的开始与结束的block号码,以及每个区段分别位于哪一个block号码之间,这部分可用dumpe2fs观察

block bitmap(区块对照表)

通过这个可以标记某个block是不是为空

inode bitmap(inode对照表)

标记某个inode是否被使用

------------------------------------------------------------------------------------------------------

与目录树的关系

想要实际观察根目录的档案所占用的inode号码,可以使用 ls -i 这个指令

inode本身并不记录文件名,文件名由目录中的block记录,所以对于档案的一些操作需要在目录中有w权限

目录树是由根目录读起,系统可以通过挂载的信息找到挂载点的inode号码(最顶层inode号码从2开始),在读取档案的时候都是先从inode读到block,再接着往下读

filesystem并不是越大越好,因为这样会使得硬盘的机械手臂移动幅度过大,也会造成数据读取效率的降低

-------------------------------------------------------------------------------------------------------

EXT2/EXT3档案的存取与日志式文件系统的功能

新增一个档案的步骤:1.确定用户是否具有对新增档案目录的w和x的权限,2.根据inode bitmap找到未使用的inode号码,写入新档案的属性/权限,3.根据block bitmap找到未使用的block号码,写入实际数据,并将inode中的block指向数据,4.更新inode bitmap、block bitmap、superblock

日志式文件系统(Journaling filesystem)为了避免文件系统的不一致

所以最好选择EXT3,因为它具备四个优势:可利用性、数据完整性、速度、易于转换

-------------------------------------------------------------------------------------------------------

Linux系统中可以手动使用sync来强迫内存设定为Dirty的档案回写到磁盘中

挂载点(mount point)的意义

重点:挂载点一定是目录,为进入该文件系统的入口。因此并不是任何文件系统都能使用,必须‘挂载’到目录树的某个目录才可以

其它Linux支持的文件系统与VFS

查看某个Linux支持的文件系统有哪些,可以查看以下目录

           ls -l /lib/modules/$(uname -r)/kernel/fs

系统目前已加载到内存中支持的文件系统有:           cat /proc/filesystems

Linux VFS(Virtual Filesystem Switch)用来管理整个Linux上的文件系统

-----------------------------------------------------------------------------------------------------------

磁盘与目录的容量

每个档案的容量在inode中有记载,df(列出文件系统的整体磁盘使用量),du(评估文件系统的磁盘使用量,尤其是目录)

-----------------------------------------------------------------

实体连接与符号链接:  ln

Hard Link(实体链接,硬式连结或实际连结)感觉就是一个inode可以连结多个档案一样的,但是这些档案都是“一模一样”的

实体连接不能跨Filesystem,不能link目录

Symbolic Link(符号链接,就是快捷方式)修改快捷方式的连接档,原始档会跟着变化,不过用途比较广泛哦

制作连接档需要使用 ln 这个指令

关于目录的link数量

目录中的三个东东: /tmp/testing

                                      /tmp/testing/.      前两个其实都代表该目录

                                      /tmp/testing/..     代表tmp,建立新目录时候tmp的link数量会增加

-------------------------------------------------------------------------------------------------------

磁盘的分区、格式化、检验与挂载

如果要在系统中新增一个硬盘,步骤如下:1.对硬盘进行分区,建立可用的partition,2.对该partition进行格式化,以建立系统可用的filesystem,3.可以检验新建的filesystem,4.在Linux系统上,需要建立挂载点将其挂载上来

磁盘分区:fdisk

删除磁盘分区:

1.fdisk /dev/hdc    2.p    3.d    4.w(or)q,w表示储存修改,q表示取消修改

新增磁盘分区:

 

操作环境——最好是单人维护模式

注意事项:SATA磁盘支持15个分区,IDE支持63个分区,但大家一般用SATA,所以要限制分区数目

                   fdisk不能处理大于2TB的分区

磁盘格式化(make filesystem,mkfs)

mkfs指令如果加上 -t 的参数,可以接文件系统格式

EXT2/EXT3的公用程序   mke2fs

磁盘检验: fsck,  badblocks

磁盘挂载与卸除:

1.单一文件系统不应被重复挂载在不同的挂载点中,2.单一目录不应该重复挂载多个文件系统,3.要作为挂载点的目录,理论上应该都是空目录才是

(这个貌似很难的样子)

其实呢,利用‘mount 装置文件名 挂载点’就能够顺利的挂载了。不过系统有指定哪些类型的filesystem才需要进行挂载测试,主要参考以下档案:

/etc/filesystems :系统指定的测试挂载文件系统类型

/proc/filesystems : Linux系统已经加载的文件系统类型

而Linux支持的文件系统驱动程序都在目录  /lib/modules/$(uname -r)/kernel/fs/    中

挂载 CD 或 DVD光盘       ———光盘一挂载之后就无法退出光盘片了,除非卸除才可以退出。

挂载时候并不是直接写链接文件,比如,如果光驱接在 /dev/hdd ,那么正确的挂载应该是 " mount /dev/hdd/media/cdrom "

格式化与挂载软盘

软盘格式化可以直接用mkfs啦,但是软盘也可以格式化为 ext3 或 vfat 格式,挂载的时候使用系统自动测试挂载即可

软盘被挂载了以后还是可以退出的哦,不过这样文件系统会出现问题。所以还是记住要先卸载再退出

挂载随身碟(是指U盘之类的么)

不能挂载NTFS 格式的文件系统

重新挂载根目录与挂载不特定目录

整个目录树最关键的位置就是根目录,所以它不能被卸载,那么如何重新挂载呢,可以【重新启动】,也可以用指令重新挂载

mount -o remount,rw,auto

此外呢,还可以用mount将某个目录挂载到另外一个目录去哦

umount(将装置档案卸载)

使用Label name进行挂载

label(标头)  这种挂载方法:系统不必知道该文件系统所在的接口与磁盘文件名称

磁盘参数修订

mknod   设置装置名称

e2label    修改标头     优点:不论磁盘文件名如何变化,不论硬盘插在哪个IDE/SATA接口,都没有影响

                                       缺点:如果有两个硬盘,刚好两个硬盘的Label是重复的,那就很大问题了

tune2fs    更新、转换等等功能,还可以修改标头

hdparm   显示硬盘的一些参数

-----------------------------------------------------------------------------------------------------------

开机挂载 /etc/fstab  以及 /etc/mtab

挂载的一些限制:1.根目录 / 是必须挂载的,而且一定要先于其他挂载点   ,2.其他挂载点必须为已建立的目录,可任意指定,但一定要遵守必须的系统目录架构原则 ,3.所有挂载点在同一时间只能,只能挂载一次 ,4.所有partition在同一时间之内,只能挂载一次, 5.如若进行卸载,必须先将工作目录移到挂载点及其子目录之外

/etc/fstab   就是当我们利用mount指令进行挂载时,将所有的选项和参数写入到这个档案中

这个档案有六个字段(非常重要)

第一栏 :磁盘装置文件名或该装置的Label

第二栏 :挂载点,就是目录喽

第三栏 :磁盘分区的分检系统  必须要手动输入文件系统

第四栏 :文件系统参数  好多的表格汇总,没写了

第五栏 :能否被dump备份指令作用 ,这是一个数值表示,0代表不要,1代表每天更新,2代表其他不定日期更新

第六栏 :是否以fsck检验扇区 ,0代表不要,1代表要(根目录),2代表要(其他)

特殊装置loop挂载(映像档不刻录就直接挂载使用)

其实还比较简单了……  mount -o loop 映像文件名    就okay了

不过要建立大型档案来制作loop装置档案

----------------------------------------------------------------------------------------------------------------

内存置换空间(swap)建立

可以使用实体分区创建 swap

1. 分区,使用fdisk,可能要设定一下system ID ;2.格式化,利用‘mkswap 装置文件名’的指令来格式化 ;3.使用 swapon ;4.观察

使用档案建立 swap

1. 通过dd指令在 /tmp下面新增一个档案;2.使用mkswap 格式化  ;3.使用swapon来开启;4.使用swapoff来关掉

swap使用限制——物理内存不够的时候

数量少于32个,总量最多64GB

------------------------------------------------------------------------------------------------------------------

关于boot sector和superblock

parted可以解决fdisk的问题——不能处理2TB以上的硬盘

 

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭