抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

文章时效性提示

本文发布于 1075 天前的文章,且 476 天未更新,部分信息可能已有发展或改变!

前言

最近入了N1的坑,刷了armbian系统,做emby服务器,然后就遇到了个大坑

我的移动硬盘是东芝的,自带休眠,一开始正常使用,过后就发现会掉盘

体现在ls命令上 ls: reading directory '.': Input/output error

使用lsblk命令发现sda会变sdb,sdc….

百度一圈,都是在/etc/fstab 加入uuid识别挂载,但是这样不管用啊,还是掉盘,一掉盘得手动重新挂载或者重启n1

暂时解决办法

由于不知道到底是什么原因导致的,只能写个小脚本解决,

  • 思路:

    每30秒ls检查一次,ls失败则自动挂载

  • 添加uuid识别挂载:

    1. lsblk查看分区信息

      如图,我的是sda-sda1,挂载点是/mnt/sda1

    2. blkid查看分区uuid

      如图,我硬盘标签的是LABEL="TOSHIBA" uuid是 UUID="D282A4C682A4B081" 格式是 TYPE="ntfs"

    3. 在fstab添加uuid识别挂载
      编辑 /etc/fstab vi编辑或者winscp登陆n1直接编辑文件
      最后一行加入 uuid= /mnt/sda1 auto defaults 0 0
      保存后执行mount -a

  • 制作shell脚本自动检测掉盘重新挂载

    1. 检测脚本
      automount.sh ->不会用的可以创建txt文本然后修改为.sh,再用winscp上传至/home下

      1
      2
      3
      4
      5
      6
      7
      8
      #!/bin/bash
      if ls '/mnt/sda1' 2>&1
      then
      echo "mounted"
      else
      echo "not mounted"
      mount -a
      fi
    2. 每30秒执行
      由于cron定时任务最低1分钟执行,所以得再写一个脚本停顿30秒再执行
      keep.sh

      1
      2
      3
      4
      5
      6
      #!/bin/bash
      date +'%Y-%m-%d %H:%M:%S'
      /home/automount.sh
      sleep 30
      date +'%Y-%m-%d %H:%M:%S'
      /home/automount.sh

    上面两个脚本都放在/home下

    1. 赋予权限

      1
      2
      chmod 777 -R /home/automount.sh
      chmod 777 -R /home/keep.sh
    2. 添加定时任务
      执行crontab -e

      1
      2
      	* * * * * /home/keep.sh >> /home/log.txt
      0 0 12 * * ? /home/autoremove.sh

      如果不想保留日志,用下面的写法

      1
      * * * * * /home/keep.sh

      完成后执行crontab -l可以查看定时任务

ps

用这种方法我的硬盘由于是自带休眠的,所以依旧能正常休眠

但是

过段时间它会被ls指令唤醒,只是唤醒后不会转,只有指示灯亮,硬盘应该不会由过多磨损

评论

留下的你见解