• failed command: READ FPDMA QUEUED


    问题:

    failed command: READ FPDMA QUEUED
    failed command: WRITE FPDMA QUEUED

    1、关闭NCQ
    vim /boot/efi/EFI/centos/grub.cfg
    添加libata.force=noncq到启动项中;
    linuxefi /vmlinuz-3.10.0-957.21.3.el7.x86_64 root=UUID=2b1d8b5c-9ca4-4c87-a8b4-5db40d08ac4f ro
    crashkernel=auto biosdevname=0 net.ifnames=0 console=ttyS0,115200 LANG=en_US.UTF-8 libata.force=noncq
    2、重启
    reboot

    3、延伸1

    SCSI/SATA information:
    [root@liberty ~]# lsscsi -kk
    [0:0:0:0]    disk    ATA      WDC WD10EURX-73F 01.0  /dev/sda
    [1:0:0:0]    disk    ATA      WDC WD30EFRX-68A 80.0  /dev/sdb
    [4:0:0:0]    disk    ATA      WDC WD5003ABYX-0 01.0  /dev/sdc
    [5:0:0:0]    cd/dvd  Optiarc  DVD RW AD-5280S  1.01  /dev/sr0
    [6:0:0:0]    disk    hp       USB Flash Drive  3276  /dev/sdd
    
    Controller:
    [root@liberty ~]# lspci | grep SATA
    00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)

    4、延伸2

    fsck -f /dev/sdc  磁盘修复
    echo 1 > /sys/block/sdb/device/queue_depth  关闭对应磁盘NCQ特性
    smartctl -a /dev/sdb |grep -i crc 检测CRC错误
    cat /proc/scsi/scsi    查看磁盘信息
    
    smartctl -a <device> 检查该设备是否已经打开SMART技术。 
    smartctl -s on <device> 如果没有打开SMART技术,使用该命令打开SMART技术。 
    smartctl -t short <device> 后台检测硬盘,消耗时间短; 
    smartctl -t long <device> 后台检测硬盘,消耗时间长; 
    smartctl -C -t short <device> 前台检测硬盘,消耗时间短; 
    smartctl -C -t long <device> 前台检测硬盘,消耗时间长。其实就是利用硬盘SMART的自检程序。 
    smartctl -X <device> 中断后台检测硬盘。 
    smartctl -l selftest <device> 显示硬盘检测日志。 
    smartctl -l error <device> 显示硬盘错误汇总。
    smartctl -i /dev/sda 确认硬盘是否打开了SMART支持。
    smartctl -H /dev/sda  查看硬盘的健康状况。
    smartctl -A   /dev/sda  查看硬盘的详细信息 ls
    read error rate 错误读取率:记录读取数据错误次数(累计),非0值表示硬盘已经或者可能即将发生坏道;
    throughput performance 磁盘吞吐量:平均吞吐性能(一般在进行了人工 Offline S.M.A.R.T. 测试以后才会有值。);
    spinup time 主轴电机到达要求转速时间(毫秒/秒);
    start/stop count 电机启动/停止次数(可以当作开机/关机次数,或者休眠后恢复,均增加一次计数。全新的硬盘应该小于10);
    reallocated sectors count 重分配扇区计数:硬盘生产过程中,有一部分扇区是保留的。当一些普通扇区读/写/验证错误,
    则重新映射到保留扇区,挂起该异常扇区,并增加计数。随着计数增加,io性能骤降。
    如果数值不为0,就需要密切关注硬盘健康状况;如果持续攀升,则硬盘已经损坏;
    如果重分配扇区数超过保留扇区数,将不可修复;
    seek error rate 寻道错误率:磁头定位错误一次,则技术增加一次。如果持续攀升,则可能是机械部分即将发生故障;
    seek timer performance 寻道时间:寻道所需要的时间,越短则读取数据越快,但是如果时间增加,则可能机械部分即将发生故障;
    power-on time 累计通电时间:指硬盘通电时间累计值。(单位:天/时/分/秒。休眠/挂起不计入?新购入的硬盘应小于100hrs);
    spinup retry count 电机启动失败计数:电机启动到指定转速失败的累计数值。如果失败,则可能是动力系统产生故障;
    power cycle count 电源开关计数:每次加电增加一次计数,新硬盘应小于10次;
    g-sensor error rate 坠落计数:异常加速度(例如坠落,抛掷)计数——磁头会立即回到landing zone,并增加一次计数;
    power-off retract count 异常断电次数:磁头在断电前没有完全回到landing zone的次数,每次异常断电则增加一次计数;
    load/unload cycle count 磁头归位次数:指工作时,磁头每次回归landing zone的次数。(ps:流言说某个linux系统——不点名,
    在使用电池时候,会不断强制磁头归为,而磁头归位次数最大值约为600k次,所以认为linux会损坏硬盘,实际上不是这样的);
    temperature 温度:没嘛好说的,硬盘温度而已,理论上比工作环境高不了几度。(sudo hddtemp /dev/sda)
    reallocetion event count 重映射扇区操作次数:上边的重映射扇区还记得吧?这个就是操作次数,成功的,失败的都计数。
    成功好说,也许硬盘有救,失败了,也许硬盘就要报废了;
    current pending sector count 待映射扇区数:出现异常的扇区数量,待被映射的扇区数量。 
    如果该异常扇区之后成功读写,则计数会减小,扇区也不会重新映射。读错误不会重新映射,只有写错误才会重新映射;
    uncorrectable sector count 不可修复扇区数:所有读/写错误计数,非0就证明有坏道,硬盘报废;
     
    SSD固态硬盘多出的Attributes 信息解释:
    其中我们比较关注的有以下四点:
    1、Media_Wearout_Indicator:    使用耗费,100为没有任何耗费; 表示SSD上NAND的擦写次数的程度,初始值为100,随着擦写次数的增加,
    开始线性递减,递减速度按照擦写次数从0到最大的比例。一旦这个值降低到 1,就不再降了,
    同时表示SSD上面已经有NAND的擦写次数到达了最大次数。这个时候建议需要备份数据,以及更换SSD。
    上面的机器为099,按照100滴血算,目前只耗了1滴血
    2、Reallocated_Sector_Ct: 出厂后产生的坏块个数, 初始值为100,如果有坏块,从1开始增加,每4个坏块增加1
    这里offer的机器还没有任何坏块
    3、Host_Writes_32MiB: 已写32MiB, 每写入65536个扇区raw value增加1。这个扇区还是个数量单位,512字节
    比如:这块盘就是 1284966 * 65536 * 512 = 40155.1875 GB
    注意到每个机器都有一块盘写的比较少,这块盘就是hotspare盘。
    每台机器我们有7块ssd盘。其中6块盘做的raid 5,第7块盘做的hotspare。
    4、Available_Reservd_Space: SSD上剩余的保留空间, 初始值为100,表示100%,阀值为10,递减到10表示保留空间已经不能再减少
    
    backblaze 建议主要监控以下五个属性的 RAW_VALUE 的值:
    SMART 5 – Reallocated_Sector_Count.
    SMART 187 – Reported_Uncorrectable_Errors.
    SMART 188 – Command_Timeout.
    SMART 197 – Current_Pending_Sector_Count.
    SMART 198 – Offline_Uncorrectable.
    如果发现该五项值中有大于0的情况,就说明该磁盘应该对它进行持续的关注了,
    因为根据其经验这5项S.M.A.R.T.指标的增长表明即将发生磁盘驱动器故障。
    
    smart参数详解:
    https://www.cnblogs.com/york-hust/p/3380928.html
    badblocks命令可以检查磁盘装置中损坏的区块。执行该指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。
    语法:badblocks [-svw][-b ][-o ][磁盘装置][磁盘区块数][启始区块]
    参数:  -b 指定磁盘的区块大小,单位为字节。
            -o 将检查的结果写入指定的输出文件。
            -s 在检查时显示进度。
            -v 执行时显示详细的信息。
            -w 在检查时,执行写入测试。 
    [磁盘装置] 指定要检查的磁盘装置。
    [磁盘区块数] 指定磁盘装置的区块总数。 
    [启始区块] 指定要从哪个区块开始检查。
    
    badblocks -s//显示进度  -v//显示执行详细情况  /dev/sda1
    # badblocks -s -v /dev/sda
    正在检查从 0 到 244198583的块
    Checking for bad blocks (read-only test): ^C0.10% done, 0:04 elapsed
    Interrupted at block 272896 
    $badblocks -s//显示进度 -w//以写去检测 -v//显示执行详细情况 /dev/sda2
    # badblocks -w -s -v /dev/sda1
    Checking for bad blocks in read-write mode
    From block 0 to 25607577
    Testing with pattern 0xaa: ^C0.73% done, 0:03 elapsed
    注意,不能以写的方式检测已经挂载的硬盘
    
    
    使用hdparm测试   
    测试硬盘读写速度
    # hdparm -Tt /dev/sda
    /dev/sda:
    Timing cached reads:   
    1918 MB in  2.00 seconds = 959.62 MB/sec
    Timing buffered disk reads:  184 MB in  3.00 seconds =  61.26 MB/sec 
    
    hdparm可检测,显示与设定IDE或SCSI硬盘的参数。
  • 相关阅读:
    【习题 6-10 UVA
    【习题 6-9 UVA
    【习题 6-8 UVA
    【NOIP2016练习】T1 挖金矿(二分答案)
    O(n)求1-n的逆元
    【NOIP2016练习】T1 string (计数)
    【NOIP2016练习】T2 跑跑步 (数论)
    【NOIP2016练习】T3 tree (树形DP)
    【CF679B】Theseus and labyrinth(数学,贪心)
    【NOIP2016练习】T2 旅行(树形DP,换根)
  • 原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/14042332.html
Copyright © 2020-2023  润新知