加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

在Linux系统,文件系统和RPM的详细讲解,初学者可以收藏学习一下

发布时间:2018-10-18 14:29:04 所属栏目:外闻 来源:今日头条
导读:副标题#e# 【51CTO技术沙龙】10月27日,让我们共同探索AI场景化应用实现之道 我们知道在Linux之中一切皆文件,好像硬盘和分区的设备文件,各种串口并口以及USB在Linux之中都是一个文件。 根/ 在Linux之中只表现单一的层次结构,所有的其他目录都是根/的子目
副标题[/!--empirenews.page--] 【51CTO技术沙龙】10月27日,让我们共同探索AI场景化应用实现之道

我们知道在Linux之中一切皆文件,好像硬盘和分区的设备文件,各种串口并口以及USB在Linux之中都是一个文件。

根/

在Linux之中只表现单一的层次结构,所有的其他目录都是根/的子目录。

在Linux系统,文件系统和RPM的详细讲解,初学者可以收藏学习一下

Mount和umount文件系统

硬盘要在Linux之中使用,必须要分区,然后格式化,我想这一点所有的操作系统应该都一致的。分区格式化之后就可以摆放我们自己或者系统软件的文件了。任何硬盘分区的文件系统只有mount接挂之后才可以被使用,而且是有一定先后顺序的,我们必须先mount接挂根/目录,才能接挂其它的文件系统到/的某个目录下,第一章之中我把它叫做接挂点(mount point)。所以不是因为同在/下就一定在同一分区下。如果某个目录被挂接成另外的文件系统,那么它以前的内容将不可访问,直到被接挂的文件系统被umount。除了硬盘分区之外,我们也可以mount网络文件系统,比如nfs,smb等,以及CDROM和软盘等等。

分区和文件系统类型:

我们知道windows使用的是FAT或者NTFS文件系统。而在Linux里则是ext2和ext3。我想大家知道磁盘的物理结构就是一些磁道,扇区之类了。文件系统的出现当然是为了更好的管理文件,文件系统的主要特征,我想是它的逻辑结构。FAT,NTFS或者ext2都是这样,不过大家的定义总是有一些不同,搞的大家很麻烦。以后不知哪个牛人可以创建一个让微软和其他unix厂商都信服的文件系统呢,一统江湖。

我大致说说ext2的逻辑结构:

Superblock 是分区的第一个Block,比如文件系统的大小,起始扇区地址,以及其他一些重要信息存放于此。如果损坏,整个分区将回天乏术了。

Block group 实际每个ext2分区后都会分成几个block group的,每个group之中都有自己的

  1. superblock / group description / block bitmap / inode bitmap / inode table / data blocks 

Group Description Block group的说明信息

Block bitmap 对应所有Block的使用状况

Inode bitmap 对应所有inode的使用状况

Inode table 类似于以前我们学的文件分配表,文件的各种属性将放于此,而具体内容将放于Block区。同时在inode之中也会有文件的地址信息,从而找到文件。

Block area sector扇区的2的n次方,是文件系统最小的读写单位。当然在合理范围内越大读写相对越快,不过对于小文件浪费空间。

要点:

1、 Superblock,block bitmap,inode bitmap就是metadata

2、 格式化ext2分区的时候决定了inode table和block area的大小,而且格式化之后再不可改变。一般为每4kb分配一个inode,每个inode的大小是128b,block size一般大小是1024/2048/4096等。

3、 Inode table的大小决定了能够存放文件的多少。

4、 Inode并不存放文件名称,文件名称和相应的inode信息存放于目录的block area之中。

做个总结,我们需要编辑/etc/passwd下的一个文件,Linux的基本操作应该大致是这样:

1、 根据/的block area信息找到对应的/etc目录的inode信息

2、 再用/etc的inode信息在inode table之中找到对应/etc项,找到对应的/etc的目录block area区域,找到/etc/passwd的inode信息

3、 再到inode table之中根据/etc/passwd的inode信息找到对应项,这样我们就找到了这个文件的block area地址了。

4、 根据地址读出文件

清楚了吧,其实文件系统的实现原理也基本一样,理解了FAT的文件分区表,也很好理解这个inode table的。

ext3只是ext2的加强,增加了日志功能(journaling)。当然写的时候会慢些,不过恢复的时候会快很多,而且增加了文件系统的稳定性。

Linux所支持的主要的文件系统:

• Linux的VFS (Virtual Filesystem Switch)

Linux的内核通过这个VFS来管理和读取其他文件系统的。这样的话,其他的应用并不需要知道各种文件系统的存取模式就可以读取不同文件系统之中的文件了,因为所有这些,VFS已经为我们做了。对于软件开发商来说这的确是一件大好事。

• 传统文件系统

  1. ext2 / minix / MS-DOS / FAT / iso9660 

• 日志型文件系统

  1. ext3 / ReiserFS / NTFS / JFS / XFS 

• 网络型文件系统

  1. NFS / SMBFS 

好了,接下来说一说分区和建立文件系统:

使用fdisk建立分区:

$fdisk –l #可以列出所有设备

$fdisk devicename #管理指定设备的分区,device是整个硬盘

进入fdisk之后我想大有DOS的fdisk使用经验的话,很容易掌握Linux下的fdisk的使用。改变分区之后,应该要重新启动,才可对新的分区进行操作。

使用mke2fs建立文件系统:

$mke2fs devicename #这里是分区

可以使用参数-b指定block size

可以使用参数-j创建ext3文件系统

等等…详细请察看man手册

Swap分区和swap文件

在windows95的时候我们就知道了有虚拟内存的概念,Linux世界也是一样,在Linux之中实现虚拟内存可以使用专门的分区,也可以使用swap文件来实现。

一般我们建立我们内存2倍大的swap。

swap分区:

1、 fdisk建立一个新的分区,并将其partition ID设为82。

2、 mkswap devicename 刚才的那个分区

3、 swapon devicename 来启动虚拟内存

swap文件:

1、 建立swap文件,比如dd if=/dev/zero of=/tmp/myswap bs=4k coung=16382会创建一个64k的文件/tmp/swap

2、 mkswap filename将文件变成swap格式

3、 swapon filename来启动这个文件的虚拟内存

LVM和RAID我打算以后找个篇幅专门说说,也有待我再研究。

如果希望可以建立一个可以扩充的文件系统,就必须要使用LVM的有关卷的概念,如果使用partition magic之类的工具调整分区大小,最多也不能超过该硬盘的大小。

接下来说说文件系统之中的具体的文件。

在Linux之中有以下的文件类型:

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读