Linux文件系统

目录

一、一些概念

二、硬链接与符号链接(命令ln)

三、磁盘分区、格式化、文件系统挂载和卸载、文件系统和目录容量查询

观察磁盘状态

磁盘分区

磁盘格式化

文件系统挂载和卸载

文件系统和目录容量查询


一、一些概念

linux最传统的磁盘文件系统(filesystem)使用的是 ext2

物理磁盘的文件名为/dev/sd[a-p]格式,第一块物理磁盘文件名/dev/sda。如果第一块磁盘进行分区,则分区文件名为/dev/sda[1-128]格式。

虚拟机的磁盘通常为/dev/vd[a-p]格式;如果是软件磁盘阵列,磁盘文件名为/dev/md[0-128]格式;如果是LVM。文件名则为/dev/VGNAME/LVNAME格式。

  • /dev/sd[a-p][1-128]:为物理磁盘的文件名
  • /dev/vd[a-p][1-128]:为虚拟磁盘的文件名

 磁盘分区完成之后还需要进行格式化,这样操作系统才能使用这个文件系统。格式化的原因:不同的操作系统所设置的文件属性、权限并不相同,因此需要将分区进行格式化成为操作系统能够利用的文件系统格式。例如,默认情况下,windows操作系统不支持linux的ext2文件系统。

一个可被挂载的数据为一个文件系统而不是一个分区。原因:在传统中,一个分区只能被格式化成一个文件系统,即一个文件系统就是一个硬盘分区;但是LVM和软件磁盘阵列(software raid)技术可以将一个分区格式化为多个文件系统(LVM),也能将多个分区合成一个文件系统(LVM,RAID)。

FAT文件系统经常需要碎片整理。原因:文件写入的区块太过于分散,此时文件系统读取的性能将会变的很差,这时可通过碎片整理将同一个文件所属的区块集合到一起,这样数据的读取会比较容易。

metadata元数据指的是超级区块、inode对照表、区块对照表。原因:这些区段的数据经常变动,每次新增、删除、编辑时都有可能会影响到这三个部分的数据,因此程为元数据。

挂载点一定是目录,该目录为进入文件系统的入口。挂载点的意义:每个文件系统都有独立的inode、区块、超级区块等信息,这个文件系统要链接到目录树才能被人们使用,将文件系统和目录树结合的操作称为“挂载”。

缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。缓冲(buffer)和缓存(cache)的区别:
缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。另外时常清一清缓存目录/tmp。
缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。

二、硬链接与符号链接(命令ln)

linux下面的链接文件有两种,一种是类似windows的快捷方式功能的文件,能快速链接到目标文件(或目录);另一种则是通过文件系统的inode链接来产生新文件名,而不是产生新文件。前者是符号链接,后者是硬链接。

硬链接只是在某个目录中新增一条文件名链接到某inode号码的关联记录而已,它既不会增加inode也不会消耗区块数量 即磁盘空间和inode数目都不会改变。如果你将任何一个文件名删除(不管是源文件还是硬链接文件),其实inode与区块都还是存在的,我们可以通过另一个文件名来读取正确的文件数据,这是硬链接最大的好处即安全。硬链接的缺点是:不能跨文件系统,不能链接目录。

符号链接就是建立一个独立的文件(不同的inode号码,会占用inode和区块),而这个文件会让数据的读取指向它链接的文件,当源文件被删除之后,符号链接的文件会打不开。软连接可以链接目录可以跨文件系统。

缺省,即不指定链接符号名字时候,硬链接/软连接都会自动创建和源文件一模一样的名字

注意,-f选项只对链接文件强制生效,并不对目录生效;如果要生效,则需要添加-n参数,将链接目录也看成文件,这样-f就可以生效,进行强制更改。如果不加-n参数,那么会认为是上面的缺省。


三、磁盘分区、格式化、文件系统挂载和卸载、文件系统和目录容量查询

操作系统增加一块硬盘时,需要如下操作:
1)对磁盘进行划分,以建立可用的磁盘分区
2)对磁盘分区进行格式化,以建立系统可用的文件系统
3)可选的,可对刚刚建立好的文件系统进行检验
4)在Linux系统上,需要建立挂载点(即目录),并将它挂载上去

查询磁盘状态

lsblk:【list block device】列出系统上的所有磁盘列表。
blkid:列出所有设备的UUID(全局唯一标识符)。
lsblk/blkid device_name 列出某一块设备的信息

parted:parted device_name print 列出某个磁盘的分区表类型(MBR/GPT)与分区信息。

磁盘分区

1)GPT分区表请使用gdisk分区,MBR分区表请使用fdisk分区。
2)因此,使用lsblk或者blkid先找到磁盘,再用 parted /dev/xxx print 来找出内部的分区表类型,之后采用gdisk或fdisk来操作系统。
3)格式:gdisk/fdisk device_name。所使用的设备文件名是全名,且不要加上数字,因为磁盘分区是针对整个磁盘设备而不是某个分区。
4)不管是gpt分区表还是mbr分区表,都可以使用parted进行分区,格式如下图

4)分区完成之后,分区表并没有更新(观察磁盘状态没有显示新分区),有两种方法来处理:一种是重启系统,另一种是通过partprobe -s 命令来更新内核分区表信息。

磁盘格式化

分区完成就要进行文件系统的格式化。格式化其实应该称为创建文件系统(make filesystem),所以使用的命令是mkfs。mkfs是一个综合命令,它会去调用正确的系统格式化工具软件。例如,我们需要将分区好的/dev/sdb1格式化为xfs文件系统,则运行mkfs.xfs /dev/sdb1即可。还有其他的文件系统,如mkfs.ext4、mkfs.ext2等,可以通过tab键显示出来。如果分区已经格式化一次,需要使用-f来强制格式化。

文件系统挂载和卸载

挂载点是目录,而这个目录是进入磁盘分区(其实是文件系统)的入口。挂载前需注意:
1)单一文件系统不应该呗重复挂载的不同的挂载点(目录)中
2)单一目录不应该重复挂载多个文件系统
3)要作为挂载点的目录,理论上应该都是空目录才行
如果不是空目录,挂载文件系统之后,原目录下面的文件会暂时的消失;等到文件系统被卸载之后,则原本的内容会再次出现。

mount命令实现挂载。格式如下:
mount  device_name  挂载点
例如  mount /dev/sdb1 /usr/local/mydata
mount UUID='  '   挂载点(推荐,UUID独一无二)
例如  mount  UUID='414d4c39-a26b-4607-b186-6830f9325862'   /usr/local/mydata

umount命令实现卸载。格式如下:
umount   device_name
例如  umount   /dev/sdb1
umount   挂载点(推荐,设备有可能被其他方式挂载)
umount   /usr/local/mydata

设置系统启动时挂载:/etc/fstab文件进行修改,里面的格式

设备文件名/UUID号挂载点文件系统文件系统参数dumpfsck


第四栏的文件系统参数可选的如下,第五和第六栏直接填0即可:

参数内容意义

async/sync

异步/同步

设置磁盘是否以异步方式运行,默认为async(性能较佳)

auto/noauto

自动/非自动

当执行mount -a时,此文件系统是否会被主动测试挂载,默认为auto

rw/ro

可擦写/只读

让该分区以可读写或只读的状态挂载上来

exec/noexec

可执行/不可执行

限制在此文件系统内是否可以进行【执行】的工作

user/nouser

允许/不允许用户挂载

是否允许用户使用mount命令来挂载

suid/nosuid

具有/不具有suid权限

该文件系统是否允许SUID存在?
defaults同时具有async、auto、rw、exec、nouser、suid、dev等参数,基本上,默认情况使用defaults设置即可

文件系统和目录容量查询

从上面可知系统真正可以使用的是挂载之后的文件系统,因此文件系统容量的查询即挂载点容量的查询,除了要查询文件系统磁盘占用的情况,还需要查询文件目录的容量查询。

df:列出文件系统的整体磁盘使用量
"""
注意:df和lsblk是不同的,前者查询的是文件系统的整体状态,后者查询的是物理磁盘的整体状态
在Linux系统中,如果df没有目录或文件选项,那么会默认将系统内所有文件系统都列出来;如果加了,只会显示所在的文件系统的信息
格式:df [-Thia] [目录或者文件名]
-T:列出磁盘分区的文件系统名称(例如xfs)
-h:以易读的GB、MB、KB等自动的显示出来磁盘容量
-i:显示inode数量
-a:列出所有的文件系统,因为默认不显示系统特有的文件系统
"""
du:查看文件系统的磁盘使用量(常用在查看目录或文件所占磁盘空间)
"""
格式:du [-sh] 文件或目录名称
-s:仅列出总量,而不列出每个目录占用总量
-h:同上作用,以人类可读取的单位显示
如果要查看某一目录下面第一级的目录大小,可以du -sh 目录名称*,例如du -sh /*查看根目录下面各个文件的容量大小
"""

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值