ext4文件系统挂载参数说明

在Linux系统中通过mount命令为云盘挂载ext4文件系统时,您可以根据业务需求使用不同的挂载参数,以满足您对文件系统的数据安全性和性能要求。

对数据安全性和性能都有一定要求

如果您对文件系统的数据安全性和性能都有一定要求,建议在mount命令中不指定任何参数挂载文件系统。

sudo mount /dev/vdb /media/test
说明

该命令会默认携带defaults参数,defaults默认包括rwatimesuiddevexecasyncautonouserdelallocdata=orderedbarriernodiscard,不再需要指定其他挂载参数。

该方式默认启用写入缓存、读写权限控制、文件系统日志等功能,这些功能可以提高文件系统的性能和稳定性,并提供数据的完整性和保护。

  • 优点:对文件系统的数据安全性和性能都有一定的保障。

  • 缺点:

    • 对文件系统数据安全性的影响:由于部分用户数据、文件系统元数据仍在内存中未写入硬盘,因此会存在数据丢失的风险。

    • 对文件系统性能的影响:

      • 自动更新每个文件的访问时间,以及读写数据时文件系统会自动记录元数据操作日志,这会导致文件系统自身产生大量的写操作。

      • 当数据从内存写入磁盘时才真正分配数据块,会有一次周期性的大块写操作,导致数据块分配延迟。

数据安全性要求较高

如果您非常重视文件系统的数据安全,建议在mount命令中使用rwatimesyncbarrierdata=journal参数挂载文件系统。

sudo mount -o rw,atime,sync,barrier,data=journal /dev/vdb /media/test
重要

使用atimesyncbarrierdata=journal参数会影响文件系统的性能,请您谨慎选择。具体影响程度与实例的规格、用户业务模型相关,例如:

  • 对于大量读写IO密集型业务,因为每一次IO操作都需要写入硬盘,因此性能受到的影响大于一般业务。

  • 由于硬件写入速度本身的限制,使用该参数后,HDD规格的实例(例如HDD本地盘)受到的性能影响也会大于SSD规格的实例(例如SSD云盘、ESSD云盘)。

当软件发生崩溃或者硬件发生宕机时,如果使用默认的挂载方式(不指定挂载参数)挂载文件系统,由于部分用户数据、文件系统元数据仍在内存中未写入硬盘,因此会有数据丢失的风险。如果使用本场景推荐的挂载参数,任何内存的修改都会同步写入磁盘,并且所有数据第一时间保序写入文件系统日志。即使发生低概率异常,文件系统恢复后也能保证数据不丢失。

  • 优点:数据安全性高,可以确保系统宕机后文件系统的数据不丢失。

  • 缺点:文件系统性能下降。

性能要求较高

如果您非常重视性能,建议在mount命令中使用defaultsnoatimenodiratimenobarriernodelallocdata=writeback参数挂载文件系统。

sudo mount -o defaults,noatime,nodiratime,nobarrier,nodelalloc,data=writeback /dev/vdb /media/test
重要

使用noatimenodiratimenobarrierdata=writeback参数会降低数据的安全性,请您谨慎选择。

  • 当使用默认的挂载方式(不指定挂载参数)挂载文件系统时,每一次文件操作都会被记录,数据块会延迟分配,对性能产生影响。

  • 当使用sync将内存中的数据操作写入硬盘时,文件系统会在一次性提交所有日志的同时进行数据块分配,这个操作有可能会导致一个周期性的IO毛刺。对于传统的HDD介质来说,该功能会减少硬盘写入的次数,在提升性能的同时也能延长介质寿命,但对于闪存盘SSD这类高效的存储介质来说,并不会对性能带来明显提升。

因此建议您使用该方式挂载文件系统,通过关闭数据块延迟分配、关闭日志保序写入内存、减少对硬盘的写操作等方式,来提升文件系统的性能。

  • 优点:文件系统性能高(高吞吐低延迟)。

  • 缺点:数据安全性较低,宕机后可能丢失文件系统的数据。

说明
  • 您可以通过cat /proc/fs/ext4/vdb/options命令获取当前云盘完整的挂载参数,通过man mount命令或者参考fstab说明查看详细的参数说明。

  • 如果您还有其他方面的需求,可以根据挂载参数的含义及作用,合理使用mount命令。