2009-09-16 05:30:00 apei830 阅读数 13963

    电脑D盘有问题,老是蓝屏,再重启老是检测D盘,报:The Volume is dirty.
    在网上查了一下解决方法。

    1)在"开始"-->"运行"下键入:cmd,进入msdos下,使用fsutil dirty query d: 来检查d盘,报:The Volume is dirty.再键入CHKNTFS /X D:,报该盘分区NTFS.然后直接在运行处运行这个命令,没发现有什么效果。

    2)重启计算机,发现以前的3个stage进行Check,现在变成5个stage 了。

    3)经过十来分钟的检测,进入系统。同样的方法进入msdos下,键入Chkdsk /f /r d:,会提示你:是否卸下所有的句柄,选Y,然后就分5个stage检测d盘(由于没了句柄,在check过程中D盘的东西不能用),结束后用 fsutil dirty query d:来测试发现结果:没有损坏。修复成功。

   4)重新启动,发现系统好了。

将英文方案附在后面:

what you're experiencing is what Windows refers to as "setting the dirty bit" and what you have to do is unset that bit. Every time Windows XP starts, autochk.exe is called by the kernel to scan all volumes to check if the volume dirty bit is set. If the dirty bit is set, autochk performs an immediate chkdsk /f on that volume. Chkdsk /f verifies file system integrity and attempts to fix any problems with the volume. It is usually caused by a hard shut down or a power loss during a read-right operation on that particular drive.

How do I fix it, you ask?

Well, that's easy. First click Start> Run> bring up a command prompt by typing in "CMD" and type " fsutil dirty query d: ". This queries the drive, and more than likely it will tell you that it is dirty. Next, type "CHKNTFS /X D:". The X tells Windows to NOT check that particular drive on the next reboot. At this time, manually reboot your computer, it should not do a Chkdsk and take you directly to Windows.

Once Windows has fully loaded, bring up another CMD prompt and type and now you want to do a Chkdsk manually by typing "Chkdsk /f /r d:". This should take you through 5 stages of the scan and will unset that dirty bit. Finally, type "fsutil dirty query d:" and Windows will confirm that the dirty bit is not set on that drive.


附fsutil 函数的简介:

Fsutil:dirty
通过查询,查看是否设置了卷的坏区。设置卷的坏区。当一个卷的坏区设置后,在下次重新启动计算机时 autochk 自动检查卷错误

语法
fsutil dirty {query|set} PathName
参数
query
查询坏区。
set
设置卷的坏区。
PathName
指定驱动器号(冒号分隔)、装入点或卷名。
注释
如果设置了卷的坏区,则表明文件系统可能处于不一致的状态。由于下述原因可以设置坏区:卷已联机且发生了明显的变化,或对卷
作了更改,但在更改写入到磁盘前关闭了计算机,或者因为在卷上检测到损坏。如果重新启动计算机时设置了坏区,则运行 chkdsk
可以验证卷的一致性。
每次启动 Windows XP 时,内核程序将调用 Autochk.exe 扫描所有的卷,以查看是否设置了卷的坏区。如果设置了坏区,则
autochk 将立即在卷上执行 chkdsk /f。chkdsk /f 将验证文件系统的完整性并试图修复卷上的任何故障。
范例
要查询驱动器 C 上的坏区,请键入:
fsutil dirty query C:
示例输出:
卷 C:已坏或
卷 C:未坏要设置驱动器 C 上的坏区,请健入:
fsutil dirty set C:

附chkntfs函数简介:

 Chkntfs


  显示或指定在启动计算机时是否调度自动系统检查针对文件分配表 (FAT)、FAT32 或 NTFS 卷运行。


  语法


  ChkntfsVolume:[...]


  chkntfs [/d]


  CHKNTFS /T[:time]/r/nCHKNTFS /X volume [...]


  chkntfs [/xVolume:[...]]


  chkntfs [/cVolume:[...]]


  参数


  volume:[...]


  必需参数。指定驱动器号(后跟冒号)、装入点或卷名。显示标识指定卷的文件系统的信息。如果已计划运行自动文件检查,则该参数会显示表明卷是否已遭损坏的消息(要求运行 chkdsk)。


  /d


  还原所有 chkntfs 默认设置,除了自动文件检查的倒计时之外。计算机启动时,默认操作是检查所有卷。


  /t[:Time]


  将 Autochk.exe 开始的倒计时时间更改为通过输入而指定的时间值(单位为秒)。如果未指定 :Time,则 /t 显示当前的递减计数时间。


  /xVolume: [...]


  计算机启动时不检查指定卷,即使该卷标记为需要 chkdsk。


  /cVolume: [...]


  计划当计算机启动时对指定卷的检查。

 

附chkdsk 函数简介:

chkdsk的全称是checkdisk,就是磁盘检查的意思,你无法也不必使用该文件,这个东西是当你的系统当掉或者非法关机的时候由系统来调用检查磁盘的。基于所用的文件系统,创建和显示磁盘的状态报告。Chkdsk 还会列出并纠正磁盘上的错误。如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。


  语法


  chkdsk [volume:][[Path] FileName] [/f] [/v] [/r] [/x] [/c] [/l[:size]]


  参数


  volume:


  指定驱动器号(冒号分隔)、装入点或卷名。


  [Path} FileName]


  指定需要 chkdsk 检查碎片整理的文件或文件集的位置和名称。使用通配符(* 和 ?)可以指定多个文件。


  /f


  修复磁盘上的错误。必须锁定磁盘。如果 chkdsk 无法锁定驱动器,则会显示一条消息,询问您是否希望在下次重新启动计算机时检查该驱动器。


  /v


  当检查磁盘时,显示所有目录中每个文件的名称。


  /r


  找到坏扇区并恢复可读取的信息。必须锁定磁盘。


  /x


  仅在 NTFS 上使用。如果必要,首先强制卸载卷。该驱动器的所有打开句柄都无效。/x 还包含了/f 的功能。


  /i


  仅随 NTFS 使用。对索引项执行充分检查,降低运行 chkdsk 的所用时间量。


  /c


  仅随 NTFS 使用。跳过文件夹结构中的周期检查,减少运行 chkdsk 所需的时间量。


  /l[:size]


  仅随 NTFS 使用。将日志文件的大小更改为由用户输入的大小。如果省略该参数,则 /l 会显示当前日志文件的大小。


  /?


  在命令提示符显示帮助。
 

2012-03-15 17:34:15 kofshower 阅读数 1117

1 定时方式: 定时回写是基于这样的原则:/proc/sys/vm/dirty_writeback_centisecs的值表示多长时间会启动回写线程,由这个定时器启动的回写线程只回写在内存中为dirty时间超过(/proc/sys/vm/didirty_expire_centisecs / 100)秒的页(这个值默认是3000,也就是30秒),一般情况下dirty_writeback_centisecs的值是500,也就是5秒,所以默认情况下系统会5秒钟启动一次回写线程,把dirty时间超过30秒的页回写,要注意的是,这种方式启动的回写线程只回写超时的dirty页,不会回写没超时的dirty页,可以通过修改/proc中的这两个值,细节查看内核函数wb_kupdate。

2 内存不足的时候: 这时并不将所有的dirty页写到磁盘,而是每次写大概1024个页面,直到空闲页面满足需求为止

3 写操作时发现脏页超过一定比例: 当脏页占系统内存的比例超过/proc/sys/vm/dirty_background_ratio 的时候,write系统调用会唤醒pdflush回写dirty page,直到脏页比例低于/proc/sys/vm/dirty_background_ratio,但write系统调用不会被阻塞,立即返回.当脏页占系统内存的比例超/proc/sys/vm/dirty_ratio的时候, write系统调用会被被阻塞,主动回写dirty page,直到脏页比例低于/proc/sys/vm/dirty_ratio


2012-04-11 13:43:21 JamesJiangCHN 阅读数 1818

驱动需要对应内核版本号,但是有的内核版本号带有dirty后缀,这是编译内核的时候自动添加的。

只要编译内核时,去掉自动添加版本的选项即可。

General setup  --->
[ ] Automatically append version information to the version string

2009-11-24 15:44:59 iteye_14490 阅读数 55
1. top ->'f' ->'v'

http://www.linuxforums.org/articles/using-top-more-efficiently_89.html.

Note: On 2.6.x, this field is always zero without unknown reason.

2.you can check the size of dirty pages by checking /proc/<pid>/smaps

http://www.linux.com/learn/tutorials/42048-uncover-the-meaning-of-tops-statistics
没有更多推荐了,返回首页