Linux_007.文件系统

本文介绍了Linux系统中挂载和文件系统相关知识。Linux将资源抽象为文件,可通过读写文件操作设备。文中提及常用分区,如根分区、交换分区等,还阐述了UNIX权限模型各层作用,包括硬盘驱动、通用块设备层等,最后说明了挂载概念及不同文件系统类型。

参考:https://www.cnblogs.com/alantu2018/p/8461749.html

Linux中把一切资源抽象为文件,包括硬件设备,这样就可以通过读写文件完成对设备的操作。举例来说,SATA接口的硬盘的文件名即为/dev/sd[a-d],其中括号内的字母为a-d当中的任意一个,亦即有/dev/sda、/dev/sdb、/dev/sdc、/dev/sdd这四个文件的意思。几乎所有的硬件设备文件都在/dev这个目录内,所有你会看到/dev/sda、/dev/sr0等的文件名。文件类型为'c',即设备文件里面的串行端口设备。下面列出几个常用的设备在linux中的文件名:

必须分区

  • /(根分区)
    根分区是linux系统第一级目录, 因为是必须要有根分区
  • swap分区(交换分区,内存2倍,不超过2GB)
    swap(交换分区)相当于虚拟内存,当电脑真实内存不够用时,将会使用swap分区来当做内存来用,一般是电脑内存的2倍。但是如今硬件发展,内存动辄4G,8G,16G,但是实际上swap根本不需要这么大,所以一般情况下不要超过2GB  Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。

推荐分区

  • /boot(启动分区,200MB即可)
    包含了操作系统的内核和在启动系统过程中所用到的文件,如果该分区不创建,系统会默认把启动分区放在根目录下。

 

 

 


 

                                                                   UNIX 权限模型

 1. 硬盘驱动

  常见的硬盘类型有PATA, SATA和AHCI等,在Linux系统中,对不同硬盘所提供的驱动模块一般都存放在内核目录树drivers/ata中,而对于一般通用的硬盘驱动,也许会直接被编译到内核中,而不会以模块的方式出现,可以通过查看/boot/config-xxx.xxx文件来确认:
 

#输出内核版本
uname -v
#或
cat /proc/version
  

CONFIG_SATA_AHCI=y



  2. General Block Device Layer

  这一层的作用,正是解答了上面提出的第一个问题,不同的硬盘驱动,会提供不同的IO接口,内核认为这种杂乱的接口,不利于管理,需要把这些接口抽象一下,形成一个统一的对外接口,这样,不管你是什么硬盘,什么驱动,对外而言,它们所提供的IO接口没什么区别,都一视同仁的被看作块设备来处理。

所以,如果在一层做的任何修改,将会直接影响到所有文件系统,不管是ext3,ext4还是其它文件系统,只要在这一层次做了某种修改,对它们都会产生影响。

 


  3. 文件系统

  文件系统这一层相信大家都再熟悉不过了,目前大多Linux发行版本默认使用的文件系统一般是ext4,另外,新一代的btrfs也呼之欲出,不管什么样的文件系统,都是由一系列的mkfs.xxx命令来创建,如:

mkfs.ext4 /dev/sda
mkfs.btrfs /dev/sdb


  内核所支持的文件系统类型,可以通过内核目录树 fs 目录(/proc/fs)中的内容来查看。

 

linux支持的文件系统

 



  4. 虚拟文件系统(VFS)

    Virtual File System这一层,正是用来解决上面提出的第二个问题,试想,当我们通过mkfs.xxx系列命令创建了很多不同的文件系统,但这些文件系统都有各自的API接口,而用户想要的是,不管你是什么API,他们只关心mount/umount,或open/close等操作。
    所以,VFS就把这些不同的文件系统做一个抽象,提供统一的API访问接口,这样,用户空间就不用关心不同文件系统中不一样的API了。VFS所提供的这些统一的API,再经过System Call包装一下,用户空间就可以经过SCI的系统调用来操作不同的文件系统。

  VFS所提供的常用API有:

  mount(), umount() …

  open(),close() …

  mkdir() …

     和文件系统关系最密切的就是存储介质,存储介质大致有RAM,ROM,磁盘磁带,闪存等。

     闪存(Flash Memory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位(注意:NOR Flash 为字节存储。),区块大小一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新速度快。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本输入输出程序)、PDA(个人数字助理)、数码相机中保存资料等。
     外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多。内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。
     RAM又分为动态的和静态。。静态被用作cache,动态的常用作内存。。网上说闪存不能代替DRAM是因为闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代RAM。这个以后可以了解下硬件的知识再来辨别.

 


挂载

Linux中的挂载点(相当于windows中的C盘、D盘)不是盘符,叫做目录

挂载:把目录分配给分区

inux中任何一个文件都可以作为挂载点,比如根目录下有/boot,/home等目录,如果把/boot和/home都作为挂载点,那么在linux系统中,呈现的效果是/boot和/home都是/的子目录,但是实际上在硬盘中,他们三个分别代表着一个分区 

 

 

#挂载光盘

#创建挂载点
mkdir /mnt/cdrom/
#挂载光盘
mount -t iso9660 /dev/cdrom /mnt/cdrom/

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

#挂载U盘

#找到U盘的文件名
fdisk -l

/dev/sdb1 1 11907 7834608 b W95 FAT32


#创建挂载点
mkdir /mnt/usb
#挂载
mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/


#查看一下Linux默认的编码格式
echo $LANG

===========================================================
#卸载
unmount 设备文件名或挂载点

 


 

         Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。
  不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值