linux下怎么更快向硬盘写入文件|在linux中给一个文本文件写内容的方法(三种)

linux下怎么更快向硬盘写入文件|在linux中给一个文本文件写内容的方法(三种)的第1张示图

⑴ 如何在linux下测试硬盘的读写速度

功能说明:显示与设定硬盘的参数。 语法:hdparm [-CfghiIqtTvyYZ][-a <快取分区>][-A <0或1>][-c ][-d <0或1>][-k <0或1>][-K <0或1>][-m <分区数>][-n <0或1>][-p ][-P <分区数>][-r <0或1>][-S <时间>][-u <0或1>][-W <0或1>][-X <传输模式>][设备] 补充说明:hdparm可检测,显示与设定IDE或SCSI硬盘的参数。 测试各硬盘读取速度判断硬盘故障 在服务端命令窗口中执行如下命令 hdparm -t /dev/hda (IDE硬盘) hdparm -t /dev/sda (SATA、SCSI、硬RAID卡阵列) hdparm -t /dev/md0 (软RAID设备) 测试结果在空载情况下应 >40M/s ,在负载情况下平均应 > 20M/s 为正常,如测试结果极低则需要进一步使用硬盘专用检测工具测试是否为硬盘故障。 参数: -a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。 -A<0或1> 启动或关闭读取文件时的快取功能。 -c 设定IDE32位I/O模式。 -C 检测IDE硬盘的电源管理模式。 -d<0或1> 设定磁盘的DMA模式。 -f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。 -g 显示硬盘的磁轨,磁头,磁区等参数。 -h 显示帮助。 -i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。 -I 直接读取硬盘所提供的硬件规格信息。 -k<0或1> 重设硬盘时,保留-dmu参数的设定。 -K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。 -m<磁区数> 设定硬盘多重分区存取的分区数。 -n<0或1> 忽略硬盘写入时所发生的错误。 -p 设定硬盘的PIO模式。 -P<磁区数> 设定硬盘内部快取的分区数。 -q 在执行后续的参数时,不在屏幕上显示任何信息。 -r<0或1> 设定硬盘的读写模式。 -S<时间> 设定硬盘进入省电模式前的等待时间。 -t 评估硬盘的读取效率。 -T 平谷硬盘快取的读取效率。 -u<0或1> 在硬盘存取时,允许其他中断要求同时执行。 -v 显示硬盘的相关设定。 -W<0或1> 设定硬盘的写入快取。 -X<传输模式> 设定硬盘的传输模式。 -y 使IDE硬盘进入省电模式。 -Y 使IDE硬盘进入睡眠模式。 -Z 关闭某些Seagate硬盘的自动省电功能。

⑵ Linux 连续地一兆一兆地往一个文件内写数据,会间歇性地出现写一兆变得很慢

写1M用1ms,你算算这个吞吐量是多少?1GB/s诶!你以为你硬盘有那么快?神奇了……[从1700M左右以后,每隔几M或十几M二十M就有一兆的写时间很长]——多稀奇阿,说明你硬盘的实际吞吐速率就只有每秒几M或十几M二十M那么多……所以,毛的设置也没用……设置太大了还会导致异常启动时FS日志无法重放,到时候你更惨……

⑶ linux 下通过什么方式传输文件速度最快,为什么

这是最快的方法,网卡是100M的理论可以达到100M如果是1000M网卡可以达到硬盘最快写入速度

⑷ Linux下 C编程 如何实现一分钟内向文件写入200M左右的数据(数据为数字和标点符号组成)。

弄一块较大的缓存,比如char *buf=char *malloc(50*1024*1024); //开50M内存;然后先像buf中写,达到50M后,再一次性整体从buf向文件写。写完重新从0用buf应该没法更快了。

⑸ Linux 下文件复制移动到移动存储(U盘,移动硬盘 etc)的速度要比 windows 下快吗

你在linux传完后立刻给个sync,这个命令完成的时间才是真正完成的时间。windows的话把写入缓存关掉再测。

⑹ 在linux中给一个文本文件写内容的方法(三种)

linux下更改来文件的方法自有很多如果单说方法而不计较写入的手段的话可以说是多不胜数一般的手段包括使用文本编辑器法这种方法是最直接也是最直观的了比如使用vim、nano、gedit等等文本编辑器都可以对文件进行写入(前提是有相应的权限)另一种方法可以使用重定向的方法我们也可以使用重定向的方法将内容写入的文件内(同样的,前提是有相应的权限,即当前用户对该文件有写入权限)这个方法就是将文件的输出重定向到另一个文件平常的我们的输出都是输出在标准输出上的(屏幕),我们只需要将原本输出的标准输出的内容重定向到文件里就可以了比如使用cat、echo、head、tail等等命令,然后通过>或者>>将内容重定向到文件里,前都在写入时会将文本文件中的内容清除,后者则会在原有文本文件的未尾追加内容当然也可以使用像是sed这种程序来改写文件内容也可以使用tee这个命令在写文件tee可以将标准输入的内容写入到文件内总之linux上将内容写入文本文件的方法有很多种在不考虑自己动手写程序的情况下,平常的手段基本上就是这些了

⑺ linux怎么把信息直接写入磁盘

如果想在Linux系统下,把信息直接写入磁盘,一般是采用文本编辑器vim来创建文件的方法写入的:vim file 是一个新文件,也可以是原有文件。这样的命令执行后将打开编辑器,显示文件file的内容。如果是一个新文件,底部左边会显示"file" [新文件]的字样,右边显示0,0-1表示当前光标所在行数和字符数。如果打开的是一个老文件,底部左边显示"file" 3L, 66C字样,表示文件名,当前光标所处行号,文件总字节数。文件中没有字符的地方会以字符~开头。文本编辑器vim的具体使用方法,楼主可以参考这篇文章:http://www.linuxprobe.com/linux-vim-commend.html更多Linux操作知识,楼主可以网络《Linux就该这么学》,希望能帮到楼主!

⑻ 为什么linux下读写移动硬盘速度比较慢

在Ubuntu系统下格式化下硬盘就好了。

⑼ 如何测试Linux磁盘的读写速度

功能说明:显示与设定硬盘的参数。语法:hdparm [-CfghiIqtTvyYZ][-a <快取分区>][-A <0或1>][-c ][-d <0或1>][-k <0或1>][-K <0或1>][-m <分区数>][-n <0或1>][-p ][-P <分区数>][-r <0或1>][-S <时间>][-u <0或1>][-W <0或1>][-X <传输模式>][设备]补充说明:hdparm可检测,显示与设定IDE或SCSI硬盘的参数。测试各硬盘读取速度判断硬盘故障在服务端命令窗口中执行如下命令hdparm -t /dev/hda (IDE硬盘)hdparm -t /dev/sda (SATA、SCSI、硬RAID卡阵列)hdparm -t /dev/md0 (软RAID设备)测试结果在空载情况下应 >40M/s ,在负载情况下平均应 > 20M/s 为正常,如测试结果极低则需要进一步使用硬盘专用检测工具测试是否为硬盘故障。参数:-a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。-A<0或1> 启动或关闭读取文件时的快取功能。-c 设定IDE32位I/O模式。-C 检测IDE硬盘的电源管理模式。-d<0或1> 设定磁盘的DMA模式。-f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。-g 显示硬盘的磁轨,磁头,磁区等参数。-h 显示帮助。-i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。-I 直接读取硬盘所提供的硬件规格信息。-k<0或1> 重设硬盘时,保留-dmu参数的设定。-K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。-m<磁区数> 设定硬盘多重分区存取的分区数。-n<0或1> 忽略硬盘写入时所发生的错误。-p 设定硬盘的PIO模式。-P<磁区数> 设定硬盘内部快取的分区数。-q 在执行后续的参数时,不在屏幕上显示任何信息。-r<0或1> 设定硬盘的读写模式。-S<时间> 设定硬盘进入省电模式前的等待时间。-t 评估硬盘的读取效率。-T 平谷硬盘快取的读取效率。-u<0或1> 在硬盘存取时,允许其他中断要求同时执行。-v 显示硬盘的相关设定。-W<0或1> 设定硬盘的写入快取。-X<传输模式> 设定硬盘的传输模式。-y 使IDE硬盘进入省电模式。-Y 使IDE硬盘进入睡眠模式。-Z 关闭某些Seagate硬盘的自动省电功能。

⑽ linux怎样提升磁盘读写性能

关于页面缓存的信息,可以用cat /proc/meminfo看到。其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache)。随着写入缓存页,Dirty 的值会增加。一旦开始把缓存页写入硬盘,Writeback的值会增加直到写入结束。Linux 用pdflush进程把数据从缓存页写入硬盘,查看有多少个pdflush进程cat /proc/sys/vm/nr_pdflush_threadspdflush的行为受/proc/sys/vm中的参数的控制/proc/sys/vm/dirty_writeback_centisecs (default 500):1/100秒, 多长时间唤醒pdflush将缓存页数据写入硬盘。默认5秒唤醒2个(更多个)线程。如果wrteback的时间长于dirty_writeback_centisecs的时间,可能会出问题。pdflush的第一件事是读取/proc/sys/vm/dirty_expire_centiseconds (default 3000)1/100秒。缓存页里数据的过期时间(旧数据),在下一个周期内被写入硬盘。默认30秒是一个很长的时间。第二件事是判断内存是否到了要写入硬盘的限额,由参数决定:/proc/sys/vm/dirty_background_ratio (default 10)百分值,保留过期页缓存(脏页缓存)的最大值。是以MmeFree+Cached-Mapped的值为基准的pdflush写入硬盘看两个参数:1 数据在页缓存中是否超出30秒,如果是,标记为脏页缓存;2 脏页缓存是否达到工作内存的10%;以下参数也会影响到pdflush/proc/sys/vm/dirty_ratio (default 40)总内存的最大百分比,系统所能拥有的最大脏页缓存的总量。超过这个值,开启pdflush写入硬盘。如果cache增长快于pdflush,那么整个系统在40%的时候遇到I/O瓶颈,所有的I/O都要等待cache被pdflush进硬盘后才能重新开始。对于有高度写入操作的系统dirty_background_ratio: 主要调整参数。如果需要把缓存持续的而不是一下子大量的写入硬盘,降低这个值。dirty_ratio: 第二调整参数。Swapping参数/proc/sys/vm/swappiness默认,linux倾向于从物理内存映射到硬盘缓存,保持硬盘缓存尽可能大。未用的页缓存会被放进swap区。数值为0,将会避免使用swapping100,将会尽量使用swapping少用swapping会增加程序的响应速度;多用swapping将会提高系统的可用性。如果有大量的写操作,为避免I/O的长时间等待,可以设置:$ echo 5 > /proc/sys/vm/dirty_background_ratio$ echo 10 > /proc/sys/vm/dirty_ratio文件系统数据缓冲需要频繁的内存分配。加大保留内存的值能提升系统速度和稳定。小于8G的内存,保留内存为64M,大于8G的设置为256M$ echo 65536 > /proc/sys/vm/min_free_kbytesI/O 调度器cat /sys/block/[disk]/queue/scheler4中调度算法noop anticipatory deadline [cfq]deadline : deadline 算法保证对既定的IO请求以最小的延迟时间。anticipatory: 有个IO发生后,如果又有进程请求IO,则产生一个默认6ms猜测时间,猜测下一个进程请求IO是干什么。这对于随机读取会造成较大的延时。对数据库应用很糟糕,而对于Web Server等则会表现不错。cfq: 对每个进程维护一个IO队列,各个进程发来的IO请求会被cfq以轮循方式处理,对每一个IO请求都是公平。适合离散读的应用。noop: 对所有IO请求都用FIFO队列形式处理。默认IO不会存在性能问题。改变调度器$ echo deadline > /sys/block/sdX/queue/scheler对于数据库服务器,deadline算法是推荐的。提高调度器请求队列的$ echo 4096 > /sys/block/sdX/queue/nr_requests有大量的读请求,默认的请求队列应付不过来,可以提高这个值。缺点是要牺牲一定的内存。为了增加连续读取的吞吐量,可以增加预读数据量。预读的实际值是自适应的,所以使用一个较高的值,不会降低小型随机存取的性能。$ echo 4096 > /sys/block/sdX/queue/read_ahead_kb如果LINUX判断一个进程在顺序读取文件,那么它会提前读取进程所需文件的数据,放在缓存中。服务器遇到磁盘写活动高峰,导致请求处理延迟非常大(超过3秒)。通过调整内核参数,将写活动的高峰分布成频繁的多次写,每次写入的数据比较少。这样可以把尖峰的写操作削平成多次写操作。以这种方式执行的效率比较低,因为内核不太有机会组合写操作。但对于繁忙的服务器,写操作将更一致地进行,并将极大地改进交互式性能。

/proc/sys/vm/dirty_ratio

控制文件系统的写缓冲区的大小,单位是百分比,表示占系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值。

/proc/sys/vm/dirty_background_ratio

控制文件系统的pdflush进程,在何时刷新磁盘。单位是百分比,表示系统内存的百分比,pdflush用于将内存中的内容和文件系统进行同步,比如说,当一个文件在内存中进行修改,pdflush负责将它写回硬盘.每当内存中的垃圾页(dirty page)超过10%的时候,pdflush就会将这些页面备份回硬盘.增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值:

/proc/sys/vm/dirty_writeback_centisecs

控制内核的脏数据刷新进程pdflush的运行间隔。单位是 1/100 秒。缺省数值是500,也就是 5 秒。如果你的系统是持续地写入动作,那么实际上还是降低这个数值比较好,这样可以把尖峰的写操作削平成多次写操作。如果你的系统是短期地尖峰式的写操作,并且写入数据不大(几十M/次)且内存有比较多富裕,那么应该增大此数值。该参数的设置应该小于dirty_expire_centisecs,但也不能太小,太小I/O太频繁,反而使系统性能下降。具体可能需要在生产环境上测试。据说1:6 (dirty_expire_centisecs : dirty_writeback_centisecs )的比例比较好。

/proc/sys/vm/dirty_expire_centisecs

声明Linux内核写缓冲区里面的数据多“旧”了之后,pdflush进程就开始考虑写到磁盘中去。单位是 1/100秒。缺省是 30000,也就是 30 秒的数据就算旧了,将会刷新磁盘。对于特别重载的写操作来说,这个值适当缩小也是好的,但也不能缩小太多,因为缩小太多也会导致IO提高太快。当然,如果你的系统内存比较大,并且写入模式是间歇式的,并且每次写入的数据不大(比如几十M),那么这个值还是大些的好。

/proc/sys/vm/vfs_cache_pressure

表示内核回收用于directory和inode cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache

/proc/sys/vm/min_free_kbytes

表示强制Linux VM最低保留多少空闲内存(Kbytes)。缺省设置:724(512M物理内存)

/proc/sys/vm/nr_pdflush_threads

表示当前正在运行的pdflush进程数量,在I/O负载高的情况下,内核会自动增加更多的pdflush进程。

/proc/sys/vm/overcommit_memory

指定了内核针对内存分配的策略,其值可以是0、1、2。0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。2, 表示内核允许分配超过所有物理内存和交换空间总和的内存(参照overcommit_ratio)。缺省设置:0

/proc/sys/vm/overcommit_ratio

如果overcommit_memory=2,可以过载内存的百分比,通过以下公式来计算系统整体可用内存。系统可分配内存=交换空间+物理内存*overcommit_ratio/100缺省设置:50(%)

/proc/sys/vm/page-cluster

表示在写一次到swap区的时候写入的页面数量,0表示1页,1表示2页,2表示4页。缺省设置:3(2的3次方,8页)

/proc/sys/vm/swapiness

表示系统进行交换行为的程度,数值(0-100)越高,越可能发生磁盘交换。更改:/etc/sysctl.conf

vm.dirty_ratio=40

sysctl -p查看:

find /proc/sys/vm -name dirty* -print | while read name; do echo $name ;cat ${name}; done

未经允许不得转载:山九号 » linux下怎么更快向硬盘写入文件|在linux中给一个文本文件写内容的方法(三种)

赞 (0)