命令使用
mount -t ext4 [-o 选项] [设备] [目录]
参数说明
-t 指定文件系统类型,如果不指定的话自动检测时文件系统类型并进行挂载
-r 以只读模式加载
-w 以可读写模式加载(默认)
-o <列表> 挂载选项列表,以英文逗号分隔
rw (默认) 以可读写模式加载
ro 以只读模式加载
atime 每次open和read等操作都更新inode的atime时间值,引起一个对磁盘的频繁写操作
noatime 读操作的atime时间值不会记录到inode中,能减轻读操作对磁盘的频繁写入
nodiratime 此选项只针对目录禁止进行atime更新,这样就可以使ls这样的命令不会更新目录的atime值
relatime (默认) 调整atime的更新粒度,有更新但不会很频繁
data=ordered (默认) 将日志模式设置为ordered
data=writeback 将日志模式设置为writeback
data=journal 将日志模式设置为journal
journal_async_commit 非同步地将记录写入日志
journal_checksum 为要写入日志的事务添加校验和
nosuid 禁止设置用户id和组id
nodev 不读文件系统上的字符或块设备
delalloc (默认) 所有的block分配推后到真正要写数据的时候,当有sync调用的时候,也就是这种时候
nodelalloc 关闭,块号会在page cache的时候分配,提前分配好block,是ext4的特性,大文件可加快速度
auto_da_alloc 通过rename进行文件替换、通过truncate后的写入进行文件替换时,不使用延迟分配功能,而是在当时立刻确保块
noauto_da_alloc rename和truncate处理时也使用延迟分配
async 异步模式;
sync 同步模式;
remount 重新挂载,一般用于修改参数
seclabel 什么含义?
inode_readahead_blks,调整预读索引表块大小,默认是32,调整为4096,可以看到IO吞吐量得到极大提升
测试数据:
默认值32
Run status group 0 (all jobs):
READ: bw=1213KiB/s (1243kB/s), 1213KiB/s-1213KiB/s (1243kB/s-1243kB/s), io=71.3MiB (74.8MB), run=60169-60169msec
WRITE: bw=1264KiB/s (1294kB/s), 1264KiB/s-1264KiB/s (1294kB/s-1294kB/s), io=74.3MiB (77.9MB), run=60169-60169msec
Disk stats (read/write):
sdb: ios=4432/5441, merge=119/22, ticks=37793/283390, in_queue=321188, util=99.75%
调整为4096
Run status group 0 (all jobs):
READ: bw=1786KiB/s (1829kB/s), 1786KiB/s-1786KiB/s (1829kB/s-1829kB/s), io=105MiB (110MB), run=60033-60033msec
WRITE: bw=1865KiB/s (1909kB/s), 1865KiB/s-1865KiB/s (1909kB/s-1909kB/s), io=109MiB (115MB), run=60033-60033msec
Disk stats (read/write):
sdb: ios=6590/7147, merge=110/19, ticks=23852/74207, in_queue=98053, util=99.61%
链接:EXT4参数优化及测试:https://blog.csdn.net/helloanthea/article/details/50464774
扩展
umount 卸载空闲的分区文件系统,如果正在使用会提示device is busy并卸载失败。
-l lazy,马上进行卸载动作,新进程无法读写分区,正在使用的进程在正常读写退出后才真正卸载完成,有风险。
-f force,强制卸载,但设备处于使用时也会失败。
fusermount -z -u /mnt/sdb1/,找出使用的进程杀掉并进行卸载。