Linux磁盘与文件系统管理

本文详细介绍了Linux磁盘的组成与分区,包括MBR和GPT分区表、磁盘文件名等内容。深入讨论了Linux的ext2文件系统,讲解了inode、超级区块和数据区块的作用。同时,阐述了文件系统的挂载与卸载,以及磁盘容量的检查、硬链接和符号链接的使用。最后,介绍了如何创建内存交换分区。
摘要由CSDN通过智能技术生成
  • 文件系统建立在磁盘上
  • ext2、ext3、ext4和xfs
  • inode、数据区块(block)和超级区块(superblock)

磁盘组成与分区

整块磁盘组成

  • 圆形碟片(主要记录数据的部分)
  • 机械手臂,与机械手臂上的磁头(擦写磁片上的数据)
  • 主轴马达,用于转动碟片,让机械手臂的磁头在碟片上读写数据

碟片物理组成

  • 扇区(Sector):最小物理存储单位,依据磁盘设计的不同,目前主要有512B与4KB两种格式
  • 柱面:扇区组成的一个圆
  • 现在的分区通常使用扇区为最小分区单位,每个扇区都有其号码(早期分区以柱面为最小分区单位)
  • 磁盘分区表主要有两种格式:1. 限制较多的MBR分区表。2. 较新且限制较少的GPT分区表
  • MBR分区表:第一个扇区最重要,其包括:主引导记录(Master boot record,MBR)及分区表(partition table),其中MBR占446B,分区表占64B
  • GPT分区表除了分区数量扩充较多,支持的磁盘容量也可超过2TB

磁盘文件名

  • 所有的物理磁盘文件名都被模拟成/dev/sd[a-p]的格式,第一块磁盘文件名为/dev/sda
  • 分区的文件名若以第一块磁盘为例,则为/dev/sda[1-128]
  • 通常虚拟机的磁盘文件名也被命名为/dev/vd[a-p]
  • 若使用到软件磁盘阵列,可能文件名还有/dev/md[0-128],使用LVM时,文件名则为/dev/VGNAME/LVNAME

文件系统特性

  • 磁盘分区完还需要进行格式化(format),之后操作系统才能够使用这个文件系统。
  • Why格式化?因为每种操作系统所设置的文件属性、权限并不相同,为了存放这些文件所需数据,因此就需要将分区格式化,以成为操作系统能够利用的文件系统格式(filesystem)
  • 每种操作系统能够使用的文件系统并不相同。 win98(FAT或FAT16),Windows 2000及以后(NTFS),Linux(ext2)
  • 传统磁盘与文件系统,一个分区只能被格式化成为一个文件系统,因此认为一个文件系统就是一个硬盘分区
  • 新技术利用,LVM和磁盘阵列,可以将一个分区格式化为多个文件系统,也能够将多个分区合成一个文件系统。
  • 一个可被挂载的数据为一个文件系统而不是一个分区。
  • 较新的操作系统的文件除了文件实际内容之外,通常含有非常多的属性,如文件权限(rwx)与文件属性(拥有者、用户组、时间参数等)
  • 文件系统通常将这两部分数据分别存放在不同的区块,权限与属性放置到inode中,至于实际数据则放置到数据区块中
  • 超级区块(superblock):记录整个文件系统的整体信息,包括inode与数据区块的总量、使用量、剩余量,以及文件系统的格式和相关信息等
  • inode:记录文件属性,一个文件占用一个inode,同时记录此文件的数据所在的区块号码
  • 数据区块:实际记录文件的内容,若文件太大,会占用多个区块。

Linux的ext2文件系统(inode)

  • 文件系统一开始就将inode与数据区块规划好了,除非重新格式化(或利用resize2fs等命令修改其大小),否则inode与数据区块固定后就不在变动
  • ext2文件系统格式化的时候基本上是区分为多个区块群组(block group),每个区块群组都有独立的inode、数据区块、超级区块系统。
  • 在整体规划当中,文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装启动引导程序。
  • ext2文件系统支持数据区块大小有1K、2K和4K三种,数据区块大小的差异,会导致该文件系统能够支持的最大磁盘容量与最大单一文件容量并不相同
Block大小 1K 2K 4K
最大单一文件限制 16GB 256GB 2TB
最大文件系统总容量 2TB 8TB 16TB

ext2文件系统区块限制:

  1. 原则上,区块的大小与数量在格式化完就不能够再修改
  2. 每个区块内最多只能够放置一个文件的数据
  3. 如果文件大于区块的大小,则一个文件会占用多个区块数量
  4. 如果文件小于区块,则该区块的剩余容量就不能再被使用

inode table

inode的内容记录文件的属性以及该文件实际数据放置在哪几个区块内。基本上,inode记录的数据至少有:

  • 该文件的读写属性(r 、 w、 x)
  • 该文件的拥有者和用户组
  • 该文件的大小
  • 该文件的建立或状态改变时间(ctime)
  • 最近一次的读取时间(atime)
  • 最近修改时间(mtime)
  • 定义文件特性的标识(flag)
  • 该文件真正内容的指向

inode的数量和大小也是在格式化时就已固定:

  • 每个inode大小均固定为128B(ext4和xfs可设置为256B)
  • 每个文件都仅会占用一个inode
  • 文件系统能够建立的文件数量与inode的数量有关
  • 系统读取文件需要先找到inode,并分析inode所记录的权限与用户是否符合,如符合才能够读取区块的内容。

超级区块(super block)

超级区块是记录整个文件系统相关信息的地方:

  • 数据区块与inode的总量
  • 未使用与已使用的inode和数据区块数量
  • 数据区块和inode的大小
  • 文件系统的挂载时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等文件系统的相关信息
  • 一个有效数值,若此文件系统已被挂载,则有效 位为0,若未被挂载,则有效位为1.

dumpe2fs:查看ext系列超级区块信息命令

centos7位xfs默认文件系统,无法使用dumpe2fs查询。

目录

文件系统会分配一个inode和至少一块区块给目录

Linux文件系统的运行

Linux系统上面的文件系统与内存有非常大的关系

  • 系统会将常用的文件数据放置到内存的缓冲区,以加速文件系统的读写操作
  • 手动使用sync来强制内存中设置为Dirty的文件回写到磁盘中
  • 正常关机,关机命令会主动调用sync来讲内存的数据回写入磁盘
  • 不正常关机(断电、宕机等),由于数据尚未回写到磁盘,因此重新启动后可能会花很多时间在进行磁盘校验,甚至可能导致文件系统损坏(非磁盘损坏)。

挂载点的意义

文件系统要能够连接到目录树才能被我们使用。将文件系统与目录树结合的操作称为【挂载】

  • 挂载点一定是目录,该目录为进入该文件系统的入口
  • 并不是任何文件系统都能使用,必须要挂载到目录树的某个目录后,才能够使用该文件系统

其他Linux支持的文件系统与VFS

  • 传统文件系统:ext2、minix、FAT(用vfat模块)、iso9660(光盘)等
  • 日志式文件系统:ext3、ext4、ReiserFS、windows’s NTFS、IBM’s JFS、SGI’s XFS、ZFS
  • 网络文件系统:NFS、SMBFS

查看linux支持哪些文件系统:

[root@jiangguobiao ~]# ls -l /lib/modules/$(uname -r)/kernel/fs
total 20
-rw-r--r--. 1 root root 5992 Jun 23 23:58 binfmt_misc.ko.xz
drwxr-xr-x. 2 root root   25 Jun 26 13:50 btrfs
drwxr-xr-x. 2 root root   30 Jun 26 13:50 cachefiles
drwxr-xr-x. 2 root root   24 Jun 26 13:50 ceph
drwxr-xr-x. 2 root root   24 Jun 26 13:50 cifs
drwxr-xr-x. 2 root root   26 Jun 26 13:50 cramfs
drwxr-xr-x. 2 root root   23 Jun 26 13:50 dlm
drwxr-xr-x. 2 root root   26 Jun 26 13:50 exofs
drwxr-xr-x. 2 root root   24 Jun 26 13:50 ext4
drwxr-xr-x. 2 root root   60 Jun 26 13:50 fat
drwxr-xr-x. 2 root root   27 Jun 26 13:50 fscache
drwxr-xr-x. 2 root root   42 Jun 26 13:50 fuse
drwxr-xr-x. 2 root root   24 Jun 26 13:50 gfs2
drwxr-xr-x. 2 root root   25 Jun 26 13:50 isofs
drwxr-xr-x. 2 root root   24 Jun 26 13:50 jbd2
drwxr-xr-x. 2 root root   25 Jun 26 13:50 lockd
-rw-r--r--. 1 root root 5212 Jun 23 23:58 mbcache.ko.xz
drwxr-xr-x. 6 root root  137 Jun 26 13:50 nfs
drwxr-xr-x. 2 root root   46 Jun 26 13:50 nfs_common
drwxr-xr-x. 2 root root   24 Jun 26 13:50 nfsd
drwxr-xr-x. 2 root root 4096 Jun 26 13:50 nls
drwxr-xr-x. 2 root root   27 Jun 26 13:50 overlayfs
drwxr-xr-x. 2 root root   27 Jun 26 13:50 pstore
drwxr-xr-x. 2 root root   28 Jun 26 13:50 squashfs
drwxr-xr-x. 2 root root   23 Jun 26 13:50 udf
drwxr-xr-x. 2 root root   23 Jun 26 13:50 xfs

查看系统目前已加载到内存中支持的文件系统:

[root@jiangguobiao ~]# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cpuset
nodev   tmpfs
nodev   devtmpfs
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   dax
nodev   bpf
nodev   pipefs
nodev   configfs
nodev   devpts
nodev   hugetlbfs
nodev   autofs
nodev   pstore
nodev   mqueue
nodev   selinuxfs
        xfs
nodev   rpc_pipefs
nodev   overlay

xfs文件系统

xfs文件系统在数据分布上,主要规划为三个部分,一个数据区(data section)、一个文件系统活动登录区(log section)以及一个实时运行区(realtime section)

文件系统操作

磁盘与目录容量

  • df:列出文件系统的整体磁盘使用量
  • du:查看文件系统的磁盘使用量(常用在查看目录所占用的磁盘空间)

df

df [-ahikHTm] [目录或文件名]

-a:列出所有的文件系统,包括系统特有的/proc等文件系统
-k:以KBytes的容量显示各文件系统
-m:以MBytes的容量显示各文件系统
-h:以人们较易读的GBytes、MBytes、KBytes等格式显示
-H:以M=1000K替换M=1024K
-T:连同该硬盘分区的文件系统名称(例如xfs)也列出
-i:不用磁盘容量,而以inode的数量来显示

例:

#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值