在Linux系统中通过mount
命令为云盘挂载ext4文件系统时,您可以根据业务需求使用不同的挂载参数,以满足您对文件系统的数据安全性和性能要求。
对数据安全性和性能都有一定要求
如果您对文件系统的数据安全性和性能都有一定要求,建议在mount
命令中不指定任何参数挂载文件系统。
sudo mount /dev/vdb /media/test
该命令会默认携带defaults
参数,defaults
默认包括rw
、atime
、suid
、dev
、exec
、async
、auto
、nouser
、delalloc
、data=ordered
、barrier
和nodiscard
,不再需要指定其他挂载参数。
该方式默认启用写入缓存、读写权限控制、文件系统日志等功能,这些功能可以提高文件系统的性能和稳定性,并提供数据的完整性和保护。
优点:对文件系统的数据安全性和性能都有一定的保障。
缺点:
对文件系统数据安全性的影响:由于部分用户数据、文件系统元数据仍在内存中未写入硬盘,因此会存在数据丢失的风险。
对文件系统性能的影响:
自动更新每个文件的访问时间,以及读写数据时文件系统会自动记录元数据操作日志,这会导致文件系统自身产生大量的写操作。
当数据从内存写入磁盘时才真正分配数据块,会有一次周期性的大块写操作,导致数据块分配延迟。
数据安全性要求较高
如果您非常重视文件系统的数据安全,建议在mount
命令中使用rw
、atime
、sync
、barrier
、data=journal
参数挂载文件系统。
sudo mount -o rw,atime,sync,barrier,data=journal /dev/vdb /media/test
使用atime
、sync
、barrier
和data=journal
参数会影响文件系统的性能,请您谨慎选择。具体影响程度与实例的规格、用户业务模型相关,例如:
对于大量读写IO密集型业务,因为每一次IO操作都需要写入硬盘,因此性能受到的影响大于一般业务。
由于硬件写入速度本身的限制,使用该参数后,HDD规格的实例(例如HDD本地盘)受到的性能影响也会大于SSD规格的实例(例如SSD云盘、ESSD云盘)。
当软件发生崩溃或者硬件发生宕机时,如果使用默认的挂载方式(不指定挂载参数)挂载文件系统,由于部分用户数据、文件系统元数据仍在内存中未写入硬盘,因此会有数据丢失的风险。如果使用本场景推荐的挂载参数,任何内存的修改都会同步写入磁盘,并且所有数据第一时间保序写入文件系统日志。即使发生低概率异常,文件系统恢复后也能保证数据不丢失。
优点:数据安全性高,可以确保系统宕机后文件系统的数据不丢失。
缺点:文件系统性能下降。
性能要求较高
如果您非常重视性能,建议在mount
命令中使用defaults
、noatime
、nodiratime
、nobarrier
、nodelalloc
、data=writeback
参数挂载文件系统。
sudo mount -o defaults,noatime,nodiratime,nobarrier,nodelalloc,data=writeback /dev/vdb /media/test
使用noatime
、nodiratime
、nobarrier
和data=writeback
参数会降低数据的安全性,请您谨慎选择。
当使用默认的挂载方式(不指定挂载参数)挂载文件系统时,每一次文件操作都会被记录,数据块会延迟分配,对性能产生影响。
当使用
sync
将内存中的数据操作写入硬盘时,文件系统会在一次性提交所有日志的同时进行数据块分配,这个操作有可能会导致一个周期性的IO毛刺。对于传统的HDD介质来说,该功能会减少硬盘写入的次数,在提升性能的同时也能延长介质寿命,但对于闪存盘SSD这类高效的存储介质来说,并不会对性能带来明显提升。
因此建议您使用该方式挂载文件系统,通过关闭数据块延迟分配、关闭日志保序写入内存、减少对硬盘的写操作等方式,来提升文件系统的性能。
优点:文件系统性能高(高吞吐低延迟)。
缺点:数据安全性较低,宕机后可能丢失文件系统的数据。
您可以通过
cat /proc/fs/ext4/vdb/options
命令获取当前云盘完整的挂载参数,通过man mount
命令或者参考fstab说明查看详细的参数说明。如果您还有其他方面的需求,可以根据挂载参数的含义及作用,合理使用
mount
命令。