1、文件系统概念
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。
https://en.wikipedia.org/wiki/Comparison_of_file_systems
2、文件系统类型
Linux 常用文件系统
- ext2:Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分区
- ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复
- ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升
- xfs:SGI,支持最大8EB的文件系统
- swap
- iso9660 光盘
- btrfs(Oracle)
- reiserfs
Windows 常用文件系统
- FAT32
- NTFS
- exFAT
Unix
- FFS(fast)
- UFS(unix)
- JFS2
网络文件系统
- NFS
- CIFS
集群文件系统
- GFS2
- OCFS2(oracle)
分布式文件系统
- fastdfs
- ceph
- moosefs
- mogilefs
- glusterfs
- Lustre
RAW
- 裸文件系统
- 未经处理或者未经格式化产生的文件系统
常用的文件系统特性
- FAT32
- 最多只能支持16TB的文件系统和4GB的文件
- NTFS
- 最多只能支持16EB的文件系统和16EB的文件
- EXT3
- 最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件
- Ext3目前只支持32000个子目录
- Ext3文件系统使用32位空间记录块数量和 inode数量
- 当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块
- EXT4:
- EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本
- Ext4的文件系统容量达到1EB,而支持单个文件则达到16TB
- 理论上支持无限数量的子目录
- Ext4文件系统使用64位空间记录块数量和 inode数量
- Ext4的多块分配器支持一次调用分配多个数据块
- 修复速度更快
- XFS
- 根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
- 用优化算法,日志记录对整体文件操作影响非常小
- 是一个全64-bit的文件系统,最大可以支持8EB的文件系统,而支持单个文件则达到8EB
- 能以接近裸设备I/O的性能存储数据
3、文件系统的组成部分
- 内核中的模块:ext4, xfs, vfat
- Linux的虚拟文件系统:VFS
- 用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
![图片[1]-文件系统-李佳程的个人主页](http://www.lijiach.com/wp-content/uploads/2022/11/image-39.png)
4、文件系统选择管理
4.1、创建文件系统
创建文件管理工具
- mkfs命令:
- mkfs.FS_TYPE /dev/DEVICE
- ext4
- xfs
- btrfs
- vfat
- mkfs -t FS_TYPE /dev/DEVICE
- -L ‘LABEL’ 设定卷标
- mkfs.FS_TYPE /dev/DEVICE
- mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4|xfs} 指定文件系统类型
-b {1024|2048|4096} 指定块 block 大小
-L ‘LABEL’ 设置卷标
-j 相当于 -t ext3, mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i # 为数据空间中每多少个字节创建一个inode;不应
该小于block大
小
-N # 指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m # 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...] 启用指定特性
-O ^FEATURE 关闭指定特性
4.2、查看和管理分区信息
blkid:可以查看块设备属性信息
blkid [OPTION]... [DEVICE]
-U UUID 根据指定的UUID来查找对应的设备
-L LABEL 根据指定的LABEL来查找对应的设备
e2label:管理ext系列文件系统的LABEL
e2label DEVICE [LABEL]
findfs :查找分区
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
tune2fs:重新设定ext系列文件系统可调整参数的值
-l 查看指定文件系统超级块信息;super block
-L 'LABEL’ 修改卷标
-m # 修预留给管理员的空间百分比
-j 将ext2升级为ext3
-O 文件系统属性启用或禁用, -O ^has_journal
-o 调整文件系统的默认挂载选项,-o ^acl
-U UUID 修改UUID号
dumpe2fs:显示ext文件系统信息,将磁盘块分组管理
-h:查看超级块信息,不显示分组信息
xfs_info:显示示挂载或已挂载的 xfs 文件系统信息
xfs_info mountpoint|devname
4.3、文件系统检测和修复
文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean”
一定不要在挂载状态下执行下面命令修复
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
FS_TYPE 一定要与分区上已经文件类型相同
-a 自动修复
-r 交互式修复错误
e2fsck:ext系列文件专用的检测修复工具
-y 自动回答为yes
-f 强制修复
-p 自动进行安全的修复文件系统问题
xfs_repair:xfs文件系统专用检测修复工具
-f 修复文件,而设备
-n 只检查
-d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot
5、挂载
挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为
卸载:为解除此关联关系的过程
把设备关联挂载点:mount Point
挂载点下原有文件在挂载完成后会被临时隐藏,因此,挂载点目录一般为空
进程正在使用中的设备无法被卸载
5.1、挂载文件系统 mount
mount [-fnrsvw] [-t vfstype] [-o options] device mountpoint
- device:指明要挂载的设备
- 设备文件:例如:/dev/sda5
- 卷标:-L ‘LABEL’, 例如 -L ‘MYDATA’
- UUID: -U ‘UUID’:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e’
- 伪文件系统名称:proc, sysfs, devtmpfs, configfs
- mountpoint:挂载点目录必须事先存在,建议使用空目录
-t fstype 指定要挂载的设备上的文件系统类型,如:ext4,xfs
-r readonly,只读挂载
-w read and write, 读写挂载,此为默认设置,可省略
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项
中有
auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
-o options: (挂载文件系统的选项),多个选项使用逗号分隔
async 异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全
sync 同步模式,内存更改时,同时写磁盘,安全,但效率低下
atime/noatime 包含目录和文件
diratime/nodiratime 目录的访问时间戳
auto/noauto 是否支持开机自动挂载,是否支持-a选项
exec/noexec 是否支持将文件系统上运行应用程序
dev/nodev 是否支持在此文件系统上使用设备文件
suid/nosuid 是否支持suid和sgid权限
remount 重新挂载
ro/rw 只读、读写
user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
acl/noacl 启用此文件系统上的acl功能
loop 使用loop设备
_netdev 当网络可用时才对网络资源进行挂载,如:NFS文件系统
defaults 相当于rw, suid, dev, exec, auto, nouser, async
挂载规则:
- 一个挂载点同一时间只能挂载一个设备
- 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
- 一个设备可以同时挂载到多个挂载点
- 通常挂载点一般是已存在空的目录
5.2、卸载文件系统 umount
卸载时:可使用设备,也可以使用挂载点
umount 设备名|挂载点
5.3、查看挂载情况
#查看挂载
#通过查看/etc/mtab文件显示当前已挂载的所有设备
mount
#查看内核追踪到的已挂载的所有设备
cat /proc/mounts
#查看挂载点情况
findmnt MOUNT_POINT|device
#查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
#终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT
5.4、持久挂载
将挂载保存到 /etc/fstab 中可以下次开机时,自动启用挂载
每行定义一个要挂载的文件系统,,其中包括共 6 项
- 要挂载的设备或伪文件系统
- 设备文件
- LABEL
- LABEL=””
- UUID
- UUID=””
- 伪文件系统名称
- proc, sysfs
- 挂载点
- 必须是事先存在的目录
- 文件系统类型
- ext4,xfs,iso9660,nfs,none
- 挂载选项
- defaults ,acl,bind
- 转储频率
- 0:不做备份 1:每天转储 2:每隔一天转储
- fsck检查的文件系统的顺序:允许的数字是0 1 2
- 0:不自检 ,1:首先自检;一般只有rootfs才用 2:非rootfs使用
![图片[2]-文件系统-李佳程的个人主页](http://www.lijiach.com/wp-content/uploads/2022/11/image-40.png)
#添加新的挂载项
mount -a
6、移动介质
挂载意味着使外来的文件系统看起来如同是主目录树的一部分,所有移动介质也需要挂载,挂载点通常在/media 或/mnt下;
访问前,介质必须被挂载;
摘除时,介质必须被卸载;
按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)。
6.1、使用光盘
在图形环境下自动启动挂载/run/media/
#手工挂载
mount /dev/cdrom /mnt/
#操作光盘
eject #弹出光盘
eject -t #弹入光盘
#创建ISO文件
cp /dev/cdrom /root/centos.iso
mkisofs -r -o /root/etc.iso /etc #来自于genisoimage包
#刻录光盘
wodim -v -eject centos.iso
将ISO制作为U盘工具Rufus
官网: http://rufus.ie
Rufus 是一个开源免费的快速制作 U 盘系统启动盘和格式化 USB 的实用小工具,它可以快速把 ISO 格式的系统镜像文件快速制作成可引导的 USB 启动安装盘,支持 Windows 或 Linux 启动。Rufus 小巧玲珑,软件体积仅 7 百多 KB,然而麻雀虽小,它却五脏俱全
6.2、USB介质
#查看USB设备是否识别
lsusb #来自于usbutils包
#被内核探测为SCSI设备,表现为/dev/sdaX、/dev/sdbX或类似的设备文件
#在图形环境中自动挂载在/run/media/
#手动挂载
mount /dev/sdX# /mnt
#查看日志是否有usb相关日志
tail /var/log/messages -f
#格式化U盘为 FAT32 文件系统
dnf -y install dosfstools
mkfs.vfat /dev/sdd1
mount /dev/sdd1 /mnt