管理文件系统
管理文件系统
知识要点
file system
FS
文件系统类型
创建文件系统
文件系统使用
文件系统的转换
移动硬盘、u盘使用
磁盘物理结构
硬盘的术语
文件系统概念++++++
文件系统是指文件的组织与管理结构,是一个有关于磁盘中各种有用信息的记录——即是保存以下信息的结构记录表
当前所使用磁盘的容量信息
磁盘的可用信息,包括已占用和剩余的空间;
文件与目录的属性;
文件与目录的在磁盘中确切地址与链接信息。
一句话总结:文件系统就是管理这块(分区)文件的机制或者说是组织方式。
1.文件系统类型
文件系统
Linux 支持多种文件系统
ext2:Linux基本文件系统
ext3:ext2的增强版本
ext4:ext文件系统的第四个版本(rh,centOS6/7)
swap:交换文件系统
nfs:网络文件系统,适合Linux或Unix机器间共享
smbfs:适合Linux或Unix和windows机器间共享
vfat:windows早期文件系统
ntfs:windows默认文件系统,功能非常强大
iso9660:CD光盘的只读文件系统
GFS:google专用存储海量搜索数据而设计的专用文件系统
reiserfs:早期linux使用的日志功能的文件系统
文件系统
Linux内核采用虚拟文件系统层(VFS),通过该中间层对各类文件系统提供了完美的支持。对于用户来说,这些文件系统几乎是透明的,用户不需要关心底层文件系统的具体实现。
VFS 基本结构
super block
dentry
inode
data
Super block 超级块
存储文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式。文件系统中第一个块被称为超级块。
将物理相邻的若干个扇区称为了一个块。操作系统读写磁盘的基本单位是扇区,而文件系统的基本单位是块(block)。块越大存储性能越好,但空间浪费严重。块越小性能相对越低,但空间利用率高。
Inode 索引节点
保存的其实是实际的数据(文件内容)的一些信息,这些信息称为“元数据”(也就是对文件属性的描述)。例如:文件大小,文件拥有者(owner),文件属组(group),文件权限,文件读取或修改的时间戳,链接数量,同时记录此文件的数据所在的 block 号码,文件类型等等。
注意,数据分成:元数据+数据本身
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般每2KB就设置一个inode。一般文件系统中很少有文件小于2KB的,所以预定按照2KB分,一般inode是用不完的。
一个文件肯定占用一个inode,如果是空文件就不会占用BLOCK ,,如果不是空文件,肯定会占用BLOCK
一个文件系统内的文件总数,和inode数目一致
inode号是唯一的,表示不同的文件。其实Linux内核访问文件都是通过inode号来进行的,所谓文件名仅仅是inode号的别名,方便用户识别和使用的。当我们打开一个文件的时候,首先,系统找到这个文件名对应的inode号;然后,通过inode号,在inode table中找到inode信息,最后在inode信息中找到文件数据所在的block,接着就可以处理文件数据了。
当创建一个文件(包括目录)的时候,就给文件分配了一个inode。inodes最大数量就是文件的最大数量。
dentry 目录项
目录项是描述文件的逻辑属性,只存在于内存中,并没有实际对应的磁盘上的描述,更确切的说是存在于内存的目录项缓存,为了提高查找性能而设计。注意不管是目录还是最终的文件,都是属于目录项,所有的目录项在一起构成一颗庞大的目录树。例如:打开一个文件/opt/data/a.txt,那么/、opt、data、a.txt都是一个目录项,VFS在查找的时候,根据一层一层的目录项找到对应的每个目录项的inode,那么沿着目录项进行操作就可以找到最终的文件。
注意:目录也是一种文件(所以也存在对应的inode)。打开目录,实际上就是打开目录文件。
data 数据
记录文件的实际内容,若文件太大时,会占用多个 block
linux文件的组成
链接文件
内核只识别inode
硬链接:
不能跨文件系统
不同的文件名对应相同的inode
[root@localhost ~]# ln a.txt a.hard [root@localhost ~]# cat a.txt 1 [root@localhost ~]# cat a.hard 1
软连接:
(快捷方式)对应另一个inode
可以跨文件系统
[root@localhost ~]# ln -s a.txt a.link // 命令 -s [root@localhost ~]# cat a.link 1 [root@localhost ~]# ls -i a.* 2097168 a.hard 2097165 a.link 2097168 a.txt ?// inode不同 [root@localhost ~]# ln -s /root/a.txt a.soft1 [root@localhost ~]# ll -i a.* 2097168 -rw-r--r--. 2 root root 2 Jan 5 09:52 a.hard 2097165 lrwxrwxrwx. 1 root root 5 Jan 5 09:53 a.link -> a.txt 2097167 lrwxrwxrwx. 1 root root 11 Jan 5 09:56 a.soft1 -> /root/a.txt 2097168 -rw-r--r--. 2 root root 2 Jan 5 09:52 a.txt
[root@localhost ~]# rm -f a.txt [root@localhost ~]# ls -l total 56 -rw-r--r--. 1 root root 44 Jan 3 11:30 a123 -rw-r--r--. 1 root root 2 Jan 5 09:52 a.hard lrwxrwxrwx. 1 root root 5 Jan 5 09:53 a.link -> a.txt //报错,a.link无用 -rw-------. 1 root root 1227 Nov 23 14:36 anaconda-ks.cfg -rw-------. 1 508 a1 1 Jan 2 10:17 dead.letter -rw-r--r--. 1 root root 657 Nov 23 14:35 group -rw-r--r--. 1 root root 28534 Dec 2 09:26 install.log -rw-r--r--. 1 root root 7572 Nov 23 14:35 install.log.syslog
2.创建文件系统
创建完整的文件系统的四个步骤
建立分区
格式化分区建立文件系统
检验文件系统
装载文件系统
Linux常用分区ID
格式化分区
mkfs命令
用途:Make Filesystem,创建文件系统(格式化)
格式:mkfs -t 文件系统类型 分区设备
修复文件系统
fsck命令
用途:file system check,诊断修复文件系统
格式:fsck -t 文件系统类型 分区设备
-y:自动输入yes(与-a相同)
应用示例:
故障原因
非正常关机、突然断电、设备读写失误等
文件系统的超级块(super-block)信息被破坏
模拟对/dev/sdb1分区的破坏操作
dd if=/dev/zero of=/dev/sdb1 bs=512 count=4
检查是否能挂载该分区
报错:mount: you must specify the filesystem type
对/dev/sdb1分区进行修复
fsck -yt ext3 /dev/sdb1
再次挂载该分区
df命令
(查看右边)
(查看左边)
df -i
[root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 204074816 2153148 191548600 2% / tmpfs 953140 0 953140 0% /dev/shm /dev/sda1 194241 38688 145313 22% /boot /dev/sdb2 158005644 60864 149911880 1% /data1 [root@localhost ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 12967936 56448 12911488 1% / tmpfs 238285 1 238284 1% /dev/shm /dev/sda1 51200 39 51161 1% /boot /dev/sdb2 10043392 11 10043381 1% /data1
验证:
1、 创建一个小分区(8M)
2、创建文件系统
3、创建空文件
while: do touch /sdb1/a${RANDOM} done
快速使用block
while: do cat /etc/passwd >> /test/a.txt done
4、使用df df -i 查看空间使用情况
5、观察
inode全使用,block还有空闲,这时候不能创建新文件了,但是还可以增加文件内容
还有inode空闲,block全使用,这时,可以创建新文件,但是,不能增加文件内容
挂载文件系统
mount命令
用途:挂载文件系统、ISO镜像到指定文件夹
mount [ -t 类型 ] [ -o 选项 ] 设备名 挂载点目录
卸载文件系统
·
umount命令
用途:卸载已挂载的文件系统
格式:umount 存储设备位置
umount 挂载点目录
无法卸载已挂载的设备
故障原因
需要卸载的设备正在被使用
故障现象
无法卸载设备,提示“... device is busy”
解决思路
将工作目录切换到挂载点以外
退出正在使用该设备的程序
或使用fuser命令找出相关进程,并终止该进程
3.管理交换空间
虚拟内存也叫交换空间
短时间缓解物理内存的不足;但不能代替物理内存
mkswap命令
用途:Make Swap,创建交换文件系统
格式:mkswap 分区设备
-L:设置交换分区文件系统标签
swapon 分区设备 ----激活交换分区
swapoff 分区设备----停用交换分区
/etc/fstab文件
/etc/fstab配置文件
包含了需要开机后自动挂载的文件系统记录
mount -a命令将逐行读取fstab文件进行所有挂载
设置自动挂载示例
每次重新开机后,能够自动完成挂载
将/dev/sdb1分区挂载到/mailbox目录
和/etc/fstab文件相关的挂载选项
使用文件系统标签标识设备
例如LABLE=/和/dev/sda1是一样的
一般用UID,UID是唯一的
[root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri Nov 23 14:32:12 2018 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=2e5b7bf6-be3d-4042-a527-ed73ae08eeeb / ext4 defaults 1 1 UUID=f6b149b6-a506-403e-9c91-c7837d606639 /boot ext4 defaults 1 2 UUID=fe4c20c8-f377-44ae-93b7-9e86d293a060 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
在/etc/fstab文件中使用文件系统标签可以避免由于添加删除设备造成的设备文件标识混乱
其它文件系统命令
e2label命令
查看和设置ext2或ext3文件系统的标签
语法:e2label 分区设备文件 标签名
e4label命令
查看和设置ext4文件系统的标签
语法:e4label 分区设备文件 标签名
blkid命令
查看文件系统的标签查看UID
语法:blkid [分区设备文件]
df命令
用途:查看磁盘文件系统的使用情况
格式:df [选项]... [设备名]
常用命令选项
-a:列出所有文件系统
-h:以更易读的字节单位(K、M等)显示信息
-T:列出文件系统的类型
[root@localhost ~]# dumpe2fs dumpe2fs 1.41.12 (17-May-2010) Usage: dumpe2fs [-bfhixV] [-o superblock=<num>] [-o blocksize=<num>] device
du命令
用途:统计目录及文件的空间占用情况(estimate file space usage)
格式:du [选项]... [目录或文件名]
常用命令选项
-a:统计时包括所有的文件,而不仅仅只统计目录
-h:以更易读的字节单位(K、M等)显示信息
-s:只统计每个参数所占用空间总的大小
建立文件系统
新加磁盘的完整步骤:
物理连接 分区 格式化 挂载 更新/etc/fstab文件·
stat命令
用途:查看文件inode信息
格式:stat [选项]... 文件名
常用命令选项
-f:显示文件所在文件系统的信息
4.使用U盘
U盘或移动硬盘
设备文件是sd
如果文件系统是windows的FAT32
mount /dev/sdb1 挂载点
如果文件系统是windows的NTFS,Linux默认不支持
配置linux支持NTFS文件系统
安装fuse
安装ntfs-3g
mount -t ntfs-3g /dev/sdb1 挂载点
本章总结
文件系统inode和block
mount命令的意义
fstab文件的意义
和文件系统相关常用的命令
分区、格式化、fsck、df、du、交换分区
如何使用NTFS文件系统的U盘