
Ubuntu日本語フォーラム

ログインしていません。
はじめまして
過去ログを探してみましたが解決方法がわからなかったので教えてください
rootにてhdparmを使用して、udma2からudma6に変更しようと下記のコマンドを発行するとエラーになってしまいます
# hdparm -X udma6 /dev/sda1
/dev/sda1:
setting xfermode to 70 (UltraDMA mode6)
SG_IO: bad/missing ATA_16 sense data:: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
HDIO_DRIVE_CMD(setxfermode) failed: Input/output error
udma1に変更しようとしてもだめで、結局、まったく変更が聞かない状態なのですが、
どこが問題なのでしょうか?
関係があるかどうかわかりませんが、
make menuconfig で
<M> VIA82CXXX chipset support
となっています
<----以下ハードウエア情報ーーーーー>
Ubuntu 8.04.2, kernel 2.6.24-19-server
# hdparm -I /dev/sda1
/dev/sda1:
ATA device, with non-removable media
Model Number: Maxtor 4R080L0
Serial Number: R2A6VVAE
Firmware Revision: RAMC1TU0
Standards:
Used: ATA/ATAPI-7 T13 1532D revision 0
Supported: 7 6 5 4
Configuration:
Logical max current
cylinders 16383 4047
heads 16 16
sectors/track 63 255
--
CHS current addressable sectors: 16511760
LBA user addressable sectors: 160086528
LBA48 user addressable sectors: 160086528
device size with M = 1024*1024: 78167 MBytes
device size with M = 1000*1000: 81964 MBytes (81 GB)
Capabilities:
LBA, IORDY(can be disabled)
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
Advanced power management level: disabled
Recommended acoustic management value: 192, current value: 192
DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5 udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_VERIFY command
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
Advanced Power Management feature set
SET_MAX security extension
* Automatic Acoustic Management feature set
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
not supported: enhanced erase
HW reset results:
CBLID- below Vih
Device num = 0 determined by CSEL
Checksum: correct
#lshw
*-ide
description: IDE interface
product: VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE
vendor: VIA Technologies, Inc.
physical id: 11.1
bus info: pci@0000:00:11.1
logical name: scsi0
logical name: scsi1
version: 06
width: 32 bits
clock: 33MHz
capabilities: ide pm bus_master cap_list emulated
configuration: driver=pata_via latency=32 module=pata_via
*-disk:0
description: ATA Disk
product: Maxtor 4R080L0
vendor: Maxtor
physical id: 0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: RAMC
serial: R2A6VVAE
size: 76GiB (81GB)
capabilities: partitioned partitioned:dos
configuration: ansiversion=5 signature=46ba31df
*-volume:0
description: EXT3 volume
vendor: Linux
physical id: 1
bus info: scsi@0:0.0.0,1
logical name: /dev/sda1
logical name: /
logical name: /dev/.static/dev
version: 1.0
serial: 9b733c1b-91a1-4028-91af-2a9310b3c9cc
size: 74GiB
capacity: 74GiB
capabilities: primary bootable journaled extended_attributes large_files huge_files recover ext3 ext2 initialized
configuration: created=2008-07-28 05:17:40 filesystem=ext3 modified=2009-10-15 11:13:22 mount.fstype=ext3 mount.options=rw,relatime,errors=remount-ro,data=ordered mounted=2009-10-15 11:13:22 state=mounted
<-----ハードウエア情報はここまでーーーーー>
オフライン
hdparmの対象はドライブ単位のはずなので、/dev/sda1ではなく、/dev/sdaではないでしょうか。
また、明確にそうと判る文書が見つけられなかったのですが、なんとなくmountしているHDDの状態を変えることはできないような気がします。
hdparm -X
するときドライブはマウントされていますでしょうか。
基本的にはPCのBIOSで設定しておけば問題無いような気がしますが、hdparmで設定する必要がありましたら、上記のあたりを確認してみて下さい。
オフライン
回答ありがとうございます
BIOSの起動画面を確認したら、
/dev/sdaはUDMA2
/dev/sdbはUDMA5
と表示されていました
BIOSの設定項目ではDMAのモードを指定できないため、UDMA2をUDMA5に変更することはできないのかな。
でも、
UDMA2からUDMA1へ変更できないし、
/dev/sdbはUDMA5と表示されていたのにもかかわらず、hdparmではudma2に*が付いていました
なぜ、遅い速度に変更できないのか、また、UDMA5で認識されていたのにUDMA2なのかがよくわかりません
モード変更出来そうな/dev/sdbをアンマウントしてhdparmを実施してみましたが、なぜか変更できませんでした
/dev/sdaは/に割り当てていますが、こちらの設定に引きずられるのでしょうか?
<-----以下、/dev/sdbへのhdparm実行ログ------->
root@neptune:~# df
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext3 75G 29G 42G 41% /
varrun tmpfs 252M 896K 251M 1% /var/run
varlock tmpfs 252M 0 252M 0% /var/lock
udev tmpfs 252M 52K 252M 1% /dev
devshm tmpfs 252M 0 252M 0% /dev/shm
/dev/sdb1 ext3 74G 29G 42G 41% /backup
/dev/sdc1 ext3 232G 64G 156G 30% /mnt/USBHD
root@neptune:~# umount /dev/sdb1
root@neptune:~# df
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext3 75G 29G 42G 41% /
varrun tmpfs 252M 896K 251M 1% /var/run
varlock tmpfs 252M 0 252M 0% /var/lock
udev tmpfs 252M 52K 252M 1% /dev
devshm tmpfs 252M 0 252M 0% /dev/shm
/dev/sdc1 ext3 232G 64G 156G 30% /mnt/USBHD
root@neptune:~# hdparm -X udma5 /dev/sdb
/dev/sdb:
setting xfermode to 69 (UltraDMA mode5)
SG_IO: bad/missing ATA_16 sense data:: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
HDIO_DRIVE_CMD(setxfermode) failed: Input/output error
オフライン
ドライバというか、SATAコントローラの仕様によっては動的なUMDAモードの変更がきかないことがしばしばあるのですが、
・hdparm -t したら遅かったのでUDMAモードを上位のものにしたい
・なんとなく気分が悪いのでUDMAモードを切り替えたい
のどちらでしょうか。前者であれば、先にBIOSアップデートやHDDのジャンパピンの確認をしてみた方がいいと思います。運が良ければそれだけで正しく機能するようになると思います。後者であれば、ハードウェアベンダを呪いながら新しいハードウェアに買い換えることをお勧めします(非道)。
ただ、4R080L0はコントローラのPHYによっては相性らしき何かがあり、何をどうやってもUDMA2から上げられないという症状があったような記憶があります。きわめて個人的な見解としては、「そろそろそのHDDは寿命が近いハズなので(3年は使っている筈です)、素直に交換してしまいましょう」というのが推奨コースです。
オフライン
回答ありがとうございます
モードを変更したい理由は、UDMA5をサポートしているHDDなのにUDMA2で利用しているのはもったいないし、体感的にも遅いからです
あと、SATAではなく昔のIDE接続(パラレルケーブル)のHDDです
HDDには、DMAモードを変更するジャンパはありませんでした。プライマリ、セカンダリ、CableSelectを切り替えるジャンパのみです
BIOSが初期バージョンでしたので、最新に変更してテストしてみたいと思います
BIOSはギガバイトの7VTXE+です
http://www.gigabyte.co.jp/Support/Motherboard/BIOS_Model.aspx?ProductID=1311
BIOSアップデート後に結果をリプライさせていただきます
オフライン
お世話になっています
BIOSを最新にしてテストしましたので報告させていただきます
結論からいいますとダメでした
BIOSにはDMAの選択肢が増えてATA66/100を選択できるようになったのですが、
これを選択すると、HDD(/dev/sda)は認識しませんでした
/dev/sdbは認識したのですが、
hdparm -iの結果は相変わらずudma2のままで、
hdaprm -X udma5で変更しようとしても今までと同様のエラーが出て変更はできませんでした
/etc/hdparm.confをいじる必要はあるのでしょうか?
dma = on
transfer_mode = 69
にはなっているのですが・・・
HDDのスピードを測ってみました
UDMA5ならもっと速くなりますよね?
/dev/sda:
Timing buffered disk reads: 86 MB in 3.05 seconds = 28.23 MB/sec
root@neptune:/etc# hdparm -t /dev/sdb
/dev/sdb:
Timing buffered disk reads: 88 MB in 3.02 seconds = 29.15 MB/sec
オフライン
マザボやBIOSが対応していても、IDEケーブルが対応していないとダメという罠があったように記憶していますが、そのあたりは大丈夫なのでしょうか。
オフライン
GHOさん、回答ありがとうございます
IDEケーブルにそんな違いがあるとは知りませんでした
Wikipediaをみると、UDMA4以降は端が青いケーブルのようですね
現在、使用しているケーブルは黒です
そして、/dev/sdaはケーブルの端に接続しているため、スレーブのコネクタ部分にマスターとして作動させるつもりのHDDをつなげている状態です
だから、BIOSでATA66/100を強制させると認識しなかったかな
/dev/sdbはCDROMとHDDを同時に接続しており、認識できたのかな
現在、青のケーブルがありませんので、明日にでも購入してテストしてリプライします
オフライン
お世話になっています
ケーブル探したらありましたので、テスト結果をお伝えします
結論から申し上げますと、
/dev/sdaはudma6
/dev/sdbはudma2
になりました
/dev/sdaはケーブルを交換したらBIOSでATA66/100を選択してもHDDを認識できるようになりました
/dev/sdbはケーブルを交換してもudma2からかわらずでした
たぶん、CDROMも同じケーブルにつなげているので、遅い方になっちゃうのかな
だけど、udma6になったのに、転送速度がまったく向上しないのはなぜでしょうか?
<------以下ログ------>
/dev/sda:
Model=Maxtor 4R080L0 , FwRev=RAMC1TU0, SerialNo=R2A6VVAE
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=57
BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=?16?
CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=160086528
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: ATA/ATAPI-7 T13 1532D revision 0: ATA/ATAPI-1,2,3,4,5,6,7
* signifies the current active mode
root@neptune:~# hdparm -i /dev/sdb
/dev/sdb:
Model=Maxtor 6L080P0 , FwRev=BAH41G10, SerialNo=L20CT3RG
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=57
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=?16?
CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=156301488
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 *udma2 udma3 udma4 udma5
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: ATA/ATAPI-7 T13 1532D revision 0: ATA/ATAPI-1,2,3,4,5,6,7
* signifies the current active mode
root@neptune:~# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 92 MB in 3.03 seconds = 30.35 MB/sec
root@neptune:~# hdparm -t /dev/sdb
/dev/sdb:
Timing buffered disk reads: 88 MB in 3.04 seconds = 28.99 MB/sec
オフライン
お世話になっています
CDROMをケーブルから外してテストしてみました
/dev/sdbはudma5になりました
でも、スピードはudma2と変わりませんでした
下記のサイトを見るとudma5だと、
Timing buffered disk reads: 174 MB in 3.02 seconds = 57.62 MB/sec
約58MB/sec出ているので、なぜ30MBで頭打ちになるのでしょうか?
http://d.hatena.ne.jp/tnh/20040111
ひとつ気になるのが、hdparmの中で
MaxMultSect=16, MultSect=?16?
とありますが、これって普通は32なのかな?
それともdriverを変更する必要があるのでしょうか?
あと、今の状態でも
hdparm -X
でいずれの転送速度にも変更することはできない状態です
もちろん、umountしてから実行しています
<-----以下ログ------>
root@neptune:~# hdparm -i /dev/sdb
/dev/sdb:
Model=Maxtor 6L080P0 , FwRev=BAH41G10, SerialNo=L20CT3RG
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=57
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=?16?
CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=156301488
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: ATA/ATAPI-7 T13 1532D revision 0: ATA/ATAPI-1,2,3,4,5,6,7
* signifies the current active mode
root@neptune:~# hdparm -t /dev/sdb
/dev/sdb:
Timing buffered disk reads: 90 MB in 3.02 seconds = 29.78 MB/sec
root@neptune:~# hdparm -t /dev/sda
オフライン
お世話になっています
HDDの転送速度が期待値になりましたので報告させていただきます
ドライバー周りを調べていたら、
kernelのmenuconfig内の
generic/default IDE chipset support
がロードされていませんでした
これをロードするよう変更してkernelをリコンパイルしたところ
/dev/sda,/dev/sdb共に、60MB/sec出るようになりました
※ついでにkernelのバージョンを2.4.24から.2.4.28へ変更
ただし、コマンドラインからhdparmにて動的にdmaモードを変更することはやはりできませんでした
IDE接続のHDDはスピードを上げることができたのですが
USB2で接続しているHDD(/dev/sdc)がとても遅い状態であることが判明しました
ehci_hcdはロードされているのですが...
root@neptune:~# hdparm -t /dev/sdc
/dev/sdc:
Timing buffered disk reads: 30 MB in 3.05 seconds = 9.83 MB/sec
<--------以下ログ---------->
/dev/sda:
Timing buffered disk reads: 136 MB in 3.01 seconds = 45.15 MB/sec
root@neptune:/boot/grub# hdparm -t /dev/sdb
/dev/sdb:
Timing buffered disk reads: 182 MB in 3.01 seconds = 60.40 MB/sec
root@neptune:/boot/grub# hdparm -t /dev/sdc
オフライン
お世話になっています
ようやくhdparmで動的にDMAモードを変更できるようになりましたので報告します
変更点はkernelコンパイル時に
Generic PCI IDE Chipset Support
を有効にしました
これによって、HDDがそれぞれ
/dev/sda --> /dev/hda
/dev/sdb --> /dev/hdc
と表示されるようになり、
hdparm -X udma? で好きなDMAモードにできるようになりました
速度に変化はありませんでした
/dev/hda:
Timing buffered disk reads: 136 MB in 3.02 seconds = 44.97 MB/sec
/dev/hdc:
Timing buffered disk reads: 184 MB in 3.01 seconds = 61.15 MB/sec
hdparmで変更できなかったのは、EIDEドライブをSCSIドライブとしてエミュレーションしていたからかな。今時はSATAが当たり前ですしね
root@neptune:~# hdparm -X udma5 /dev/hdc
/dev/hdc:
setting xfermode to 69 (UltraDMA mode5)
あと、USBのHDDですが、最初の1回目はなぜか遅いですが、
理由は解りませんが、2回目以降は期待通りのスピードが出ていました
1回目
/dev/sda:
Timing buffered disk reads: 28 MB in 3.06 seconds = 9.15 MB/sec
root@neptune:~# hdparm -t /dev/sda
2回目
/dev/sda:
Timing buffered disk reads: 78 MB in 3.04 seconds = 25.65 MB/sec
もしかしたら、 kernelのProcessor type and featureの設定で
Timer frequencyをいじって
OSの割り込み周期を短くすると少しは速くなるのかも・・・
<<<<<============= まとめ ==============>>>>>
・IDEケーブルをudma2((端のコネクタがスレーブで途中のコネクタがマスタ))からudma6対応(端のコネクタがマスタで途中のコネクタがスレーブ)のものに変更した
・kernelのバージョンを2.6.24から2.6.28へ変更した(必要ないかもしれない)
・kernelの設定で「ATA/ATAPI/MFM/RLL support --> generic ATA/ATAPI disk support」を有効にした
・kernelの設定で「ATA/ATAPI/MFM/RLL support --> Generic PCI IDE Chipset Support」を有効にした
・CDROMドライブとHDDドライブが同一ケーブル上に接続してあったので、CDROMを外した
最後になりましたが、
アドバイスいただいた方々ありがとうございました
オフライン