文件系统
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;
即在存储设备上组织文件的方法;
操作系统中负责管理和存储文件信息的软件结构称为文件管理系统, 简称文件系统。
无文件系统,就没有文件、目录和目录结构的概念;软件结构——逻辑层面;
系统角度
文件系统——对文件存储设备的空间进行组织和分配;
文件系统——负责文件存储并对存入的文件进行保护和检索;
文件系统——负责为用户建立文件,存入、读出、修改、转储文件,
控制文件的存取,安全控制,日志,压缩, 加密等;
支持的文件系统:/lib/modules/`uname –r`/kernel/fs
windows支持NTFS格式
文件系统的类型
Linux文件系统:
ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs,
jfs( AIX), swap
swap介绍
Windows里swap是虚拟内存;
如果系统内存是8G,那么swap文件(隐藏)大小是4G(系统内存的一半)左右;
当磁盘空间不够时,swap可当做内存使用,这样系统就有8+4=12G的内存,但是系统利用虚拟内存,性能
会下降;
光盘:iso9660
Windows:FAT32, exFAT,NTFS
Unix: FFS(fast), UFS(unix), JFS2
网络文件系统:NFS, CIFS
访问本机文件(client),可以关联到远程服务端(service);
把网站(WWW.magedu.com)挂载到服务器(apache)上,数据存在服务器的
/var/www/html/index.html上,为了同步,把数据共享在/nfsshare里;
集群文件系统:GFS2, OCFS2(oracle)
各个服务端之间进行数据同步
分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
例如云盘,1G数据——1M/block——数据分多块存放,每块都有备份——安全
RAW:未经处理或者未经格式化产生的文件系统
无文件系统分区,访问数据=访问二进制,优点是少了文件系统代理,速度快;Oracle
文件系统不同,各自的特性(功能)也不相同;
把/dev/sdd1格式化,变为vfat文件系统格式;
把/dev/sdd1挂载到/mnt下
vfat文件格式不支持修改权限、不支持更改所有者,其他文件系统可以支持更改权限和所有者
根据其是否支持"journal(日志)"功能:
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat
ext文件系统介绍
(1)disk(磁盘)文件被内核读入内存;
(2)在内存中,修改disk文件;
(3)修改后:
ext2:内存中被修改的文件覆盖disk原文件;
ext3、4:文件中被修改之处存放到disk中的日志里;空闲时,内存中被修改的文件覆盖disk原文件;
ext3、4的优点:保证原始文件不被破坏(传输过程断电); 缺点:性能下降,占用disk空间;
日志的“写操作”先于disk的“写操作”:
有顺序的写:新增信息在日志最后处一行增加;
独立分区:日志单独放一个分区 ;
文件系统的组成部分:
内核中的模块:ext4, xfs, vfat
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虚拟文件系统:VFS (不同的文件系统,用户如何访问)
用户不是直接访问文件系统,用户应用程序→systemcall interface(系统调用)→VFS→不同文件系统
查前支持的文件系统:cat /proc/filesystems
文件系统的区别
单节点
xfs 500TB 支持root分区 支持boot分区
ext4 50TB 支持root分区 支持boot分区
btrfs 50TB 支持root分区 支持boot分区
网络/多节点
GFS2 2-16个节点 支持root分区 不支持boot分区
SPOF(单点失败) 解决方案是数据备份多份
创建文件系统
mkfs命令:
(1)mkfs.FS_TYPE /dev/DEVICE
centos7.3 有xfs文件系统
centos6.9 有xfs文件系统,缺少工具,需要安装对应的包
cd /lib/modules/`uname –r`/kernel/fs
查看是否有ntfs文件
(2) mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL': 设定卷标
mke2fs命令:
ext系列文件系统专用管理工具
mke2fs /dev/sdb2 把/dev/sdb2分区变为ext2文件系统
mke2fs 默认创建为ext2分区
mke2fs -t {ext2|ext3|ext4} /dev/DEVICE
mke2fs -j = mke2fs -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
mke2fs(或mkfs.FS_TYPE) -b {1024|2048|4096}
b就是block,在不同环境中,含义不同;
mke2fs(或mkfs.FS_TYPE) -L 'LABEL'
mke2fs(或mkfs.FS_TYPE) -i #(数字)
为数据空间中每多少(#)个字节创建一个inode;此大小不应该小于block的大小;
mke2fs(或mkfs.FS_TYPE) -N # 指定分区中创建多少个inode
mke2fs(或mkfs.FS_TYPE) -I # 一个inode记录占用的磁盘空间大小,128---4096
mke2fs(或mkfs.FS_TYPE) -m #: 默认5%,为管理人员预留空间占总空间的百分比
mke2fs(tune2fs) -O FEATURE[,...] 启用指定特性
mke2fs(tune2fs) -O ^FEATURE 关闭指定特性
文件系统标签
指向设备的另一种方法;与设备无关;
blkid 块设备属性信息查看
blkid [OPTION]... [DEVICE]
blkid -U UUID 根据指定的UUID来查找对应的设备
blkid -L LABEL 根据指定的LABEL来查找对应的设备
e2label:管理ext系列文件系统的LABEL
e2label DEVICE 查询设备对应的标签(卷标)
e2label DEVICE LABEL 修改设备的卷标
findfs :查找分区
findfs [options] LABEL=<lable>
findfs [options] UUID=<uuid>
脚本(查询挂载点对应的设备名)
#!/bin/bash
dir=$1;findfs `egrep "$dir[[:space:]]+" /etc/fstab| cut -d " " -f1`
tune2fs命令
tune2fs 重新设定ext系列文件系统可调整参数的值
tune2fs -l 查看指定文件系统超级块信息;super block
tune2fs -L 'LABEL' 修改卷标
tune2fs -m # 修改预留给管理员的空间百分比
tune2fs -j 将ext2升级为ext3
tune2fs -O 文件系统属性启用或禁用, –O ^has_journal (前面有)
tune2fs -o 调整文件系统的默认挂载选项,–o ^acl
tune2fs -o acl /dev/sdb1 改变文件系统的属性;
mount -o acl /dev/sdb1 /mnt 挂载时,就给予文件系统acl权限;
centos6.9:手动创建的分区,ext文件系统默认无acl权限;xfs有acl权限;
tune2fs -U UUID 修改UUID号
ext文件系统互相转化(ext2↔ext3),UUID无变化;
重新创建文件系统时,UUID变化;
硬盘换到其他机子上,UUID无变化;
标识一个分区(3类):设备名称、UUID(建议用)、Label、
super block
为了安全,通常会做备份;
100G的数据 → block的单位4096(4k) → 分为多个block → 分组:块组(元数据+数据)
dumpe2fs 块分组管理,每个块组有32768块;
显示分组信息和超级块信息;
super block 存放在每个奇数块组(0-1-3-5-7-9)的第一个块中;
这些块是备份块,文件被破坏后,可以调用这些备份块修复文件;
dumpe2fs -h 查看超级块信息,不显示分组信息
文件系统的检测与修复
常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean”;
filesystem stat是文件系统状态,当文件系统受损时,tune2fs -l 命令不能查询;
文件系统修复是有风险的;
注意:一定不要在挂载状态下修复;
文件系统的检测与修复(两种方法)
1.手工的输入命令,进行检查和修复;
2.系统自发的进行检查和修复:(需要两个条件)
tune2fs -l 可以查看信息
(1)挂载数量 >(大于) 最大挂载数量;
(2)文件系统的使用时间达到规定的期限;
fsck: File System Check
fsck.FS_TYPE 支持ext文件系统,不支持xfs文件系统;
fsck -t FS_TYPE
fsck -p 自动修复错误
fsck -r 交互式修复错误
FS_TYPE 一定要与分区上已有文件类型相同
e2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复(文件系统破坏程度小,利用此选项,可以详细检查和修复)
xfs系列的专用检测修复工具
xfs_check
xfs_repair
tune2fs -l 不支持查询xfs文件系统信息;
实验:创建一个文件系统,破坏并修复
1.创建文件系统
2.挂载并复制文件到此文件系统
3.取消挂载
4.破坏文件系统
5.修复文件系统
6.检测是否成功修复