centos磁盘与文件系统管理

如题所述

第1个回答  2022-06-23

Linux的标准文件系统为Ext2。是一种索引式文件系统。

文件系统一开始就将inode与block规划好了,除非重新格式化(或者利用resize2fs 等指令变更文件系统大小),否则 inode 与 block 固定后就不再变动。

Ext2 文件系统在格式化的时候分为多个区块群组 (block group) 的,每个区块群组都有独立的inode/block/superblock系统。每一个区块群组(block group)的六个主要内容:

inode table 与 data block称为 数据存放区域 ,至于其他例如 superblock、 block bitmap 与 inode bitmap 等区段就被称为 metadata (中介资料)

新建文件的过程:

数据的不一致 (Inconsistent) 状态 :在修改过的块写回之前,系统崩溃,甚至导致metadata 的内容与实际数据存放区产生不一致。 解决办法

为了避免CPU等待磁盘I/O,Linux使用 异步处理 (asynchronously)的方式。所谓的异步处理是这样的:磁盘数据在内存中如果没有修改过则设置为干净(clean)的。否则设定为脏的(Dirty)。但不立即写入到磁盘中! 系统会不定时的将内存中设定为Dirty的数据写回磁盘,以保持磁盘与内存数据的一致性。 也可以利sync 指令来手动强迫写入磁盘。

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

想要知道你的Linux支持的文件系统有哪些,可以察看 /lib/modules/$(uname -r)/kernel/fs 这个目录;想要知道系统目前已加载到内存中支持的文件系统可以查看 /proc/filesystems 这个文件。

EXT系列文件系统的 缺点 :支持度最广,但格式化超慢, 原因 是预先规划出所有的inode/block/metadata等数据,随着磁盘容量越来越大,格式化越来越费时间。
xfs 文件系统 优点 :较适合大容量磁盘与巨型文件(如虚拟磁盘)。
xfs文件系统在资料的分布上,主要规划为三个部份,一个数据 区 (data section)、一个文件系统活动登录区 (log section)以及一个实时运作区 (realtime section)。 这三个区域的数据内容如下:

windows使用盘符来处理不同的文件系统,所谓不需要将不同的文件系统整合,而大多数UNIX操作系统都使用虚拟文件系统概念尝试将多种文件系统统一成一个有序的框架。
关键思想* :抽象出所有文件系统的共有部分,并且将这部分代码放在单独的一层,该层调用底层的实际文件系统来具体管理数据。

VFS有对用户进程的上层接口(POSIX接口),对实际文件系统的下层接口。只要实际文件系统提供VFS所需的功能,VFS就不需要知道或者关心数据具体存放在什么地方或者底层实际文件系统是什么的样子。
实际文件系统在使用前必须先注册,即提供一个包含VFS所需函数的地址的列表。
设计实际文件系统时只需要先获得VFS期待的功能,然后再实现这些功能即可,如果文件系统已经存在,则只需提供VFS所需功能即可。

硬链接 :多个文件名映射到同一文件的inode。hard link只是在某个目录的data block中新增一个文件名链接到某inode号码的关联记录。特点:

软链接(符号链接) :建立一个独立的文件,该文件的block记录的目标文件的路径。类似于windows的快捷方式。特点:

目录的链接计数 :新建一个子目录时,该子目录的链接计数为2,而当前目录链接计数加1,因为自目录中有.和..两个目录。

命令 :dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device
描述 :显示ext系列文件系统的超级块和区块群组信息。

命令 :xfs_info 挂载点 | 装置文件名
描述 :显示xfs文件系统的超级块和区块群组信息。


命令 :df [-ahikHTm] [ 目录或文件名]
描述 :可以查看文件系统的整体磁盘使用情况。

命令 :du [-ahskm] 文件或目录
描述 :评估文件系统的磁盘使用量(常用在推估目录所占容量)。

命令 :ln [-sf] 来源文件 目标文件
描述 :建立硬链接和软链接。

命令 :link 来源文件 目标文件
描述 :建立硬链接

命令 :unlink 目标文件
描述 :删除硬链接

新增磁盘的步骤:

命令 :lsblk [-dfimpt ] [device]
描述 :列出系统上的所有磁盘列表。

命令 :blkid
描述 :可以查看块设备(包括交换分区)的文件系统类型、LABEL、UUID、挂载目录等信息。

命令 :parted device_name print
描述 :列出磁盘的分区表类型与分区信息。

命令 :parted [装 置] [ 指令 [ 参数 ]]
描述 :对GPT或者MBR磁盘建立分区

命令 :gdisk 装置名
描述 :对GPT格式磁盘分区。

命令 :fdisk 装置名
描述 :对MBR格式磁盘分区。

命令 :partprobe [-s]
描述 :更新分区表信息。

命令 :mkfs [-t type] [fs-options] device [size]
描述 :根据指定的文件系统类型调用对应的格式化工具格式化磁盘。

命令 :mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] [-r parms] 装置名
描述 :将磁盘进行xfs格式化

命令 :mkfs.ext4 [-b size] [-L label] 装置名
描述 :将磁盘进行ext4格式化

命令 :xfs_repair [-fnd] 装置名
描述 :检验与修复xfs文件系统。修复时该文件系统不能被挂载!

命令 :fsck [-lsAVRTMNP] [-r [fd]] [-C [fd]] [-t fstype] [filesystem…] [–] [fs-specific-options]
描述 :根据指定的type调用相关工具来检验与修复文件系统。

命令 :fsck.ext4 [-pf] [-b superblock] 装置名
描述 :检验与修复ext4文件系统.

注意:

命令 :mount [-l|-h|-V]
mount -a [-fFnrsvw] [-t fstype] [-O optlist]
mount [-fnrsvw] [-o options] device|dir
mount [-fnrsvw] [-t fstype] [-o options] device dir
描述 :挂载文件系统。

基本上,不需要加上-t这个选项,系统会自动的分析最恰当的文件系统来尝试挂载你需要的装置!由于文件系统几乎都有 superblock , Linux 可以透过分析superblock 搭配Linux自己的驱动程序去测试挂载,如果成功的套和了,就立刻自动的使用该类型的文件系统挂载起来啊!那么系统有没有指定哪些类型的 filesystem 才需要进行上述的挂载测试呢?主要是参考底下这两个文件:

那怎么知道Linux有没有相关文件系统类型的驱动程序呢?Linux支持的文件系统之驱动程序都写在 /lib/modules/$(uname -r)/kernel/fs/ 目录找中,例如 ext4 的驱动程序就写在 /lib/modules/$(uname -r)/kernel/fs/ext4/ 这个目录下啦!

光驱一挂载之后就无法退出光盘片了!除非你将他卸除才能够退出!

命令 :umount [-fn] 装置文件名或挂载点
描述 :卸除文件系统或装置。

命令 :mknod 装置文件名 [bcp] [Major] [Minor]
描述 :设置装置的主次设备代码。

命令 :xfs_admin [-lu] [-L label] [-U uuid] 装置文件名
描述 :修改XFS文件系统的 UUID 与 Label name

命令 :tune2fs [-l] [-L Label] [-U uuid] 装置文件名
描述 :修改ext4文件系统的 UUID 与 Label name

在开机的时候就将文件系统挂载好,可以通过修改 /etc/fstab ,mount指令就是将所有的选项与参数写入到这个文件中。除此之外, /etc/fstab 还加入了 dump 这个备份用指令的支持! /etc/fstab 是开机时的配置文件,实际 filesystem 的挂载是记录到 /etc/mtab 与 /proc/mounts 。但当 /etc/fstab 数据错误,导致无法开机而进入单人维护模式时,由于根目录是只读状态,无法修改 /etc/fstab ,也无法更新 /etc/mtab ,只能使用 mount -n -o remount,rw / 来重新挂载根目录。

命令 :mkswap [options] device [size]
描述 :用于在一个文件或者设备上建立交换分区。

命令 :swapon [options] [specialfile…]
描述 :用于在一个文件或者设备上建立交换分区。

命令 :swapoff [-va] [specialfile…]
描述 :用于在一个文件或者设备上建立交换分区。

命令 :free [options]
描述 :显示当前系统内存使用情况。

关注点赞不迷路[可怜]