文件系统及其管理
文件系统
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。
操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。
具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等
linux支持的文件系统:
/lib/modules/`uname –r`/kernel/fs
/proc/filesystems
文件系统的分类
Linux文件系统:ext2(Extended file system)、ext3、ext4、 xfs (SGI )、btrfs (Oracle )、reiserfs、jfs(AIX )、swap、iso9660(光盘)。
Windows文件系统:FAT32、exFAT、NTFS。
Unix文件系统:FFS(fast)、UFS(unix)、JFS2。
网络文件系统:NFS、CIFS。
集群文件系统:GFS2、OCFS2(oracle)
分布式文件系统:fastdfs、ceph、moosefs、mogilefs、glusterfs、Lustre。
未经处理或者未经格式化产生的文件系统:RAW
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat
linux的虚拟文件系统:VFS
文件系统的选择:
类型 支持限制 root分区 boot分区 注释
xfs 500TB YES YES 默认分区格式
ext4 50TB YES YES 兼容ext3、ext2
brfs 50TB YES YES 技术预览
gfs2 2-16个节点 YES NO 集群文件共享存储
文件系统管理命令
mkfs
分区后,才可对新建的分区创建文件系统
mkfs - build a Linux file system
mkfs用于在设备上建立Linux文件系统,通常是一个硬盘分区。
mkfs [-V] [-t type] [fs-options] device [size]
-t, --type=<type> 指定文件系统的类型,当不指定时,采用 ext2 文件系统。
fs-options 所创建文件系统的选项参数。
<device> 设备的全路径
<size> 指定设备的块大小
-V, --verbose 显示过程,specifying -V more than once will cause a dry-run
mke2fs
mke2fs - create an ext2/ext3/ext4 filesystem
mke2fs [options] device [blocks-count]
options:
-b<区块大小>: 指定区块大小,单位为字节
-c: 检查是否有损坏的区块
-f<不连续区段大小>: 指定不连续区段的大小,单位为字节
-F: 不管指定的设备为何,强制执行mke2fs
-i<字节>: 指定"字节/inode"的比例
-N<inode数>: 指定要建立的inode数目
-l<文件>: 从指定的文件中,读取文件西中损坏区块的信息
-L<标签>: 设置文件系统的标签名称
-m<百分比值>: 指定给管理员保留区块的比例,预设为5%
-M: 记录最后一次挂入的目录
-q: 执行时不显示任何信息
-r: 指定要建立的ext2文件系统版本
-R=<区块数>: 设置磁盘阵列参数
-S: 仅写入superblock与group descriptors,而不更改inode able inode bitmap以及block bitmap
-v: 执行时显示详细信息
-V: 显示版本信息。
device: 指定要创建的文件系统的分区设备文件名
blocks-count:指定要创建的文件系统的磁盘块数量
mkfs.fs_type
分区后,才可对新建的分区创建文件系统
mkfs.fs_type - build a fs_type Linux file system,其中fs_type代表多种文件类型。
mkfs.fs_type可以是mkfs.btrfs、mkfs.cramfs、mkfs.ext2、mkfs.ext3、mkfs.ext4、mkfs.fat、mkfs.minix、mkfs.msdos、mkfs.vfat、mkfs.xfs
上述每个命令都对应一个类型的文件系统,选项太多也就不再一一写出了,当用到那个时,具体看帮助。
blkid
与之有关的文件/etc/fstab
blkid - locate/print block device attributes,块设备属性查看
blkid [options][<device>]
-c <file> 从文件中读取,而不是从默认的缓存文件中读取 (-c /dev/null means no cache)
-d 不编码不打印的字符
-h 打印帮助信息
-g 丢弃收集到blkid缓存信息
-o <format> 输出格式,可以是value, device, export or full中的一个,默认为full
-k 列出所有已经知道的文件系统或RAIDS并退出
-s <tag> 显示指定的 tag(s),默认显示所有 tags
-t <token> 用特定的象征来找到设备(NAME=value pair)
-l 仅查找第一设备,配合使用的是-t token选项
-L <label> 转换LABEL为设备名
-U <uuid> 转换UUID为设备名
-V 输出版本
<dev> 指定要检查的设备(default: all devices)
-p 检查低水平的超级块 (bypass cache)
-i 收集关于I/O限制的信息
-S <size> 重写设备尺寸
-O <offset> 检查给定的偏移
-u <list> 过滤(e.g. -u filesystem,raid)
-n <list> 通过文件系统过滤 (e.g. -n vfat,ext3)
findfs
findfs - find a filesystem by label or UUID,通过label或uuid来查找文件系统
findfs {LABEL,UUID,PARTUUID,PARTLABEL}=<value>
tune2fs
tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems,重新设定ext系列可调整的参数。
tune2fs [options] device
-c: 调整最大加载次数;
-C: 设置文件系统已经被加载的次数;
-e: 设置内核代码检测到错误时的行为;
-f: 强制执行修改,即使发生错误;
-i: 设置相邻两次文件系统检查的相隔时间;
-j: 为“ext2”文件系统添加日志功能,将其转换为“ext3”文件系统;
-l: 显示文件超级块内容;
-L: 设置文件系统卷标;
-m: 显示文件保留块的百分比;
-M: 设置文件系统最后被加载到的目录;
-o: 设置或清除文件系统加载的特性或选项;
-O: 设置或清除文件系统的特性或选项;
-r: 设置文件系统保留块的大小;
-T: 设置文件系统上次被检查的时间;
-u: 设置可以使用文件系统保留块的用户;
-U: 设置文件系统的UUID。
dumpe2fs
dumpe2fs - dump ext2/ext3/ext4 filesystem information
dumpe2fs [options] <device>
-b: 打印文件系统中预留的块信息;
-ob<超级块>: 指定检查文件系统时使用的超级块;
-OB<块大小>: 检查文件系统时使用的指定的块大小;
-h: 仅显示超级块信息;
-i: 从指定的文件系统映像文件中读取文件系统信息;
-x: 以16进制格式打印信息块成员。
e2label
e2label - Change the label on an ext2/ext3/ext4 filesystem
e2label device [ new-label ]
fsck
常用于发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean” 的情况。注意,一定不要在挂载状态下修复。
fsck - check and repair a Linux filesystem
fsck [-lrsAVRTMNP] [-C [fd]] [-t fstype] [filesystem...] [--] [fs-specific-options]
-a: 自动修复文件系统,不询问任何问题;
-A: 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统;
-N: 不执行指令,仅列出实际执行会进行的动作;
-P: 当搭配"-A"参数使用时,则会同时检查所有的文件系统;
-r: 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式;
-R: 当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查;
-s: 依序执行检查作业,而非同时执行;
-t<文件系统类型>: 指定要检查的文件系统类型;
-T: 执行fsck指令时,不显示标题信息;
-V: 显示指令执行过程。
返回数值所代表的信息:
0 没有错误
1 文件系统错误纠正
2 系统应该被重启
4 系统错误,未修正
8 操作错误
16 用法或语法错误Usage or syntax error
32 通过用户请求检查缓存
128 共享存储错误
fsck.fs_tyoe
和mkfs.fs_tpe类型。fy_type代表许多文件系统。
fsck。fs_type用于针对不通的文件系统进行检查和修复
fsck。fs_type可以是fsck.btrfs、fsck.cramfs、fsck.ext2、fsck.ext3、fsck.ext4、fsck.fat、fsck.minix、fsck.msdos、fsck.vfat、fsck.xfs
同样由于选项太多就不一一描述了,用到那个具体查看man帮助等。
e2fsck
e2fsck - check a Linux ext2/ext3/ext4 file system
e2fsck [options] <device>
-p 自动修复 (no questions)
-n 对文件系统不做更改
-y 设置对所有文件回答为YES
-c 检查的坏块并添加到坏块列表中
-f 强迫执行检查,即使会把文件系统清空
-v 显示详情
-b superblock 使用更改的超级块儿
-B blocksize 当查找超级块儿时指定块儿大小
-j external_journal 设置外部日志的位置
-l bad_blocks_file 添加到坏块列表中
-L bad_blocks_file 设置坏块儿列表
df
df - report file system disk space usage,查看文件系统磁盘空间使用情况。
df [OPTION]... [FILE]...
-a, --all 显示所有文件系统
-B, --block-size=SIZE 在显示前通过SIZE来测量尺寸大小; e.g., ‘-BM‘ prints sizes in units of 1,048,576 bytes,
--direct 显示文件状态
--total 显示总结
-h, --human-readable 用可读性格式显示尺寸大小(e.g., 1K 234M 2G)
-H, --si 用1000的格式而不是1024的格式显示
-i, --inodes 显示节点信息
-k 同 --block-size=1K
-l, --local 仅显示本地文件系统
--no-sync 在得到有用信息之前不调用同步功能(default)
--output[=FIELD_LIST] 使用被FLELD_LIS定义的格式输出,或如果FIELD_LIST被忽略就输出所有区域。
-P, --portability 使用可移植性的系统接口POSIX输出格式
--sync 在取得信息前,调用同步功能
-t, --type=TYPE 限制文件系统列出的类型
-T, --print-type 打印文件系统类型
-x, --exclude-type=TYPE 不限制文件系统的列出类型