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

前端之家收集整理的这篇文章主要介绍了linux – USB驱动器在复制时将名称从/ dev / sdb更改为/ dev / sdc(并再次返回)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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

解决方法

您的配置有很多问题.

>将USB驱动器放入fstab是没有意义的. Fstab是一个绝大多数的静态列表
系统存储设备及其挂载点.您分配静态驱动器/分区
识别(基于控制器/设备地址)到静态安装点.也不
这些对于USB驱动器来说都是静态的.在你的第一个例子中,你有问题
如果你安装第二个硬盘到系统:它将成为/ dev / sdb,移动你的
当前USB驱动器到/ dev / sdc,从而在启动时破坏您的配置.
>此外,将驱动器置于fstab并使用“auto”选项告诉系统驱动器
将在启动时安装.如果由于任何原因在启动时断开驱动器,
您将在启动过程中使服务器失败,这是非常不受欢迎的
情况.如果驱动器对于系统运行不是必不可少的,那至少应该
没有“自动”选项.
>“nouser”选项是不必要的,它是默认选项. “同步”选项真的很棒
除非你真的知道自己在做什么,否则这个坏主意.不仅严重影响
性能,它还会导致驱动器的额外磨损,特别是闪存介质.
> fs_passno = 3(fstab的第六列)导致未定义的行为.有效值为0,
仅限1或2.
>将NTFS与用于备份Linux服务器的驱动器配合使用.你为什么这么做
那?所有Linux NTFS实现都不是最理想的,并且不足以运行任何Linux
子系统.您应该使用本机Linux文件系统,如Ext3.

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

>你有一个malpartitioned磁盘,即文件系统格式错误
参数,大于实际分区;或分区中的分区
table(逻辑大小)大于驱动器的物理大小.这是来自
您看到的“缓冲区I / O错误”.您应该考虑重置此磁盘
完全,包括分区表,并重新分区和重新格式化它
从头开始.
>您的磁盘中有一个坏扇区(“end_request:I / O错误”).你应该考虑一下
在磁盘上运行badblocks来检查.
>您的USB机箱运行不正常(来自“USB重置”).如果是的话
外接硬盘,应该使用独立的电源.那是5V 500mA
(有时)从USB端口提供的功能不足以保持硬盘的机制
开车跑.它也可能是过热,特别便宜的USB闪存驱动器.
> NTFS文件系统已损坏.使用ntfsfix修复它可能是可能的,但是你
应该再次记住,NTFS不是本机Linux文件系统.为了获得最佳效果
你需要一个Windows系统来正确检查这个分区(使用Scandisk).

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

猜你在找的Linux相关文章