当前位置: 首页 > 科技观察

Linux系统中,文件系统和RPM的详解,新手可以收藏学学

时间:2023-03-15 20:59:46 科技观察

我们知道Linux中的一切都是文件,硬盘和分区的设备文件,各种串口和U盘在Linux中。是一个文件。Root/在Linux中只代表一个层次,其他目录都是root/的子目录。要在Linux中使用Mount和umount文件系统硬盘,必须对其进行分区,然后进行格式化。我认为所有操作系统在这一点上应该是一致的。分区格式化后,我们就可以放置自己的或者系统的软件文件了。任何硬盘分区的文件系统只有挂载后才能使用,并且有一定的顺序。在挂载其他文件系统到/的某个目录之前,我们必须先挂载和挂载根/目录。在一章中,我将其称为挂载点。所以并不一定因为在/下就一定在同一个分区下。如果一个目录作为另一个文件系统挂载,则在卸载挂载的文件系统之前,将无法访问其先前的内容。除了硬盘分区,我们还可以挂载网络文件系统,如nfs、smb等,还有光驱和软盘等。分区和文件系统类型:我们知道Windows使用的是FAT或NTFS文件系统。在Linux中,它是ext2和ext3。我想大家都知道,磁盘的物理结构就是一些磁道,扇区之类的。文件系统的出现当然是为了更好的管理文件。我认为,文件系统的主要特点是它的逻辑结构。FAT、NTFS或者ext2都是这样,只是每个人的定义总是有点不一样,让大家很是头疼。未来不知道哪个人才能够创造出让微软等Unix厂商信服,称霸世界的文件系统。先简单说一下ext2的逻辑结构:Superblock是分区的第一个块,比如文件系统的大小,起始扇区的地址等重要信息都存储在这里。如果损坏,整个分区将无用。块组其实每个ext2分区都会被分成若干个块组,每个组都有自己的superblock/groupdescription/blockbitmap/inodebitmap/inodetable/datablocksGroupDescription块组描述信息块位图对应所有块的使用情况inode位图对应所有inode的使用状态。inode表类似于我们之前学习的文件分配表。文件的各种属性都会放在这里,具体的内容会放在Block区。同时inode中也会有文件的地址信息,以便找到文件。Blockareasector扇区中2的n次方是文件系统的最小读写单元。当然,在合理的范围内,大小越大读写越快,但是对于小文件来说是浪费空间。要点:1.Superblock、blockbitmap、inodebitmap是metadata2。格式化ext2分区时,inode表和块区的大小是确定的,格式化后不能改变。一般每4kb分配一个inode,每个inode的大小为128b,块大小一般为1024/2048/4096等。3、inode表的大小决定了可以存储多少文件。4.inode不存储文件名,文件名和对应的inode信息存储在目录的块区。综上所述,我们需要编辑/etc/passwd下的一个文件。Linux的基本操作应该大致如下:1.根据/etc的块区信息找到对应的/etc目录的inode信息2.使用/etc的inode在inode表中找到对应的/etc项,找到对应的/etc目录块区,找到/etc/passwd3的inode信息,然后根据/etc/passwd的inode信息在inode表中找到对应的项,这样我们就找到了块区地址这个文件。4.根据地址读取文件一目了然。其实文件系统的实现原理基本是一样的。了解了FAT的文件分区表之后,再了解inode表也就很容易了。Ext3只是ext2的增强,添加了日记功能。当然写入的时候会慢一些,但是恢复的时候会快很多,而且会增加文件系统的稳定性。Linux支持的主要文件系统:?Linux的VFS(VirtualFilesystemSwitch)Linux内核通过这个VFS来管理和读取其他文件系统。这样其他应用程序就可以在不知道各种文件系统的访问方式的情况下读取不同文件系统中的文件,因为VFS已经帮我们做好了。对于软件开发者来说,这确实是一件了不起的事情。?传统文件系统ext2/minix/MS-DOS/FAT/iso9660?日志文件系统ext3/ReiserFS/NTFS/JFS/XFS?网络文件系统NFS/SMBFS好吧,让我们谈谈分区和构建文件系统:使用fdisk创建apartition:$fdisk–l#可以列出所有设备$fdiskdevicename#管理指定设备的分区,device就是进入fdisk后的整个硬盘,我想如果你有在DOS下使用fdisk的经验,就很容易了掌握Linuxfdisk的使用。更改分区后,您应该重新启动才能对新分区进行操作。使用mke2fs创建文件系统:$mke2fsdevicename#这里是分区,可以使用参数-b指定块大小,可以使用参数-j创建ext3文件系统等...详解,请参考man手册Swappartitionandswapfile我们在windows95的时候就知道了,除了虚拟内存的概念,在linux的世界里也是一样。要在Linux中实现虚拟内存,可以使用特殊分区或交换文件。通常,我们创建的交换空间是内存的两倍。交换分区:1.fdisk创建一个新分区并将其分区ID设置为82。2.mkswapdevicename刚才的分区3.swapondevicename启动虚拟内存交换文件:1.创建交换文件,如ddif=/dev/zeroof=/tmp/myswapbs=4kcoung=16382会创建a64kFile/tmp/swap2,mkswapfilename把文件改成swap格式3,swaponfilename启动这个文件的虚拟内存LVM和RAID如果要创建一个可扩展的文件系统,必须使用LVM的volume概念.如果使用partitionmagic等工具调整分区大小,最多不能超过硬盘的大小。接下来说一下文件系统中的具体文件。Linux中有以下几种文件类型:使用ls-l命令可以知道文件类型。Linux中有以下7种文件类型:directoryd普通文件-字符设备cblock设备b本地socketsfamouspipepLinks(类似Windows快捷方式)下面详细说明文件的属性信息(存放在inode)当用户被授权时。相对路径(relative)和绝对路径(absolute):以根目录/开头的路径为绝对路径,以其他路径开头的路径为相对路径,即相对于当前路径,相对路径变为绝对路径和pwd命令将被添加返回当前路径。目录树:FHS(FilesystemHierarchyStandard)是一个规范,很多Linux厂商都开始效仿。但是FHS很笼统,只规定了二级目录的规范。一个是根目录/下的主目录,应该放什么文件。比如/etc应该放置各种配置文件,而/bin和/sbin应该放置可执行文件等。第二层主要是/usr和/var做进一步的目录定义。下面我就大致说一下Linux中各个目录的作用。/根目录/,一般建议根目录下只放目录,尽量不要直接放文件。/是首先挂载的文件系统。/boot前面已经提到过,用来放置内核和bootloader文件。主要用于启动。/dev设备文件都在这个目录下,硬盘,分区,键盘,鼠标,USB,tty等等。/bin最小系统可操作性所需的执行文件。/etc配置文件集中。/home用户的家。/libC库和C编译器。/sbin系统管理所需的一些命令。包括引导,修复等命令,我觉得是systemadminbin的意思。/tmp临时文件目录。每次重启都会被系统自动删除。/usr次要文件和命令。FHS定义的二级目录类似于windows中的程序文??件。?/usr/bin,/usr/sbin:用户和系统管理员的大部分命令?/usr/include:c/c++等程序的头文件?/usr/lib:应用软件使用的库?/usr/local:软件由用户安装?/usr/share:共享文件目录?/usr/share/doc:应用软件文档?/usr/share/man:手册页?/usr/src:Linux源代码?/usr/X11R6:Xwindow等的执行文件。/var是FHS定义的二级目录。主要放一些应用程序特有的数据和配置文件。例如,named/var/named放置区域文件。当然一般的日志文件也在这个目录下。?/var/cache:系统缓存?/var/lib:执行库?/var/log:日志?/var/lock:锁?/var/run:进程pid?/var/spool:queue目录,包括邮件,打印和cron计划。/mnt/media挂载点,比如CDROM一般在/mnt/cdrom/opt类似/usr/local,当应用软件安装点/lost+found系统异常时,会在inode表中找不到孤儿放在这里,一般由fcsk命令生成,会在每个分区的最上层目录,比如/boot是一个单独的分区,/boot/lost+found/下会有一些服务使用的文件srv,比如www/rootroot的home/proc制作虚拟目录,主要是内核等信息,比如:/proc/cpuinfo,/proc/dma,/proc/interrupts,/proc/ioports,/proc/net,ETC。不能单独分区的目录:因为Linux启动时通常只挂载/,所以启动所需的文件不能单独分区。如/etc、/bin、/sbin、/dev、/lib等。建议单独分区目录:/home、/usr、/var、/tmp。这些目录可以根据需要进行扩展,单独分区便于管理。