文件系统创建与管理及其文件系统挂载


ext3文件系统和ext2文件系统的区别?  

     在某些时候,某个用户在linux系统上写入数据,这时系统正好断电或者系统核心出现错误,写入的数据仅有inode table和datablock而已,可能会导致之前写过的数据没有保存在磁盘上。而当系统重启后,系统可能会对没有保存的数据进行数据恢复。但是,由于系统并不知道是哪个文件不完整,因此会遍历整个文件系统中inode,来查看block是否完整。不过,当某个文件的数据太大时,数据的恢复时间可能会比较长,而这对于服务器来说是不利的。所以在这种情况下,也就诞生了日志文件系统。

    日志文件系统的工作原理:在文件系统中,专门存在一块区域叫做日志记录区域,当某个文件的数据正在写入时,会将这个文件的inode写入到日志记录区中,然后在将实际数据写入到block中;如果此时断电导致数据没有保存,那么当系统重启后,系统就只会去日志记录区中查找那些不完整的文件的inode号,然后在专门对这些不完整的文件来进行数据恢复或者删除掉。如果是正常写入,那么就会将日志记录区域中的inode重新写入到元数据区中。


而在ext3文件系统中就含有日志文件系统,ext2文件系统中没有,这也就是ext3和ext2文件系统的根本区别所在。


文件系统的创建和管理

在之前的文章中我们介绍了许多中文件系统,那么如何创建一个文件系统呢?

在创建一个文件系统前,首先磁盘要进行分区,得到多个分区后,在对每一个分区进行高级格式化,就得到了一个文件系统。所以说高级格式化分区的结果就是一个文件系统的产生。

创建文件系统使用mkfs命令

语法格式  mkfs [-t FSTYPE] 装置名

-t FSTYPE:指定文件系统类型

不过,mkfs是一个综合命令,可以来创建各种各样的文件系统,不过我们最常见的文件系统还是ext2/ext3/exit4文件系统,而linux系统中有一个专门的命令是用来创建ext2/ext3/exit4文件系统的,那就是mke2fs命令。所以我们有必要掌握这个命令。

语法格式为:mke2fs [option] 装置名

-j:指定文件系统类型为ext3,默认文件系统类型为ext2

-b size:指定block大小,默认为4096Bytes,可以取值为1024Bytes,2048Bytes,4096Bytes

-L:指定分区卷标(也就是文件系统的名字)

-m #:指定预留给超级用户的块数百分比

-i #:指定多少个字节的空间创建一个inode号,默认为8192。

-I #:指定inode的大小,在centos6上默认为256byte。该大小必须是2的次幂。

-N #:指定inode的数量

-F:强制创建文件系统

-E:用户指定额外的文件系统属性

文件系统创建与管理及其文件系统挂载 

另一种创建文件系统的方法

mkfs.ext2 /dev/sda4等同于mkfs -t ext2 /dev/sda4

mkfs.ext3 /dev/sda4等同于mkfs -t ext3 /dev/sda4

mkfs.ext4 /dev/sda4等同于mkfs -t ext4 /dev/sda4


创建好了文件系统之后,可以使用blkid来查看指定分区的相关属性。

语法格式:

blkid 装置名 :用来查看指定分区的LABLE、UUID以及文件系统类型

文件系统创建与管理及其文件系统挂载


当然还有另一个命令也可以开查看某个分区的卷标,那就是e2lable

语法格式:e2lable 装置名(必须写) : 用来查看或重新设定某个分区的卷标

文件系统创建与管理及其文件系统挂载

当然创建了文件系统之后,如果想修改某个文件系统的属性,可以使用tune2fs来修改

tune2fs用来修改文件系统的属性

语法格式 tune2fs [option] 装置名(必须写)

-j:在不破坏原有数据的情况下,将ext2升级为ext3

-L LABLE:设定或修改分区卷标

-m #:调整预留超级用户的块数百分比

-r #:指定留给超级用户的块数

-o :设定默认挂载选项

-c #:指定文件系统挂载多少次以后进行自检,0或-1表示关闭此功能

-i #:指定每次挂载多少天之后进行自检,0或-1表示关闭此功能

-l :显示Superblock中的信息


dumpe2fs:显示文件系统的完整信息

要显示一个完整的文件系统的信息,使用dumpe2fs来查看

语法格式:

dumpe2fs 装置名:不加任何选项,表示显示文件系统的所有信息

dumpe2fs -h 装置名:只显示文件系统中Superblock的信息


在此之前提过,当linux系统在运作时,如果突然断电或者系统核心出现故障,都会导致我们的数据在硬盘和内存中不一致,有可能会导致文件系统的错乱。当文件系统错乱时,我们可以使用fsck命令来修复

语法格式:fsck [option] 装置名 用来检查并修复linux文件系统

-t FSTYPE:指定修复文件系统的类型。

-a:自动修复。

-r: 交互式修复错误。即手动修复错误。


另外e2fsck用来专门检查并修复ext2/ext3/ext4文件系统的

语法格式:e2fsck [option] 装置名

-p:自动修复

-y:对问题自动回答为yes。

-f:强制检查



文件系统挂载--mount命令

上述主要介绍了如何创建文件系统以及如何查看文件系统的相关属性信息。

我们知道当某个分区经过高级格式化后就得到了文件系统,那么试想一想,文件系统能不能直接拿来使用或访问?

答案是当然不行,因为访问一个文件系统,必须要有一个入口,通过这个入口,用户才可以访问这个文件系统的内容,而这个入口可以通过挂载文件系统来得到。

所谓挂载就是就是将某个文件系统挂载在某个目录下,这个目录就是文件系统的入口或者叫做挂载点,通过这个入口,用户可以直接访问文件系统里的内容。

将某个文件系统挂载在目录下,可以使用mount命令

语法格式 :mount [option] [-o option] 装置名  挂载点或目录

这里的装置名可以是设备名、UUID、LABLE

注意:UUID是这个文件系统的标识,具有唯一性,可以用来挂载;

      LABLE是文件系统的名称或者卷标,也可以用来挂载。

挂载点指的是目录

注意:对于挂载点来说,不能被其他进程使用,否则可能挂载不进去;

如果这个挂载点下还有文件,挂载后,源文件会暂时隐藏,直到文件系统卸除后,才会显示出来

option:

-a:表示挂载/etc/fstab中所有的文件系统,/etc/fstab是文件系统的配置文件,稍后介绍。   

-n:默认情况下,mount命令每挂载一个文件系统,都会把挂载的文件系统的信息写入到/etc/mtab

    文件中;使用-n表示不把文件系统挂载的信息写入到此文件中去。

-t FSTYPE:指定正在挂载的文件系统的类型,如果没有使用此选项,mount会调用blkid获取的对应的

    文件系统类型

-r :只读挂载,常用于挂载光盘,也就是说挂载后的文件系统只具有读的权限

-w:读写挂载

-L:使用LABLE来挂载

-o option:指定额外的挂载选项,亦指的是文件系统上启动的属性    

    remount:重新挂载,此时不需要指定挂载点(挂载点为原来的)

    ro:挂载系统为只读

    rw:挂载系统为读写

    defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async

文件系统创建与管理及其文件系统挂载

使用mount命令来挂载本地回环设备

所谓本地回环设备就是通过软件来模拟硬件设备

语法格式:mount -o loop  设备名 挂载点

可以使用dd命令来创建一个大文件

语法格式:dd if=数据源  of=数据存储目标 bs=# count=#

if:指定数据源

of:指定数据存储目

bs=#:指定block的大小

count=#:指定这样的bs的数量

seek=#:创建数据时,跳过的空间大

文件系统创建与管理及其文件系统挂载


文件系统创建与管理及其文件系统挂载

当然,当某个文件系统不需要访问时,可以使用umount来卸载掉

所谓卸载就是将某个文件系统和当前系统的某个目录的关联关系移除掉

语法格式:umount 装置名或者挂载点

注意:卸载的时候,装置名或者挂载点没有被其他进程使用才可以正常卸载。

 

当卸载的时候,系统提示处于繁忙状态,说明其他进程可能在访问该文件系统或者挂载点,而此时又不知道又不知道哪个进程在访问,就可以使用fuser来查看。

语法格式:fuser [-vkm] 文件名  ---- 用来验证进程正在使用的文件和套接字

-v:查看某文件正在运行的进程

-k -m:杀死正在访问该挂载点的所有进程

文件系统创建与管理及其文件系统挂载



swap交换分区

我们知道cpu所读取的数据都是来自内存,当内存的空间不足时,为了让后续的程序可以正常运行,系统会把一些在内存中不常用的程序与数据放到swap空间中去,这样多余的内存空间可以让给后续的程序使用。

使用mkswap命令来格式化分区成为swap类型的分区

语法格式:mkswap [-L LABLE] 装置名

-L LABLE:指定swap分区的卷标

注意:在使用fdisk创建交换分区的时候,要调整分区类型为82,默认为83。


交换分区的启动和关闭

swapon [-a] 装置名-------启动交换分区

    -a:将启动/etc/fstab文件中所有定义的交换设备

swapoff 装置名 ---------关闭交换分区


创建swap分区以后,可以使用free来查看swap空间情况

free:查看物理内存和交换内存的使用情况2

    -m:以MBytes的形式显示

文件系统创建与管理及其文件系统挂载

其中buffers为缓冲区,cache为缓存


当某个文件系统挂载后,当系统重启后,此时的文件系统要重新挂载后才能使用,这是为什么呢?

因为这些文件系统没有写入到文件系统的配置文件中去,默认情况下,linux系统初始化时会自动将

/etc/fstab中的所有定义的文件系统进行挂载。只要是没有写入到/etc/fstab中的文件系统,默认是不会自动挂载的。

文件系统的配置文件是/etc/fstab

文件系统创建与管理及其文件系统挂载

这个文件的格式为:

第一栏:要挂载的设备,可以是UUID,也可以是LABLE

第二栏:挂载点

第三栏:文件系统类型

第四栏:挂载的额外属性

第五栏:转储频率(就是表示文件系统多久做一次备份,0表示不作备份,1表示每天做一次备份)

第六栏:文件系统的检测次序,0表示不作检测,/目录为1