复制时USB驱动器将名称从/ dev / sdb更改为/ dev / sdc(并再次返回)?

Modified on: Sun, 07 Jul 2019 09:40:03 +0800

我有一个USB驱动器安装到Ubuntu 9.04服务器安装中的文件夹。安装选项存储在/ etc / fstab中,以便于安装/拆卸:

# <file system> <mount point>   <type>  <options>          <dump>  <pass>   
/dev/sdb1       /media/backup   ntfs    nouser,auto,sync    0      3 

(我已经将部分更改为UUID以查看它是否有助于解决问题)。备份一直在每天早上将文件复制到磁盘而没有问题。刚才我尝试将其中一个文件复制到另一个文件夹,结果出现错误:

cp: reading `ts01-even.tgz': Input/output error

我发现问题发生了,因为/ dev / sdb已更改为/ dev / sdc。如果我挂载/ dev / sdc并尝试再次复制该文件,驱动器将更改回/ dev / sdb。将fstab文件系统从/ dev / sdX1更改为UUID后,行为没有区别。此外,我曾经能够列出tarball的文件内容,但现在尝试这样做会导致上述行为。有什么想法吗?

更新:

运行备份脚本并将备份存储在usb HD上不会产生问题,但列出tarball中的文件会产生问题。以下是tarball命令“tar -ztf FILENAME”期间syslog的输出:

Jul  3 15:09:14 ts01 kernel: [308398.446893] Buffer I/O error on device sdc1, logical block 786433
Jul  3 15:09:28 ts01 ntfs-3g[7468]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Jul  3 15:09:28 ts01 ntfs-3g[7468]: Failed to read of MFT, mft=5 count=1 br=-1: Input/output error
Jul  3 15:09:28 ts01 kernel: [308412.404579] Buffer I/O error on device sdc1, logical block 786433
Jul  3 15:09:29 ts01 ntfs-3g[7468]: Unmounting /dev/sdc1 (FreeAgent Drive)
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Version 2009.2.1 external FUSE 27
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Mounted /dev/sdb1 (Read-Write, label "FreeAgent Drive", NTFS 3.1)
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Cmdline options: rw,sync
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Mount options: rw,sync,silent,allow_other,nonempty,relatime,fsname=/dev/sdb1,blkdev,blksize=4096
Jul  3 15:10:01 ts01 /USR/SBIN/CRON[29630]: (root) CMD ([ -x /usr/sbin/update-motd ] && /usr/sbin/update-motd 2>/dev/null)
Jul  3 15:11:35 ts01 kernel: [308539.310031] usb 1-1: reset high speed USB device using ehci_hcd and address 38
... (log repeated with a different address)
Jul  3 15:12:47 ts01 kernel: [308611.790038] usb 1-1: reset high speed USB device using ehci_hcd and address 38
Jul  3 15:12:49 ts01 kernel: [308613.148837] end_request: I/O error, dev sdb, sector 84779391
Jul  3 15:12:49 ts01 kernel: [308613.148871] Buffer I/O error on device sdb1, logical block 10597416
... (log repeated with a different address, with the logical block incrementing by 1 each time)
Jul  3 15:12:49 ts01 kernel: [308613.149090] Buffer I/O error on device sdb1, logical block 10597425
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread error reading '/TS01_Backup/ts01-even.tgz' at offset 177012736: 131072 <> -1: Input/output error
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread error reading '/TS01_Backup/ts01-even.tgz' at offset 177012736: 4096 <> -1: Input/output error

我找到了一些似乎相关的东西,但是按照说明书并没有证明富有成效:FreeAgent Drives

作者:,jobu1324

最佳答案

您的配置似乎有很多问题。

  1. 将USB驱动器放入fstab是没有意义的。 Fstab是一个绝大多数的静态列表
    系统存储设备及其挂载点。您分配静态驱动器/分区
    识别(基于控制器/设备地址)到静态安装点。也不
    这些对于USB驱动器来说都是静态的。在你的第一个例子中,你有问题
    如果你安装第二个硬盘到系统:它将成为/ dev / sdb,移动你的
    当前的USB驱动器到/ dev / sdc,因此在启动时会破坏您的配置。

  2. 此外,将驱动器置于fstab并使用“auto”选项告诉系统驱动器
    将在启动时安装。如果由于任何原因在启动时断开驱动器,
    您将在启动过程中使服务器失败,这是非常不受欢迎的
    情况。如果驱动器对于系统运行不是必不可少的,那至少应该
    没有“自动”选项。

  3. “nouser”选项是不必要的,它是默认选项。 “同步”选项真的很棒
    除非你真的知道自己在做什么,否则这个坏主意。不仅严重影响
    性能,它还会导致额外的驱动器磨损,特别是闪存介质。

  4. fs_passno = 3(fstab的第六列)导致未定义的行为。有效值为0,
    仅限1或2个。

  5. 将NTFS与用于备份Linux服务器的驱动器一起使用。你为什么这么做
    那?所有Linux NTFS实现都不是最理想的,并且不足以运行任何Linux
    子系统。您应该使用本机Linux文件系统,例如Ext3。

  6. 醇>

    从您的内核日志中,我可以预测其中一个或多个可能有效:

    1. 您有一个malpartitioned磁盘,即文件系统格式错误
      参数,大于实际分区;或分区中的分区
      table(逻辑大小)大于驱动器的物理大小。这是来自
      您看到的“缓冲区I / O错误”。您应该考虑重置此磁盘
      完全,包括分区表,并重新分区和重新格式化它
      从头开始。

    2. 您的磁盘中存在坏扇区(“end_request:I / O错误”)。你应该考虑一下
      在磁盘上运行badblocks进行检查。

    3. 您的USB机箱运行不正常(来自“USB重置”)。如果是的话
      外接硬盘,应该使用独立的电源。那是5V 500mA
      (有时)从USB端口提供的功能不足以保持硬盘的机制
      开车跑。它也可能是过热的,特别便宜的USB闪存驱动器。

    4. NTFS文件系统已损坏。使用ntfsfix修复它可能是可能的,但是你
      应该再次记住 NTFS不是本机Linux文件系统。为了获得最佳效果
      你需要一个Windows系统来正确检查这个分区(使用Scandisk)。

    5. 醇>

      其他建议包括:停止使用NTFS并选择本机Linux文件系统,从fstab中删除该条目,手动将磁盘装入备份脚本的一部分,在完成后卸载它并使用UUID或文件系统标签来引用磁盘。

作者:Juliano

相关问答

添加新评论