我正在运行树莓派和拉斯普比(基于 Debian Wheezy 的 Linux)作为网络存储(网络附加存储)带有 USB 硬盘驱动器唯一的 USB 设备。
我面临的问题是外部 USB 硬盘/dev/sda
处于操作系统运行时自发发生的变化/dev/sdb
毫无理由地转到。然后在使用它时,/dev/sdb
它会跳回到/dev/sda
。复制大量数据时也会发生这种情况,导致 I/O 错误。有时需要几个小时,否则只需几分钟即可发生这种情况。 – 这真是太可怕了!
当然,在向这里寻求帮助之前,我考虑过在网上寻找线索。我发现的唯一有趣的东西是以下链接:Linux:记住 USB 设备的路径– 我按照所述步骤操作,并在此处发布命令的输出,
命令 1:udevadm info -q all -p $(udevadm info -q path -n /dev/sda)
输出 1:
P: /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/host0/target0:0:0/0:0:0:0/block/sda
N: sda
S: disk/by-id/usb-WDC_WD25_00JS-40NGB2_8DC88D250088-0:0
S: disk/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-scsi-0:0:0:0
E: DEVLINKS=/dev/disk/by-id/usb-WDC_WD25_00JS-40NGB2_8DC88D250088-0:0 /dev/disk/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-scsi-0:0:0:0
E: DEVNAME=/dev/sda
E: DEVPATH=/devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/host0/target0:0:0/0:0:0:0/block/sda
E: DEVTYPE=disk
E: ID_BUS=usb
E: ID_INSTANCE=0:0
E: ID_MODEL=00JS-40NGB2
E: ID_MODEL_ENC=00JS-40NGB2\x20\x20\x20\x20\x20
E: ID_MODEL_ID=2336
E: ID_PART_TABLE_TYPE=dos
E: ID_PATH=platform-bcm2708_usb-usb-0:1.3:1.0-scsi-0:0:0:0
E: ID_PATH_TAG=platform-bcm2708_usb-usb-0_1_3_1_0-scsi-0_0_0_0
E: ID_REVISION=0100
E: ID_SERIAL=WDC_WD25_00JS-40NGB2_8DC88D250088-0:0
E: ID_SERIAL_SHORT=8DC88D250088
E: ID_TYPE=disk
E: ID_USB_DRIVER=usb-storage
E: ID_USB_INTERFACES=:080650:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=WDC_WD25
E: ID_VENDOR_ENC=WDC\x20WD25
E: ID_VENDOR_ID=152d
E: MAJOR=8
E: MINOR=0
E: SUBSYSTEM=block
E: UDEV_LOG=3
E: UDISKS_ATA_SMART_IS_AVAILABLE=1
E: UDISKS_PARTITION_TABLE=1
E: UDISKS_PARTITION_TABLE_COUNT=1
E: UDISKS_PARTITION_TABLE_SCHEME=mbr
E: UDISKS_PRESENTATION_NOPOLICY=0
E: USEC_INITIALIZED=7853442
命令2:udevadm info -q all -p $(udevadm info -q path -n /dev/sdb)
输出 2:
P: /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/host2/target2:0:0/2:0:0:0/block/sdb
N: sdb
S: disk/by-id/usb-WDC_WD25_00JS-40NGB2_8DC88D250088-0:0
S: disk/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-scsi-0:0:0:0
E: DEVLINKS=/dev/disk/by-id/usb-WDC_WD25_00JS-40NGB2_8DC88D250088-0:0 /dev/disk/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-scsi-0:0:0:0
E: DEVNAME=/dev/sdb
E: DEVPATH=/devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/host2/target2:0:0/2:0:0:0/block/sdb
E: DEVTYPE=disk
E: ID_BUS=usb
E: ID_INSTANCE=0:0
E: ID_MODEL=00JS-40NGB2
E: ID_MODEL_ENC=00JS-40NGB2\x20\x20\x20\x20\x20
E: ID_MODEL_ID=2336
E: ID_PART_TABLE_TYPE=dos
E: ID_PATH=platform-bcm2708_usb-usb-0:1.3:1.0-scsi-0:0:0:0
E: ID_PATH_TAG=platform-bcm2708_usb-usb-0_1_3_1_0-scsi-0_0_0_0
E: ID_REVISION=0100
E: ID_SERIAL=WDC_WD25_00JS-40NGB2_8DC88D250088-0:0
E: ID_SERIAL_SHORT=8DC88D250088
E: ID_TYPE=disk
E: ID_USB_DRIVER=usb-storage
E: ID_USB_INTERFACES=:080650:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=WDC_WD25
E: ID_VENDOR_ENC=WDC\x20WD25
E: ID_VENDOR_ID=152d
E: MAJOR=8
E: MINOR=16
E: SUBSYSTEM=block
E: UDEV_LOG=3
E: UDISKS_ATA_SMART_IS_AVAILABLE=1
E: UDISKS_PARTITION_TABLE=1
E: UDISKS_PARTITION_TABLE_COUNT=1
E: UDISKS_PARTITION_TABLE_SCHEME=mbr
E: UDISKS_PRESENTATION_NOPOLICY=0
E: USEC_INITIALIZED=2425648913
所以我尝试了这个技巧并将该行添加BUS=="usb", ATTR{serial}=="WDC_WD25_00JS-40NGB2_8DC88D250088-0:0", NAME="sda"
到文件中/etc/udev/rules.d/10-usb-serial
,但不幸的是,这也没有解决问题。
我不知道这是否重要,但使用的外部 USB 存储由两个相同的 256 GB 硬盘组成磁盘阵列受控情况下。这意味着它看起来像一个 512 GB 大小的操作系统硬盘。
现在我期待得到任何帮助和/或建议。——提前谢谢!
答案1
由于我没有其他想法来解决这个问题,我只是使用另一根 USB 电缆将外部硬盘驱动器连接到 Raspberry Pi,现在它可以正常工作 O_o 似乎之前使用的 USB 电缆有某种缺陷。
显然,外置硬盘之前曾短暂地与 Raspberry Pi 失去连接。操作系统当时认为已连接了另一块硬盘。否则我无法想象会出现这个问题。
所以这个问题现在正式解决了!
答案2
考虑到它是 USB 连接的驱动器,它在启动时在/dev/sda
和之间切换/dev/sdb
并不奇怪;它在正常会话期间这样做会让人怀疑 RasPi 侧或物理硬盘本身的 USB 配置有问题(更多的是控制机箱中 2 个硬盘的固件)。话虽如此,请查看此链接UUID,这适用于 Linux EXT3 分区,从您的输出判断,您有dos
分区(更可能是 FAT32 分区),但您应该能够使用命令从 USB HDD 中提取 UUID,blkid
如中所述文章。以下是 一些如果您在获取 DOS 分区的 UUID 时遇到问题,请参见链接。
恕我直言,如果你将 RasPi 用作 NAS,并且 USB 驱动器不会被移动(即 USB 驱动器全天候插入 RasPi),我建议将 HDD 从 USB 外壳中拉出并直接将其连接到 RasPi(如果可以的话),这将避免这些 I/O 问题并为您的磁盘提供更高的吞吐量(SATA 速度与 USB2 速度)。
希望能够幫忙。