A. linux文件系统的演变
说起文件系统的演变与发展,不得不从最早期的 Minix 操作系统开始说起。
Minix(MINI-UNIX) 是早期的一个迷你版本的 “类UNIX操作系统” ,由荷兰阿姆斯特丹自由大学计算机科学系的塔能鲍姆教授自行开发的可以与UNIX操作系统兼容的一个操作系统,因其小型,该操作系统被命名为 MINIX 。
MINIX 系统在设计之初,采用程序模块化的思想,将一众程序放在用户空间运行,而不是在操作系统的内核中运行。如 “文件系统” 和 “存储器管理” 等程序均是如此。
受 MINIX 操作系统的影响,早期的Linux操作系统也曾采用由塔能鲍姆教授开发的MINIX的文件系统。
然而,不只因为早期的 MINIX 操作系统并为真正意义上的开源软件(在保护着作的前提下进行收费),而且基于 MINIX 的内部使用16位的偏移量,使文件系统能够支持的最大空间只有64MB,支持的最大文件名为14字符,导致后来 Linux 操作系统转而开发出了 ext(Extended File System) 第一代可扩展文件系统。
ext(Extended File System) 为Linux系统最早的扩展文件系统,采用 “UNIX文件系统” 的元数据结构,克服了 “MINIX” 操作系统性能不佳的问题。
ext 文件系统采用 虚拟文件系统(VFS) ,最大可支持2GB的文件系统。与 MINIX 文件系统不同的是, ext 可以使用最高2GB的存储空间并同时处理255个字符的文件名。
但,在 ext 文件系统中,文件创建时生成的 inode 信息是不变的,这导致文件发生修改后 inode 中储存的文件时间戳并不会发生变化;而且 ext 并不会为文件妥善分配空间,磁盘上的多个文件四散分布,严重制约了文件系统的性能。
ext 文件系统推出后不久,其开发者便意识到 ext 文件系统中存在很大缺陷( inode不变性 和 文件空间碎片化 ),并在一年后推出了 ext2 (Second Extened File System) 第二代扩展文件系统,用来代替 ext 文件系统。
ext2 吸取了 “UNIX文件系统” 的众多优点,并且因其良好的可扩展性( 为系统在磁盘上存储的数据结构预留了很多空间提供给开发者使用 ),在20世纪90年代众多文件系统中脱颖而出。
众多新的特性, POSIX(可移植操作系统接口) 、 访问控制表 等都是在这一代扩展文件系统上实现的。直至今天, POSIX 仍被众多操作系统所沿用。
不仅如此, ext2 还在 ext 的基础上进行了完善,能够最大支持的单个文件达到 2TB。
ext2 文件系统与20世纪90年代的众多文件系统一样,将数据写入到磁盘的过程中如果发生系统奔溃或断电,极容易导致文件损坏或丢失。
正是因为类似 ext2 等同时期的一众文件系统,在遭遇系统奔溃或断电时会出现文件损坏或丢失。尽管 ext2 文件系统拥有开机后对文件系统中文件的一致性校验,但校验的过程极为耗时,且校验的过程中,操作系统上的任何卷组都是不可访问的。
然而 ext2 遗留的问题在 ext3(Third Extended File System) 中得到了解决。
ext3 文件系统采用日志记录的方式,记录下了操作系统运行中的所有事件,这意味着即便遇到操作系统非正常关机后也无须对文件系统进行校验,从而防止了文件系统中数据丢失的可能。
尽管 ext3 使用日志系统进行记录文件系统的变化,但这并没有影响 ext3 文件系统处理数据的速度。基于日志系统在磁盘上的优化,在 ext3 中数据的传输效率是高于 ext2 的,并且可以通过重新设置日志的级别来提升文件系统的性能。
其次, ext3 在设计之初就吸收了 ext2 的很多思想,这使得 ext2 文件系统迁移到 ext3 变得极为便利。事实上, ext3 可以在从 ext2 迁移 ext3 的过程中,无须进行文件系统资料的备份,且无须担心升级后的数据恢复问题。
也正是因为 ext3 设计之初沿用了众多 ext2 的功能,这使得 ext3 缺乏变通。例如, “inode的动态分配” 和 “可变块大小” 等问题并没有得到解决。不仅如此, ext3 文件系统在被挂载为写入时,无法对文件系统进行完整性校验。
第四代扩展文件系统( Fourth Extended File System, ext4 ) 是继 ext3 文件系统的后续版本,不仅支持 ext3 的日志文件体系 ,同样支持 大文件系统 ,不仅提高了文件系统对于存储碎片化的抵抗,而且改进了 inode固一化 的问题。
同时, ext4 文件系统在开发之初就考虑到很多问题,对众多问题的优化和改进也使得 ext4 拥有了众多新的特性。例如, 大文件系统 、 使用Extent文件存储的方式 、 预分配空间 、 延迟文件获取空间的时间 、 突破原有子目录限制 、 增加日志校验和 、 在线整理磁盘 、 文件系统快速检查 、 向下兼容其他ext文件系统`。
时至今天, ext4 文件系统已经成为Linux发行版默认使用的文件系统。
与 ext2 文件系统同一时期出现的,还有 xfs 文件系统。 xfs 文件系统是高性能的文件系统,最早在 IRIX 操作系统上开发,后期被移植到 Linux 操作系统上。现在所有的 Linux发行版 都支持 xfs 的使用。
相比 32位 Linux 的操作系统来说,64位 xfs 的文件系统能够支持的单个文件系统要远远超出 32位 操作系统。
xfs 对文件系统元数据提供了日志支持,当文件系统发生变化后,总是会保证源数据在数据块写入磁盘之前被写入日志中,磁盘中有一处缓冲区专门用来存放日志,从而不会影响正常的文件系统。
xfs 同样支持 “条带化分配” 。在条带化RAID阵列上创建 xfs 文件系统时,可以指定 条带化数据单元。通过配置条带化单元,使 数据分配、inode分配、日志等与RAID条带单元对齐,来提高文件系统的性能。
与 ext4 文件系统不同的是, xfs 文件系统还支持在线恢复。 xfs 文件系统提供了 xfsmp 和 xfsrestore 工具协助备份 xfs 文件系统中的数据。
以下为各文件系统的出现时间及特性:
参考自: https://zh.wikipedia.org/wiki/Ext4
B. Linux 文件系统管理
3.1Linux 文件系统类型
不同的操作系统使用不同类型的文件系统,为了与其他的操作系统兼容,以相互交换数据,
通常,每种操作系统都支持多种类型的文件系统。
Linux 中保存数据的磁盘分区通常采用EXT2/EXT3 文件系统,而实现虚拟存储的swap 分区
采用swap 文件系统,同时Linux 内核支持十多种不同的文件系统。
1. EXT2 和EXT3 文件系统
EXT(Extended File System,扩展文件系统)是专为Linux 设计的文件系统。在Linux 发展
早起,起到重要中用,但在稳定性、速度和兼容性方面存在缺陷。
EXT2 是为解决EXT 系统存在的缺陷而设计的可扩展、高性能的文件系统。
EXT3 是EXT2 的增强版本,在EXT2 的基础上,增加了文件系统的日志管理功能。
EXT3 文件系统具有的特点:
(1) 高效性:当系统因为异常断电或系统崩溃,重新启动时不需要检查文件系统的一致
性,只需要根据文件系统的日志,快速检测并恢复文件系统到正常状态。
(2) 数据的完整性:可以保持数据域文件系统状态的高度一致性,避免意外关机对文件
系统造成的破坏。
(3) 数据的存取速度更快:EXT3 文件系统的日志功能对磁盘驱动器的读/写进行优化,
使读/写系统的速度更快。
(4) 数据易于转换
2. swap 文件系统
用于Linux 的交换分区。在Linux 中,使用整个交换分区来提供虚拟内存。
3. VFAT 文件系统
VFAT 是Linux 对DOS、Windows 系统下的FAT 文件系统的统称。
4. NFS 文件系统
NFS 即网络文件系统,用在UNIX 或Linux 系统间通过网络进行文件共享。
5. SMB 文件系统
SMB 是Samba 的缩写,是另一种网络文件系统,用于在Windows 和Linux 系统之间共享文
件和打印机。
6. ISO9660 文件系统
CD-ROM使用的标准文件系统。
此外,Linux 支持的文件系统还有minix、msdos、ncpfs、hpfs、umsdos 等。
3.2 Linux 的目录和文件
1.Linux 系统的目录结构
Linux 文件系统由文件和目录组成,文件是专门用来存储数据的对象,目录是一种用来组织
文件和其他目录的容器。Linux 和DOS、Windows 系统一样,使用树形目录结构来组织和管
理文件。
1. / 文件系统的入口,最高一级目录;
2. /bin 基础系统所需要的命令位于此目录,是最小系统所需要的命令,如:ls, cp, mkdir等。
这个目录中的文件都是可执行的,一般的用户都可以使用。
3. /boot 包含Linux内核及系统引导程序所需要的文件,比如vmlinuz initrd.img文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;
4. /dev 设备驱动程序文件存储目录,比如声卡、磁盘等,是Linux文件系统的一个闪亮的特性-所有对象都是文件或目录。仔细观察这个目录你会发现hda1, hda2等,它们代表系统主硬盘的不同分区。
5. /etc 存放系统程序或者一般工具的配置文件。
如安装了apache2之后,配置文件在/etc/apache2/目录下。
/etc/init.d这个目录是用来存放系统或服务器以System V模式启动的脚本,这在以System V模式启动或初始化的系统中常见。
6. /home 普通用户默认存放目录Linux是多用户环境,所以每一个用户都有一个只有自己可以访问的目录(当然管理员也可以访问)。它们以/home/username的方式存在。这个目录也保存一些应用对于这个用户的配置,比如IRC, X等。
7. /lib 库文件存放目录这里包含了系统程序所需要的所有共享库文件,类似于Windows的共享库DLL文件。
8. /var 这个目录的内容是经常变动,因为存储的文件,如数据库,数据文件大小是在不断的增大。
/var/log这是用来存放系统日志的目录。
/var/www目录是定义Apache服务器站点存放目录;/var/lib用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地;
/var/log系统日志存放,分析日志要看这个目录的东西;
/var/spool打印机、邮件、代理服务器等假脱机目录;
9. /lost+found 在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
Linux应该正确的关机。但有时你的系统也可能崩溃掉或突然断电使系统意外关机。那么启动的时候fsck将会进行长时间的文件系统检查。Fsck会检测并试图恢复所发现的'不正确的文件。被恢复的文件会放置在这个目录中。所恢复的文件也许并不完整或并不合理,但毕竟提供了一些恢复数据的机会。
10. /media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录 ;CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,类似cdrom的目录。这个只有在最新的发行套件上才有. 10. /mnt /mnt这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom等目录。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这里也是可以的。比如光驱可以挂载到/mnt/cdrom。
11. /opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过./configure --prefix=/opt/,将软件安装到opt目录。
这个目录包含所有默认系统安装之外的软件和添加的包。
12. /proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。
这是系统中极为特殊的一个目录,实际上任何分区上都不存在这个目录。它实际是个实时的、驻留在内存中的文件系统。
13. /root Linux超级权限用户root的家目录;
14. /sbin 大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令;
这个目录和
/usr/sbin;/usr/X11R6/sbin或/usr/local/sbin目录是相似的; 我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的。
15. /tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。
许多程序在这里建立lock文件和存储临时数据。有些系统会在启动或关机时清空此目录。
16. /usr 这个是系统存放程序的目录,比如命令、帮助文件等。
这个目录下有很多的文件和目录。
当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。
如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。
C. Linux里面文件系统有哪些
Linux系统是现在非常受欢迎的操作系统,在Linux之中,一切都是文件,因为有很多操作都是依靠文件系统才可以完成的,而且文件系统可以满足用户正常的使用,那么Linux中常见的文件系统有哪些?为大家介绍一下。
总体来说,在Linux之中,系统能够支持的文件系统要比Windows系统多很多,达到数十种,所以说Linux系统也是非常出色的操作系统。Linux中常见的文件系统介绍:
1、Ext3:是一款日志文件系统,能够在系统异常的情况下避免文件系统资料丢失,并且能够修复数据的不一致以及错误,同时,当硬盘容量较大的时候,所需要的修复时间也会增长,无法保证百分之百资料不会丢失,将整体磁盘的每个写入动作细节预先记录,避免发生异常的时候可追踪到被中断的部分,尝试修补。
2、Ext4:是上一个的改进版本,是RHEL
6系统中的默认文件管理系统,支持存储容量达到了1EB,同时还能够无限多的子目录,另外文件系统能够批量分配block块,从而极大地提高了读写效率。
3、XFS:是一个高性能的日志文件系统,而且是RHEL
7中默认的文件管理系统,优势就是在于发生意外可以快速回复可能被破坏的文件,强大的日志功能只需要花费较低的计算和存储性能,最大支持存储容量18EB,几乎满足多种需求。
D. linux 文件系统扩容
因为不确定你使用文件系统系统的具体情况,不能给出具体的操作命令,以下过程供参考:
>已有分区/dev/sda6大小为1G,随着业务的增长,空间需求量变大,但又不能重新分区格式化,造成原有数据丢失。此时,可以使用resize2fs进行文件系统扩展,不影响分区中原有文件。
具体步骤:
(1)查看原分区大小为1G左右,并卸载分区
[root@station25
~]#
df
-Th
文件系统
类型
容量
已用
可用
已用%%
挂载点
/dev/sda2
ext4
9.7G
7.6G
1.6G
84%
/
tmpfs
tmpfs
354M
176K
354M
1%
/dev/shm
/dev/sda1
ext4
194M
25M
159M
14%
/boot
/dev/sr0
iso9660
2.9G
2.9G
0
100%
/var/ftp/rhel6
/dev/sda6
ext4
989M
18M
921M
2%
/aabb
[root@station25
~]#umont
/dev/sda6
(2)查看/dev/sda8分区的柱面范围
[root@station25
~]#
fdisk
-l
|grep
sda6
Disk
/dev/mapper/myvg01-haoren
doesn't
contain
a
valid
partition
table
/dev/sda6
1621
1748
1028128+
83
Linux
(3)使用fdisk名对sda6重新设定柱面范围
先删除分区sda6,然后新增分区sda6,将结束柱面调整为2100。
[root@station25
~]#
fdisk
-l|grep
sda6
Disk
/dev/mapper/myvg01-haoren
doesn't
contain
a
valid
partition
table
/dev/sda6
1621
2100
3855568+
83
Linux
(4)使用partprobe同步内存中分区信息
(5)使用e2fsck强制检查分区
[root@station25
~]#e2fsck
-f
/dev/sda6
(6)使用resize2fs重新定义文件系统大小
[root@station25
~]#
resize2fs
/dev/sda6
resize2fs
1.41.12
(17-May-2010)
Resizing
the
filesystem
on
/dev/sda6
to
963892
(4k)
blocks.
The
filesystem
on
/dev/sda6
is
now
963892
blocks
long.
(7)重新挂载分区,使用df
-TH
查看扩容后分区大小
[root@station25
~]#
df
-Th
文件系统
类型
容量
已用
可用
已用%%
挂载点
/dev/sda2
ext4
9.7G
7.6G
1.6G
84%
/
tmpfs
tmpfs
354M
176K
354M
1%
/dev/shm
/dev/sda1
ext4
194M
25M
159M
14%
/boot
/dev/sr0
iso9660
2.9G
2.9G
0
100%
/var/ftp/rhel6
/dev/sda6
ext4
3.7G
19M
3.5G
1%
/aabb
文件系统扩容成功。
E. linux 文件系统 是什么意思
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NANDFlash的固态硬盘)或分区上的文件的方法和数据结构;
即在存储设备上组织文件的方法。
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。