linux私房菜笔记 - 第七章 - Linux磁盘与文件系统管理

linux私房菜笔记 - 第七章 - Linux磁盘与文件系统管理,第1张

重点:inode、block(数据区块)、superblock(超级区块)

磁盘结构

GPT与MBR

区别

磁盘以文件表示

linux中设备都以文件形式在/dev中表示,如磁盘为/dev/sd[a-p物理][1-128分区]

文件系统:boot+group+group...

group: inode信息 数据

限制:

缺点:

区块大:小文件多浪费空间

区块小:inode多读写性能差

记录一个区块指针需要4B,一个inode包含12个直接、1个间接、1个双间接、1个三间接,所以1K区块下一个文件最大12+256+256 256+256 256*256个数据区块共16G

如何查看这些信息

输出:超级区块信息+区块群组信息

数据不一致

异步处理

修改时将文件读入内存标记为clean,修改后标记为dirty但并不立即写入硬盘,需要调用sync。

不正常关机时会导致磁盘校验。

文件系统与目录树

挂载:文件系统与目录树结合,比如将 / 挂载到 /dev/sda1 这个设备

相同文件系统类型的不同文件系统目录树根的inode相同,不同文件系统内文件inode值可能重复,同一个文件系统inode与文件一一对应。

Linux支持多种文件系统,包括 传统、日志、网络 的,以下命令可以查询。

VFS(Virtual Filesystem Switch)是位于 内核层 系统调用 ,帮助处理读取不同文件系统

ext4不好:预先分配所有inode,格式化慢,不适合大容量磁盘

XFS好:适合大容量磁盘和巨型文件

lsattr 和 chattr 可以更改隐藏属性,但是xfs不支持部分隐藏属性

xfs分为数据区(data section)、文件系统活动登录区(log section)、实时运行区(realtime section)

数据区

同ext,分为超级区块、剩余空间的管理、inode分配与追踪。但是inode动态分配,格式化快。且数据块(4K以上内核不给挂载)与inode大小(256B-2M)可以自定义。

文件系统活动登录区

类似日志区,所有文件变化在此记录,当完全被写入记录才被删除,用于校验。可指定外部磁盘作为该区。

实时运行区

先在该区段中寻找数个extent区块,将文件放到这些区块中, 等分配完了 再写入数据区中的inode与区块中。

xfs文件系统查看信息

注意点:如果对 /boot 使用,可以看到 /dev/sda2 指向某个物理设备,但是对 / 使用,可以看到指向 /dev/mapper/centos-root 。这是因为在安装系统时候, 设备分区 使用了LVM而非标准分区,linux为你自动创建的空间池,用多少取多少。

含有inode大小、个数、总数、区块大小、数量、与阵列 stripe 有关的信息

df

/proc 中1kblock,used,free都是0,因为这个目录挂载在内存中

/dev/shm/ 是用内存虚拟出的磁盘空间

不知道某个目录/文件所在挂载点,还想知道这个分区还能存多少东西?

du

硬链接

符号链接

流程: 分区->格式化->检验(可选)->挂载(Linux特色)

查看UUID(全局唯一标识符): lsblk-f 或 blkid

分区流程: lsblk 或 blkid 查看分区->gdisk 或 fdisk 根据提示 *** 作

区块与扇区:区块针对 文件系统 而言,扇区针对 物理硬盘 而言

不要处理正在活动的分区 (已挂载的分区),linux将不能更新分区表

添加分区默认按序号给分区编号,且默认开始扇区从第一个未被占用的扇区开始。

功能:使用文件系统格式化软件格式化磁盘分区。

命令: mkfs.xfs mkfs.ext4 mkfs

3.1Linux 文件系统类型

不同的 *** 作系统使用不同类型的文件系统,为了与其他的 *** 作系统兼容,以相互交换数据,

通常,每种 *** 作系统都支持多种类型的文件系统。

Linux 中保存数据的磁盘分区通常采用EXT2/EXT3 文件系统,而实现虚拟存储的swap 分区

采用swap 文件系统,同时Linux 内核支持十多种不同的文件系统。

1. EXT2 和EXT3 文件系统

EXT(Extended File System,扩展文件系统)是专为Linux 设计的文件系统。在Linux 发展

早起,起到重要中用,但在稳定性、速度和兼容性方面存在缺陷。

EXT2 是为解决EXT 系统存在的缺陷而设计的可扩展、高性能的文件系统。

EXT3 是EXT2 的增强版本,在EXT2 的基础上,增加了文件系统的日志管理功能。

EXT3 文件系统具有的特点:

(1) 高效性:当系统因为异常断电或系统崩溃,重新启动时不需要检查文件系统的一致

性,只需要根据文件系统的日志,快速检测并恢复文件系统到正常状态。

(2) 数据的完整性:可以保持数据域文件系统状态的高度一致性,避免意外关机对文件

系统造成的破坏。

(3) 数据的存取速度更快:EXT3 文件系统的日志功能对磁盘驱动器的读/写进行优化,

使读/写系统的速度更快。

(4) 数据易于转换

2. swap 文件系统

用于Linux 的交换分区。在Linux 中,使用整个交换分区来提供虚拟内存。

3. VFAT 文件系统

VFAT 是Linux 对DOS、Windows 系统下的FAT 文件系统的统称。

4. NFS 文件系统

NFS 即网络文件系统,用在UNIX 或Linux 系统间通过网络进行文件共享。

5. SMB 文件系统

SMB 是Samba 的缩写,是另一种网络文件系统,用于在Windows 和Linux 系统之间共享文

件和打印机。

6. ISO9660 文件系统

CD-ROM使用的标准文件系统。

此外,Linux 支持的文件系统还有minix、msdos、ncpfs、hpfs、umsdos 等。

3.2 Linux 的目录和文件

1.Linux 系统的目录结构

Linux 文件系统由文件和目录组成,文件是专门用来存储数据的对象,目录是一种用来组织

文件和其他目录的容器。Linux 和DOS、Windows 系统一样,使用树形目录结构来组织和管

理文件。

1. / 文件系统的入口,最高一级目录;

2. /bin 基础系统所需要的命令位于此目录,是最小系统所需要的命令,如:ls, cp, mkdir等。

这个目录中的文件都是可执行的,一般的用户都可以使用。

3. /boot 包含Linux内核及系统引导程序所需要的文件,比如vmlinuz initrd.img文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;

4. /dev 设备驱动程序文件存储目录,比如声卡、磁盘等,是Linux文件系统的一个闪亮的特性-所有对象都是文件或目录。仔细观察这个目录你会发现hda1, hda2等,它们代表系统主硬盘的不同分区。

5. /etc 存放系统程序或者一般工具的配置文件。

如安装了apache2之后,配置文件在/etc/apache2/目录下。

/etc/init.d这个目录是用来存放系统或服务器以System V模式启动的脚本,这在以System V模式启动或初始化的系统中常见。

6. /home 普通用户默认存放目录Linux是多用户环境,所以每一个用户都有一个只有自己可以访问的目录(当然管理员也可以访问)。它们以/home/username的方式存在。这个目录也保存一些应用对于这个用户的配置,比如IRC, X等。

7. /lib 库文件存放目录这里包含了系统程序所需要的所有共享库文件,类似于Windows的共享库DLL文件。

8. /var 这个目录的内容是经常变动,因为存储的文件,如数据库,数据文件大小是在不断的增大。

/var/log这是用来存放系统日志的目录。

/var/www目录是定义Apache服务器站点存放目录;/var/lib用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地;

/var/log系统日志存放,分析日志要看这个目录的东西;

/var/spool打印机、邮件、代理服务器等假脱机目录;

9. /lost+found 在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。

Linux应该正确的关机。但有时你的系统也可能崩溃掉或突然断电使系统意外关机。那么启动的时候fsck将会进行长时间的文件系统检查。Fsck会检测并试图恢复所发现的'不正确的文件。被恢复的文件会放置在这个目录中。所恢复的文件也许并不完整或并不合理,但毕竟提供了一些恢复数据的机会。

10. /media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录 ;CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,类似cdrom的目录。这个只有在最新的发行套件上才有. 10. /mnt /mnt这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom等目录。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这里也是可以的。比如光驱可以挂载到/mnt/cdrom。

11. /opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过./configure --prefix=/opt/,将软件安装到opt目录。

这个目录包含所有默认系统安装之外的软件和添加的包。

12. /proc *** 作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。

这是系统中极为特殊的一个目录,实际上任何分区上都不存在这个目录。它实际是个实时的、驻留在内存中的文件系统。

13. /root Linux超级权限用户root的家目录;

14. /sbin 大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令;

这个目录和

/usr/sbin/usr/X11R6/sbin或/usr/local/sbin目录是相似的; 我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的。

15. /tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。

许多程序在这里建立lock文件和存储临时数据。有些系统会在启动或关机时清空此目录。

16. /usr 这个是系统存放程序的目录,比如命令、帮助文件等。

这个目录下有很多的文件和目录。

当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。

如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。

Linux之所以能在嵌人式系统领域取得如此辉煌的成绩,与其自身的优良特性是分不开的。与其他 *** 作系统相比,Linux具有以下一系列显著的特点。1.模块化程度高Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分;其独特的模块机制可根据用户的需要,实时地将某些模块插入或从内核中移走,使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。2.源码公开由于Linux系统的开发从一开始就与GNU项目紧密地结合起来,所以它的大多数组成部分都直接来自GNU项目。任何人、任何组织只要遵守GPL条款,就可以自由使用Linux 源代码,为用户提供了最大限度的自由度。这一点也正投嵌入式系统所好,因为嵌入式系统应用千差万别,设计者往往需要针对具体的应用对源码进行修改和优化,所以是否能获得源代码 对于嵌入式系统的开发是至关重要的。加之Linux的软件资源十分丰富,每种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。这一切就使设计者在其基础之上进行二次开发变得非常容易。另外,由于Linux源代码公开,也使用户不用担心有“后闸”等安全隐患。同时,源码开放给各教育机构提供极大的方便,从而也促进了Linux的学习、推广和应用。3.广泛的硬件支持Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多种体系结构的微处理器。目前已成功地移植到数十种硬件平台,几乎能运行在所有流行的处理器上。由于世界范围内有众多开发者在为Linux的扩充贡献力量,所以Linux有着异常丰富的驱动程序资源,支持各种主流硬件设各和最新的硬件技术,甚至可在没有存储管理单元MMU 的处理器上运行,这些都进一步促进了Linux在嵌入式系统中的应用。4.安全性及可靠性好内核高效稳定。Linux内核的高效和稳定已在各个领域内得到了大量事实的验证。Linux中大量网络管理、网络服务等方面的功能,可使用户很方便地建立高效稳定的防火墙、路由器、工作站、服务器等。为提高安全性,它还提供了大量的网络管理软件、网络分析软件和网络安全软件等。5.具有优秀的开发工具开发嵌入式系统的关键是需要有一套完善的开发和调试工具。传统的嵌入式开发调试工具是在线仿真器(In Circuit Emulator,ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。在线仿真器的价格非常高,而且只适合做非常底层的调试。如果使用的是嵌人式Linux,一旦软硬件能支持正常的串口功能,即使不用在线仿真器,也可以很好地进行开发和调试工作,从而节省了一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain),能够很方便地实现从 *** 作系统到应用软件各个级别的调试。6.有很好的网络支持利文件系统支持Linux从诞生之日起就与Internet密不可分,支持各种标准的Internet网络协议,并且很容易移植到嵌入式系统当中。目前,Linux几乎支持所有主流的网络硬件、网络协议和文件系统,因此它是NFS的一个很好的平台。另一方面,由于Linux有很好的文件系统支持(例如,它支持Ext2、FAT32、romfs等文件系统),是数据各份、同步和复制的良好平台,这些都为开发嵌入式系统应用打下了坚实的基础。7.与UNIX完全兼容目前,在Linux中所包含的工具和实用程序,可以完成UNIX的所有主要功能。但由于Linux不是为实时而设计的,因而这就成了Linux在实时系统中应用的最大遗憾。不过,目前有众多的自由软件爱好者正在为此进行不懈的努力,也取得了诸多成果


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8697243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存