Linux基础——文件系统

文件系统是什么?

文件系统是Linux中用于管理文件的工具,有Ext2、Ext3、Ext4、xfs等

硬盘与分割方式

硬盘是是圆形的可用于记录资料的物理设备,利用硬盘的转动和机器手臂的移动读取指定的资料

硬盘的最小记录单位为磁区(大小为512b或4k),连续磁区构成的圆称为磁柱

  • MBR分割以磁柱为单位,每个磁柱的第一个磁区(512b)记录了开机程序(446b)及分割表(64b),物理分割只能分割4个分割槽地址(64/4=16b),若要超过4个则需对地址进一步逻辑分割(利用额外的磁区记录逻辑分割表)

  • GPT分割以磁区(4k)为单位,使用34个LBA(每个512b)来记录分割信息,LBA0存储开机程序和GPT标志,LBA1存储分割表信息、备份地址、校验码,LBA2-33记录实际的分割槽地址

文件系统

在以前一个分割槽只能够被格式化成为一个文件系统,现如今一个可被挂载的资料即可称为一个文件系统,文件系统大致可分为以下几个关键部分:

  • block:记录文件内容,一个文件可以有多个block(大小可能为1k、2k、4k)
  • inode:记录文件的属性及文件内容所在的block地址,一个文件仅有一个inode(大小可能为128b或256b)
  • supeblock:记录文件系统的整体信息,包括inode/block的容量、使用/剩余量等
  • inode bitmap :记录inode使用与未使用的地址
  • block bitmap:记录block使用与未使用的地址

但对目录来说,block则是记录目录中的文件名及该文件对应的inode地址,故针对文件名的操作(新建/删除文件、修改文件名)需要目录的w权限

查看inode地址可用命令 ls -li,如下可看到space1目录的inode地址为4720547,占用一个4k的block

在这里插入图片描述

读取过程

如上图,若要读取1.txt的文件

  • 首先通过mysapce的inode地址2100918,判断目录是否有r和x权限,若有则从inode中获取myspace的block地址
  • 然后通过myspace的block地址中获取1.txt的inode地址2100919,判断文件是否有r权限,若有则找到1.txt的block地址
  • 最后通过1.txt的block地址读取文件内容

写入过程

如上图,若要创建2.txt

  • 首先通过mysapce的inode地址2100918,判断用户对目录是否有w和x权限
  • 若有,则从inode bitmap中找到未使用的inode地址,将2.txt的属性写入
  • 然后从block bitmap中找到未使用的block地址,将内容写入block,更新inode中的block指向
  • 最后更新 inode bitmap、block bitmap、supeblock

查看supeblock

命令 dumpe2fs 可列出设备supeblock中的各种信息
在这里插入图片描述

查看Linux支持的文件系统

Linux用VFS(Virual Filesystem Swtich)来管理各个文件系统,如下可查看当前内核版本支持的文件系统
在这里插入图片描述
如下可查看当前已载入到内存中的文件系统
在这里插入图片描述

操作文件系统

查看容量

df

命令 df 列出文件系统的整体硬盘使用量,-a 显示所有文件系统,-k 以KBtye为单位,-m 以MByte为单位,-h 自行指定单位,-H 以1000为进制显示,-T 分割内的文件系统一起显示,-i 不显示容量而显示inode数量
在这里插入图片描述

du

命令 du 列出文件的硬盘使用量,-a 显示所有文件和目录大小(不加参数只显示目录),-h 自行指定单位,-s 只列出总量,而不列出各个目录,-S不包括子目录下的总量,-k 以KBtye为单位,-m 以MByte为单位
在这里插入图片描述

建立软硬链接

ln

命令 ln 创建硬链接,Linux系统允许多个文件名指向同一个inode地址,在同一个文件系统中有相同inode地址的文件为同一文件,如下由1.txt建立硬链接2.txt,具有相同的inode且链接数+1
在这里插入图片描述
但在不同文件系统,即使有相同inode地址也不是同一文件,如下 / 和 /dev 的inode地址均为2但不是同一文件(文件大小、链接数也不一样)
在这里插入图片描述
每次新建一个目录,新目录link数为2(myspace/space1和myspace/space1/.),上层目录link数加一(myspace/space1/. .)
在这里插入图片描述
硬链接不可跨文件系统建立,除此之外硬链接也不能用于目录,如下举两个反例

  • 假如针对AParent/A/1.txt的目录A,创建硬链接到目录B,形成B/A/1.txt,则A/. .该是AParent还是B?
  • 假如A/B/1.txt的目录B是E/F/G/2.txt中E的硬链接,而G是A的硬链接,就会造成循环引用A/E/F/A/E/F…

ln -s

命令 ln -s 建立软链接,实际就是建立一个新文件,读取时会跳转到其所指向的文件,若源文件被删除,则链接文件会无法使用,链接文件的大小取决于源文件的文件名
在这里插入图片描述

查看当前设备

lsblk

命令 lsblk 可列出当前系统的存储装置,-d 仅列出硬盘不列出分割信息,-f 同时列出硬盘内的文件系统,-i 使用线段输出,-m 同时列出在/dev下权限,-p 列出完整路径,-t 列出详细资料
在这里插入图片描述
MAJ:MIN表示主要:次要装置,RM表示是否可卸载(如光盘),RO表示是否只读,TYPE表示类型(硬盘disk、分割槽partition、只读存储rom,虚拟设备loop)

blkid

命令 blkid 可列出装置的UUID,其是装置的唯一标识码
在这里插入图片描述

parted /dev/xxx print

命令 parted 可列出硬盘的分割类型,model为厂商,disk为容量,sector size为每个磁区大小,Partition Table为分割表类型,下面则是分割信息
在这里插入图片描述

硬盘分割

gdisk

命令 gdisk 用于分割GPT类型的磁盘(下面只有MBR),输入?可提示命令参数,输入n可新增分割槽,设置分割槽的开始和结束地址,最后通过w保存分割信息,分割完后通过命令partprobe -s更新或重启
在这里插入图片描述

fdisk

命令 fdisk 用于分割MBR,输入m可提示命令参数,用法基本同上
在这里插入图片描述

parted

命令 parted 可用于分割多种文件系统,参数mkpart新增分割,print打印分割信息,rm删除分割

  • 如将 /dev/sda 转为gpt文件系统使用命令 parted /dev/sda mklabel gpt
  • 如需要在 /dev/sda中新增一个512MB主分割再格式化成fat32,可用命令 parted /dev/vda mkpart primary fat32 36.0GB 36.5GB

文件系统格式化

分割完后需要对文件系统进行格式化,mkfs.xfs格式化成xfs文件系统,mkfs.ext4格式化成ext4文件系统,按下tab可查看支持的类型
在这里插入图片描述

文件系统恢复

当系统运行时遇到突然断电等意外情况导致内存和硬盘的资料不一致,需要对文件系统进行恢复,可用命令 xfs_repair恢复xfs文件系统,fsck.ext4恢复ext4文件系统

设备挂载与卸载

每个文件系统都有独立的inode、block等信息,文件系统要连接到目录树才能被用户使用,这个连接过程即称为挂载,挂载点一定是目录

  • 一个文件系统不应该被重复挂载到多个目录
  • 一个目录不应该挂载多个文系统
  • 挂载点应该是空目录,否则会导致原目录下文件消失

mount

命令 mount 可用于挂载设备,-a表示将/etc/fstab内未挂载的硬盘都挂载上来,-l 表示输出时增加Lable(不加参数只显示当前挂载资源),-t 可指定文件系统,-o 后面可指定额外的参数(如remount、rw、auto表示可自动挂载)
在这里插入图片描述
如上重新挂载根目录(根目录不可卸载,可重新挂载修改相关设置)

如下演示挂载光盘,首先lsblk -p查看光盘设备/dev/sr0,此时是未挂载的状态(无mountpoint)
在这里插入图片描述
然后调用blkid获取其UUID
在这里插入图片描述
根据UUID挂载,如下将其挂载到桌面(报错是因为mount默认是rw,而此光盘是ro),这样我们就可以读取光盘内容了
在这里插入图片描述
再查看/dev/sr0时可看到其挂载点
在这里插入图片描述
通过命令mount可查看当前已挂载的设备及其属性,ro表示只读,编码为utf8
在这里插入图片描述
除了根据UUID挂载外,还可直接根据设备目录挂载到指定位置
在这里插入图片描述

umount

命令 umount 可用于卸载设备,-f 强制卸载,-l 立刻卸载,卸载可根据挂载点或装置目录卸载,但后者会导致别的挂载点也失效
在这里插入图片描述

开机自动挂载

修改/etc/fstab可以让系统开机时自动挂载设备,需要填入的信息有

  • file system:可填设备名、UUID、LABEL
  • mount point:挂载点
  • type:文件系统类型
  • options:文件系统参数,即调用mount时()里的参数,如rw/ro、async/sync
  • dump:能否被dump指令备份
  • pass:是否通过fsck检查硬盘

在这里插入图片描述

修改文件系统属性

mknod

命令 mknod 可新建一个设备,-b 存储设备,-c 输入设备,-p 管道设备,建立时需指定Major和Minor,如下新建sd2,删除的话直接调用rm
在这里插入图片描述

xfs_admin

命令 xfs_admin 可修改xfs文件系统中设备的Label或UUID,-l -u 列出两者,-L -U修改两者

tune2fs

命令 tune2fs 可修改ext4文件系统中设备的Label或UUID,-l 读取superblock,-L -U同上

Swap建立

使用分割槽建立

通过 gdisk 分割出用于Swap的分割槽,利用命令 mkswap 将分割槽格式化成 swap 文件系统,命令 swapon 启动swap,最后可通过free和swapon -s 输出swap的使用情况

使用文件建立

通过 dd 命令新建128M的空的大文件,利用inputfile=/dev/zero一直输出0写到outputfile=/tmp/swap,bs表示block大小,count则是block数量
在这里插入图片描述
通过命令 mkswap 将其格式化成swap文件系统
在这里插入图片描述
通过 swapon 启动swap,可看到其总空间增加,如要关掉swap使用命令 swapoff
在这里插入图片描述
通过 swapon -s 可列举出当前的swap文件
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值