web-dev-qa-db-ja.com

SDカードの転送が非常に遅い

MySQL-DBの一部をクラス6 SDカードにコピーしました。 45分かかりました。転送のため。同じマシンでXPを使用すると、数分で実行されます。Win7を別のマシンに転送しても問題ありません。すべてのフォーラムとソースを確認しましたが、実際に関連するものは見つかりませんでした。

5
Axel Larator

デフォルトのIOスケジューラがこれらのフラッシュドライブを適切に処理しない場合があります。便利だとわかった解決策の1つは、ioschedulerをdeadlineまたはnoopに切り替えるだけです。たとえば、

 $ lsscsi 
 [0:0:0:0]ディスクATA Toshiba THNS128G AGLA /dev/sda
[1:0:0:0] cd/dvd HL-DT -ST DVDRAM GT30N LT09 /dev/sr0
[7:0:0:0] disk Patriot Memory PMAP /dev/sdb
Sudo tee /sys/block/sdb/queue/scheduler << EOF
deadline
EOF
 $ cat /sys/block/sdb/queue/scheduler
noop [deadline] cfq 

データ転送を再試行します。これを行う必要がありますbeforeデバイスをロードします。

それがあなたのために働くなら、すべてのUSBホットプラグデバイスのためにこれを自動的に設定するためにudevルールを作成することができます。これは少し前に書いたもので、少し面倒です。MMCカードではなく、USBホットプラグデバイスのみをスキャンするので、メディアがどのクラスにあるかを判断するには、udev出力を調べる必要があります。それに応じて調整します。

ATを進めてください、これがあなたのためにうまくいかない場合、あなた自身のリスクは、あなたがデバッグするまで

Sudo tee /lib/udev/rules.d/100-usb-scheduler.rules << EOF
# custom udev rule: 28.10.11

# adjust io scheduler for usb block devices: queue/scheduler
# scheme based on "persistent storage rules"

# forward scsi device event to corresponding block device
ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change"

ACTION!="add|change", GOTO="persistent_storage_end"
SUBSYSTEM!="block", GOTO="persistent_storage_end"

# skip rules for inappropriate block devices
KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*", GOTO="persistent_storage_end"

# ignore partitions that span the entire disk
TEST=="whole_disk", GOTO="persistent_storage_end"

# for partitions import parent information
ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*"

# USB storage devices suffer from performance issues unless they use deadline io scehduler
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", \
        RUN="/bin/sh -c 'echo deadline > /sys/$env{DEVPATH}/queue/scheduler'"

LABEL="persistent_storage_end"
EOF
 $ Sudo chmod + x /lib/udev/rules.d/100-usb-scheduler.rules
3
ppetraki