Linux文件系统管理

发布于 2017-10-06 · 本文总共 2409 字 · 阅读大约需要 7 分钟

Linux文件系统

Linux的文件系统为我们在硬盘中存储的0和1以及应用中使用的文件与目录之间搭建起了 一座桥梁;

查看Linux文件系统:

cat /proc/filesystems 
nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cpuset
nodev   tmpfs
nodev   devtmpfs
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   dax
nodev   bpf
nodev   pipefs
nodev   anon_inodefs
nodev   configfs
nodev   devpts
nodev   hugetlbfs
nodev   autofs
nodev   pstore
nodev   mqueue
        ext3
        ext2
        ext4
nodev   overlay

基本的Linux文件系统

Linux最初采用的是一种简单的文件系统,它模仿了Unix文件系统的功能;

ext文件系统

扩展文件系统(extended filesystem),简称ext; Linux系统中引入的最早的文件系统;

为Linux提供了一个基本的类Unix文件系统:

使用虚拟目录来操作硬件设备;

在物理设备上按定长的块来存储数据;

ext采用名为索引节点的系统来存放虚拟目录中所存储文件的信息;

索引节点在每个物理设备中创建一个单独的表(索引节点表)来存储这些文件的信息;

存储在虚拟目录中的每一个文件在索引节点表中都有一个条目;

ext文件系统中的extended部分来自其跟踪的每个文件的额外数据,包括:

  • 文件名;

  • 文件大小;

  • 文件属主;

  • 文件的属组;

  • 文件的访问权限;

  • 指向存有文件数据的每个硬盘块的指针;

inode table: 存储文件系统的所有inode编号的表格

block(数据区块): 存储的文件内容,也叫数据区块(data block),每个block都有自己的编号,Ext2支持的单位block容量仅为1k、2k、4k。

ext2文件系统

最早的ext文件系统有不少限制,比如文件大小不得超过2GB;

在Linux出现后不久,ext文件系统就升级到了ext2;

ext2文件系统扩展了索引节点表的格式来保存系统上每个文件的更多信息;

1.为文件添加了创建时间值、修改时间值和最后访问的时间值;

2.将允许的最大文件大小增加到2TB(在ext2的后期版本中增加到32TB),以容纳数据库服务器中常见的大文件;

3.改进了文件在数据块中存储的方式,防止‘碎片化’;通过将数据块分组,文件系统在读取文件时不需要为了数据块查找整个物理设备;

文件系统每次存储或者更新文件,都要用新信息来更新索引节点表;如果在存储文件和更新索引节点表之间发生什么,二者内容就不一致了; ext2文件系统容易在系统崩溃或者断电时损坏;

日志文件系统

日志文件系统为Linux系统增加了一层安全性;

先将文件的更改写入到临时文件(日志,journal)中,在数据成功写到存储设备和索引节点表之后,再删除对应的日志条目;

如果系统在数据被写入存储设备之前崩溃或者断电,日志文件系统下次会读取日志文件系统并处理上次留下的未写入的数据;

文件系统日志方法:

方法 描述
数据模式 索引节点和文件都会被写入日志;丢失数据风险低,但性能差
有序模式 只有索引节点数据会被写入日志;只有数据成功写入后才删除,在性能和安全之间取得良好的折衷
回写模式 只有索引节点数据会被写入日志,但不控制文件数据何时写入;丢失数据风险高

ext3文件系统

2001年,ext3文件系统被引入Linux内核,是几乎所有Linux发行版默认的文件系统;

采用和ext2文件系统相同的索引节点表结构,但给每个存储设备增加了一个日志文件,以将准备写入存储设备的数据先记入日志;

1.无法恢复误删的文件;

2.没有任何内建的数据压缩功能;

3.不支持加密文件;

ext4文件系统

ext4文件系统在2008受到Linux内核官方支持;现在已经是大多数流行的Linux发行版采用的默认文件系统;

ext4支持区段(extent)特性,区段在设备上按块分配空间,但在索引节点表中只保存起始块的位置;

Reiser文件系统

2001年,Hans Reiser为Linux创建了第一个称为ReiserFS的日志文件系统;

只支持回写日志模式——只把索引节点表数据写到日志文件;

支持在线调整已有文件系统的大小;

支持尾部压缩技术;

JFS文件系统

Journaled File System,日志化文件系统

IBM在1990年为其Unix衍生版AIX开发的,直到第二版才被移植到Linux环境;

采用有序日志方法,即只在日志中保存索引节点表数据;

XFS文件系统

SGI公司最初在1994年为其商业化的IRIX Unix系统开发XFS;2002年发布到适用于Linux环境的版本;

写时复制文件系统

COW(copy-on-write)利用快照兼顾了安全性和性能,如果要修改数据,会使用克隆或可写快照;

修改过的数据并不会直接覆盖当前数据,而是被放入文件系统中的另一个位置上;即使数据修改已经完成,之前的旧数据也不会被重写;

ZFS文件系统

由Sun公司于2005年研发,用于OpenSolaris操作系统;

Btrf文件系统

B树文件系统;

OpenSUSE Linux发行版将其作为默认文件系统;

操作文件系统

创建分区

fdisk /dev/sdb

创建文件系统

type mkfs.ext4 type mkfs.btrfs

mkfs.ext4 /dev/sdb1

mount -t ext4 /dev/sdb1 /mnt/my_partition

文件系统的检查与修复

fsck options filesystem

其他

列出目前系统所有被格式化的设备

blkid
/dev/vda1: UUID="105fa8ff-bacd-491f-a6d0-f99865afc3d7" TYPE="ext4" 

逻辑卷管理

逻辑卷管理布局

Linux的LVM




本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:邱文奇(qiuwenqi)的博客;
内容系本人学习、研究和总结,如有雷同,实属荣幸!
阅读次数:

文章评论

comments powered by Disqus


章节列表