touchするような仕組みを入れたら、mencoderが異常終了したかどうかの$statusを上書きしていて、touchが成功したら元のDVを消すようになっていた。
たまたま、analogue videoでもbackupで録画予約してあるやつだったので何とかなりそうだが、ちょっと品質が落ちるな。
現在videoから吸い出しているところ。
/etc/rc.confを見てみるか。
1st PCの方を参考に…
sysinstall時からの変更は:ntpdate_enable="YES"して、ntpdate_flagsを1st PCにしてみた。
ntpd_enable="YES"してみた。
んで、/etc/ntp.confにはserverで1st PCを指定。
usbd_enable="YES"をcomment outした。
rpcbind_enable="YES"してみた。
accounting_enable_enable="YES"してみた。
dumpdev="/dev/ad0s1b"してみた。
/varは大きめにとったけど、swapほどは取ってなかったので、dumpdir="/usr/crash"してみた。
もちろん「mkdir /usr/crash」もした。
ntpdはすでに動かしているのでいいとして、「sh /etc/rc.d/rpcbind start」「sh /etc/rc.d/accounting start」してみた。
/etc/ttysのttyv4からttyv7までをoffしてinitに「kill -HUP」してみた。
inetd.confの方は、趣味のdaemonをいくつか立ち上げてみた。
GENERICからいらなさそうなのをcomment outか。sioはどうしようかなぁ。
なんか、特にBIOSでdisableした覚えはないんだけど現状でsio0: configured irq 4 not in bitmap of probed irqs 0 sio0: port may not be enabled sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 sio0: type 16550Aとか出て、使えてない感じだし。 とりあえず放置でよいか。
fxpしか使ってないけどemを残そうかどうしようか。
なんか最近emってよくトラブるので好きじゃないんだよなぁ。
まぁでも使わないなら大丈夫かなぁ。
SMPすると、はまる事例をいくつか見ているしなぁ。
うーん。
とりあえず、生かしておくか。
uhciで、つなぎそうにないのはcomment out。
fweは…
要らないかな。
/sys/conf/NOTESを順に全部見るのもなぁ。
とりあえず1st PCで設定しているのを移植してみるか。SMPね。
せっかくhyperthreading CPUを買ったのだから。
# relax the memory constraint (added 04/2/7) options MAXDSIZ=(1792UL*1024*1024) options MAXSSIZ=(128UL*1024*1024)ってところかなぁ。 本当はあるだけ使うって指定にしたいんだけど、どうしたらいいんだろう?
atapicamに挑戦した痕跡があるぞ。
ま、いいか。
かかなくても。
pciconf -vl」で見ると
none2@pci3:0:0: class=0x040100 card=0x011113f6 chip=0x011113f6 rev=0x10 hdr=0x00
vendor = 'C-Media Electronics Inc.'
device = 'CMI8738/PCI C3DX PCI Audio Chip中国'
class = multimedia
subclass = audio
と、ある奴だな。
どうやら数字で出ているのは「中国」らしい、というのはどうでもいいんだけど、とりあえず「device sound」はいいとして、何を選んだらいいんだろう。
snd_cmiかな?
device ichsmb」と。
pciconf -vl」で、noneになっている残りのはどうするか。
none3@pci3:6:0: class=0x030000 card=0x34288086 chip=0x47521002 rev=0x27 hdr=0x00
vendor = 'ATI Technologies Inc.'
device = 'Rage XL PCI'
class = display
subclass = VGA
は何だろう。
放置していてもちゃんとX window systemとか使えるのかな?
よく分からないのでとりあえず放置。
configして、kernel makeしてみる。
make install」して、再起動。
大丈夫かなぁ。
sio0をautoじゃなくて
enableにしたけど、やっぱりsio0: configured irq 4 not in bitmap of probed irqs 0 sio0: port may not be enabled sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 sio0: type 16550Aだ。 ま、いいか。 これは必要になった時に考えよう。
cat /dev/sndstat」するとFreeBSD Audio Driver (newpcm) Installed devices: pcm0: <CMedia CMI8738> at io 0xb400 irq 21 (1p/1r/0v channels duplex default)で、使えそう。 でも、speaker繋げ直すの面倒なので、使うのはもうちょっと先の予定。
/etc/crontabは、録画予約の邪魔にならないように5am台に変更。
devfs.confは、必要になった時でいいか。
fbtabは、必要になった時でいいか。
lost+foundとかないかとかいろいろ確認。
fwohci0: IR DMA overrun (0x40008011)」を食らってしまった。
「fwcontrol -R」中に、mplayerで見ているだけだったんだけどなぁ。
まぁ1回食らったというだけなんだけど。
こんな調子だと「fwcontrol -R」中は殆んど何も出来んな。
HDの入れ替えを検討しようかなぁ。
うーん。
ja-less+isoを入れた。
mencoderはcore dumpした。
bus errorだった。
で、どこで落ちているか調べたらmovapsだったので、make.confで、Pentium 4を指定しているのが問題かもしれない。
でも、それだと元がasmじゃなくてCだとするとcompilerのbugの可能性もありそうだ。
でも使えないのは不便なので、mplayerに関係するのをmake.confの指定を止めて作り直すかな。
/etc/make.confからCPUTYPE=p4をコメントアウトして「portupgrade -Rf mplayer-gtk-esound」してみる。
portupgrade終了。
んで5秒ほどのDVを「mencoder -o x.avi -oac mp3lame -ovc lavc x.dv」と、一番素直に近いので
実行したら例によってasf 00:00:00.00 2000-00-00 00:00:00 7f 07 02 16 1/36 A-V:0.054 [1214:214] # audio block/sample failure for 0 blocks, 1 samples of 1602という類ので結構怒られたけど、とりあえずaviが作れた。 最後に「
mencoder in free(): warning: modified (chunk-) pointer」と、いわれるのも何か怪しいが。
cron制御できるな。
でも、make.confのCPUTYPEはどうしようかなぁ。
うーん。
とりあえずp4に戻しておいたけど。
どのpackageが足引っ張っているか切り分けが出来ればいいんだけど、mplayerが依存しているのを全部作り直していくのも面倒だしなぁ。
emacs,
ja-man,
ja-man-doc
fwcontrol -R」中はmencoderを「kill -STOP」するようになってから「fwohci0: IR DMA overrun (0x40008011)」が出なくなったのは嬉しいんだけど、やっぱりdiskの空きがたくさん必要になってしまった。
あと、何も考えずにmencoderをいっぱい突っ込んでいると全然、順には終ってくれず終るのがほぼ同期するのはなんとかならないのかなぁ。
ということでDVがなかなか消せずに、これもdiskを圧迫する原因。
やっぱり、根本的に録画予約scheduling scriptが必要か。
うーん。
8:30amに録画が終ったののencodingが14:22までかかってた。
いや、5本のencodingの同時進行ってのが響いているんだろうけど。
make buildworld,
make buildkernel,
make installworld,
mergemaster,
make installkernel
と順に実行、その間にportsのcvsupをし、再起動。
sysinstallで、いくつか入ったものあるので「pkg_delete -a」。
その後、順にportsの導入。
やっぱり、要りそうなもの、じゃなくて、使う時に入れるのがよさそうだ:
cvsup-without-gui,
portupgrade,
fribidi,
arts,
cdparanoia,
libcaca,
libdv,
libtheora,
x264,
xanim,
linux-realplayer,
liveMedia,
xvid,
xmms-esound,
lzo,
mplayer
/etc/aliasesがnewaliasesに失敗していた。
ntpdを設定してみた。
/etc/rc.confにntpd_enable="YES"と書いておかないと「/etc/rc.d/ntpd start」しても何も起きないのか。
cvsupしたのちportupgradeとかして、fixとかいじっているうちにlinux-XFree86-libsがちゃんとは入っていないことが判明。
関係あるかどうか分からないけど、手動でportsの該当ディレクトリで
「make install」すると===> Checking if x11/linux-XFree86-libs already installed Bus error (core dumped) ===> Registering installation for linux-XFree86-libs-4.3.99.902_2とか出ている。 なんか怪しいなぁ。 OSとか最初から入れ直そうかなぁ。
/usr/share/example/cvsupからstandard-supfileとports-supfileを取ってきて、jpのserverを設定。
んで、cvsup。
さらに/etc/make.confにCPUTYPE=p4を設定。
mencoderを試みるも「# audio block/sample failure for 0 blocks, 1 samples of 1602」という類が大量に出る。
うーむ。
大丈夫か?
portupgrade,
cvsup-without-gui,
ja-less,
png,
jpeg,
lame,
svgalib,
aalib
xorg-librariesが依存しているみたいで入ってしまった。
うーん。
まぁ続けるか。
libvorbis,
xvid,
xanim,
rtc,
nvidia-driver
/etc/rc.confまで壊れているんですけど…
arts,
fribidi,
cdparanoia,
libcaca,
libdv,
libtheora,
x264,
libtremor,
linux-realplayer,
liveMedia,
lzo,
xmms,
win32-codecs,
mplayer
mencoder落ちるなぁ。
XFree86とかそういう問題じゃないみたいだ。
gdb上で実行したら落ちなかった。
なんだかなぁ。
最後にmencoder in free(): warning: modified (chunk-) pointerと出ているのがいかにも怪しい。 古い
mplayer入れるか、しばらくversion upするの待つかな。
compile optionを変えて入れ直すってのもありかもしれないが。
んで、とりあえずportsのcvsupしてみたらmplayerもちょっとは更新されているみたい。
んで、portupgradeとかして見ていくと…
どうも、xorgじゃなくてXFree86を仮定している部分がいっぱいあるようだ。
うーん。
xorgを消すか。
って、どの辺から入れ直したらいいんだろうか。
依存関係いろいろあるからなぁ。
面倒だから、pkg_delete -aしちゃうか。
mencoder -ovc lavc」するとcore dump。
何故だ。
いや、mencoderのversionが1st PCと違うのは確かなんだけど。
うーむ。
とりえあずDVだけ取っておいて1st PCでencodingってのもなぁ。
うーん。
fwcontrol -R」している時は、mencoderを「kill -STOP」するというAd Hoc解決を組み込んでみた。
これで「fwohci0: IR DMA overrun (0x40008011)」問題が解決しなかったらどうしよう。
shutdown -p」してある状態なので、静音fanへの付け替え作業開始。
また、ハード不良を見つけて送り返すとかなると戻すの面倒だから、と思ってpendingしていた。
fsckかかるかと思ったけど始まらないぞ。
さっきはちゃんと起動していなかったのかな?
まぁいいや。
fwcontrol -R x.dv」すると(EAGAIN)の連打。
やっぱダメか。
fwcontrol -R x.dv」。
よし、取れているみたい。
1st PCにscpして「mplayer x.dv」。
無事見られた。
しかも、実は今1st PCでは12chの録画中だった。
よし、これでGV-MVP/IDVの2系統録画が、少なくともハード的には確保できた。
あとは品質と手間を問わねば、1st PCのbt878とanalogue video tape recorderがあるので、4系統まで同時録画可能になったぞ。
kino,
lha,
mew-emacs21,
mpg123-esound,
ogle,
prosper,
psutils-a4,
rar,
socket,
sox,
tamago-emacs21,
transcode,
uudeview,
vorbis-tools,
emacs-w3m-emacs21,
wget,
xanim,
xlockmore,
xmbmon,
xv,
firefox,
linux-realplayer,
lame,
rtc,
nvidia-driver,
arts,
fribidi,
cdparanoia,
libcaca,
libtheora,
x264,
libtremor,
liveMedia,
lzo,
xmms-esound,
mplayer-gtk-esound
cvsupを入れ忘れているのに気がついて慌ててpkg_add。
なんか、毎回繰返しやっていることのような気がする。
^^;;
cvsup-without-guiはinstall CDのdisc 1のpackageにないのか。
んじゃぁportsでいいか。
cd /usr/ports/net/cvsup-without-gui」「make fetch-recursive」からか。
ntpdate -B [1st PC]」で時計を合わせようとしたら60秒ほどずれていた。
まぁそんなものか。
でも、このまえBIOSで、結構きっちり合わせたと思うんだけどな。
どうしてPCの内蔵時計ってこんなに精度が悪いんだろうか。
cvsupが入ったので、まずはOSの最新化。
「make buildworld」しながらportsのcvsup。
/etc/make.confでCPUTYPE=p4を設定しておいた方がよかった。
もう一度makeするか。
portupgradeを入れて、とりあえず入っているのを「portupgrade -af」で最新のに作り直し。
emacs,
acroread7
===> acroread7-7.0.0 is marked as broken: Incomplete pkg-plist.
acroread,
acroread5-jpnfont
acroread5-commfontを作って、その後、昔取ってきたのを/usr/ports/distfiles/Acrobat5/jpnfont.tar.gzにおいたらMD5が異なっているので更新はされているようだけど、新しいのをfetch出来た。
apache13,
asir2000,
avifile,
beav,
cabextract,
cdrtools,
cpuid,
ffmpeg,
ghostview,
gnuplot+,
gogo,
iconv,
irchat-pj-emacs21,
ispell,
ja-FreeWnn-server,
ja-a2ps,
ja-ghostscript-gnu-jpnfont,
ja-kinput2-freewnn,
ja-kon2-16dot,
ja-kterm,
ja-less,
ja-man,
ja-mtools,
ja-ptex-tetex
ja-weblint97もbrokenですか。
gstripeでstripesizeを変えた時のperformance計測:stripesize write read 2^9 8.1MB/s 55.7MB/s 2^10 10.4MB/s 55.2MB/s 2^11 14.5MB/s 55.2MB/s 2^12 14.4MB/s 55.2MB/s 2^13 16.0MB/s 55.0MB/s 2^14 16.0MB/s 52.0MB/s 2^15 16.0MB/s 54.1MB/s 2^16 16.0MB/s 55.2MB/sうーん。 stripesizeを変えてもあんまり差がないなぁ。 せいぜい、1割増しの速度というところなのか。 同じATA busだと駄目なのかなぁ。 でも、UDMA100接続なのだから、まだ余裕あるとは思うんだけど。
ad1〜ad3が遅い問題を聞いてみたけど、誰も反応してくれない。
悲しい。
ということで、しばらくはどうとでも使えるようにほっておいたけど、さすがに遊ばせておくのはもったいないのでsetup再開。
diskinfo -t」では区別できているんだよな。
って、diskinfoのsourceを見ればいいのか。
どうも番号が小さな方が外周のようだ。
ad0s1a 128MB / ad1s1b 128MB swap ad0s1g 128GB striping ad1s1d 128GB striping ad0s1d 256MB /var ad1s1e 残り swap ad0s1e 256MB /tmp ad0s1f 残り /usrとにかく、外周部でかつ
ad0とad1で似たような場所にあればいいかな、と。
pkg_addを始めてしまった。
時間がかかる…
しかも、時々「ない」とかの人間入力待ちになっているし…
mountしているので
そこをumountしてfstabから外す、と。
gstripe label -v -s 4096 data /dev/ad0s1g /dev/ad1s1d」。Metadata value stored on /dev/ad0s1g. Metadata value stored on /dev/ad1s1d. Done.一瞬で終った。
newfs /dev/stripe/data」。
あ、どうせならsoft updateをonにしておけばよかった。
もう一度やり直してもいいけど「tunefs -n enable /dev/stripe/data」。
で、念のため「fsck_ufs /dev/stripe/data」。
問題なく通った。
mount /dev/stripe/data /mnt」。
で、「df -h」するとFilesystem Size Used Avail Capacity Mounted on /dev/stripe/data 248G 4.0K 228G 0% /mnt素晴らしい。
GEOM_STRIPE: Device data created (id=3746755298). GEOM_STRIPE: Disk ad0s1g attached to data. GEOM_STRIPE: Disk ad1s1d attached to data. GEOM_STRIPE: Device data activated.とか出ていた。
fstabに/dev/stripe/dataを書いておけば、次の起動時にも効くのかな?
ちょっと実験。
だめじゃん。
そんなpartitionないと怒られた。
事前に「kldload geom_stripe.ko」しておかないと駄目なのかな。
とりあえず今、手動でしてみたらdeviceが出現した。
で、mountしてみた。
loader.conf書くの好きじゃないけど書くか。
って、文法忘れた。
んで、いろいろ調べてみたけどよく分からん。
とりあえず「load geom_stripe」と書いてみた。
駄目みたい。
んじゃぁ、/boot/defaults/loader.confにないけど
「geom_stripe_load="YES"」ではどうだ?
/etc/fstabでmountするように戻すの忘れてた。
が、kernel起動messageからするとうまくいったようだ。
ということで/etc/fstabを修正して再起動。
よし、うまくいった。
起動messageの関係するところを切り出すとこんな感じ:GEOM_STRIPE: Device data created (id=3746755298). GEOM_STRIPE: Disk ad0s1g attached to data. GEOM_STRIPE: Disk ad1s1d attached to data. GEOM_STRIPE: Device data activated. /dev/stripe/data: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/stripe/data: clean, 129993750 free (22 frags, 16249216 blocks, 0.0% fragmentation)
repeat 3 dd if=/dev/zero of=16g.bin bs=128m count=128」で、読み込みは「repeat 3 dd if=16g.bin of=/dev/zero bs=128m」の中間値ということで。
ad1〜ad3が遅い現象に足を引っ張られているみたい。
それでも、半々に進むなら30MB/sぐらいは出て欲しかった。
書き込み中「iostat 1」で見てみたけどad0とad1のどちらも、ほぼ7.5MB/sぐらいで差がなかった。
また例によって「swap_pager: indefinite wait buffer: device: stripe/data, blkno: 2, size: 4096」を連発しているし。
iostat 1」してみたら、ad0とad1での読み込み速度差はほとんどなかった。
小さなファイルの大量書きとかならまた話しは違うんだろうけど。
stripe sizeを調整したらましになるのかなぁ。
それとも結構gstripeのoverheadが大きいのかなぁ。
ccdとか、vinumだとまた違うのかなぁ。
設定面倒だけど一応ちょっと挑戦してみるか?
ccdに挑戦。
ccdconfig (8)のonline manualを見ながら挑戦。
「ccdconfig ccd0 4096 none /dev/ad0s1g /dev/ad1s1d」してみる。
kldstatしたらgeom_ccd.koが読まれていた。
bsdlabel -w ccd0」して、「newfs -U ccd0a」。
「mount /dev/ccd0a /mnt」して、「df -h /mnt」。Filesystem Size Used Avail Capacity Mounted on /dev/ccd0a 248G 4.0K 228G 0% /mnt今のところいい感じ。
vinumでの実験。
まずはumountして、「ccdconfig -v -u ccd0」。
vinum」「stripe -v /dev/ad0s1g /dev/ad1s1d」で、次どうするんだ?
なんか/dev/vinum/以下にいくつかファイルが出来ているようだが。
newfs -U /dev/vinum/vinum0」してみた。
そういえば、stripe sizeの指定した覚えがないな。
vinum commandを打った時に
drive vinumdrive0 device /dev/ad0s1g
drive vinumdrive1 device /dev/ad1s1d
volume vinum0
plex name vinum0.p0 org striped 279k
sd name vinum0.p0.s0 drive vinumdrive0 size 268435191b
sd name vinum0.p0.s1 drive vinumdrive1 size 268435191b
V vinum0 State: up Plexes: 1 Size: 255 GB
P vinum0.p0 S State: up Subdisks: 2 Size: 255 GB
S vinum0.p0.s0 State: up D: vinumdrive0 Size: 127 GB
S vinum0.p0.s1 State: up D: vinumdrive1 Size: 127 GB
と出た279kのことかしらん?
そうえいば、kernel messageもvinum: loaded GEOM_STRIPE: Disk ad0s1g removed from data. GEOM_STRIPE: Device data removed. vinum: drive vinumdrive0 is up GEOM_STRIPE: Disk ad1s1d removed from data. GEOM_STRIPE: Device data destroyed. vinum: drive vinumdrive1 is up vinum: removing 726 blocks of partial stripe at the end of vinum0.p0 vinum: vinum0.p0.s0 is up vinum: vinum0.p0.s1 is up vinum: vinum0.p0 is up vinum: vinum0 is upとか出ていた。 もしかしたら、p0とかp0.s1とかそういう方を使うべきなのかしらん??? とりあえず
Filesystem Size Used Avail Capacity Mounted on /dev/vinum/vinum0 248G 4.0K 228G 0% /mntという状況で計測してみるか。
gstripeでの実験に戻してstripesizeをいろいろいじってみるか。
それ以前にvinumはどうやって解除するのだ?
わからん。
vinumが走っているの無視してgstripeしたらすごいことになったりするのかな。
gstripeは走ったけど、/dev/stripe以下が存在しないし…
kldunloadでvinum.koを抜いてみたらようやく/dev/stripe/dataが出現した。
で、stripesizeを2047とか指定してみたら「Stripesize should be multiple of 512.」と怒られた。
stripesize write read 512 16.1MB/s 699MB/sダメだコリャ。 少なくとも読む方はmain RAM以上にしないと駄目みたいだな。
stripesize write read
512 8.1MB/s 55.7MB/s
1024 10.4MB/s 55.2MB/s
2048 14.5MB/s 55.2MB/s
fwcontrol -R」で「fwohci0: IR DMA overrun (0x40008011)」連発だなぁ。
DVを取るのとencodingはbt878から読むのと同様、ずらさないと駄目かなぁ。
益々専用の録画予約scriptを作らないと駄目かな。
単発の番組予約scriptとcronの組合せではそろそろ限界の気がしてきた。
bt878の方は、録画中他のencodingが走らないようにしてずいぶん改善したけどGV-MVP/IDVの方もとなると面倒だなぁ。
mountしなおすとかしたけど、何とか、他にコピーが無い分の26GBが読み出せた。
で、最後にumountしたところで、固まる、
うーむ。
諦めてresetしたら、なんかPPP接続で何回もretryしていて、妙に時間がかかってた。
で、background fsckも、普段より5分ぐらい余計に時間がかかってた。
まぁでもこれで、心おきなくこのHDを捨てられる。
mountした。
さっき、umountにしくじったのでちょっと警告が出たけどそれは無視ということで。
で、現在、吸いだし中。
どこまで読めるかなぁ。
umount -f」も出来なくなってしまった。
これは、read onlyでmountしなかった私も悪いんだけど。
んで、定期的に何かデータを書き出そうとするみたいで、logが残るので、reboot。
どこまで努力しようかなぁ。
入っているデータが無くなっても「大したことない」といえばそうなんだが。
Encrypted VOB file! Read DOCS/HTML/en/dvd.html.を食らわないなぁと思っていたけど、久しぶりにあったみたいだ。
fwcontrol -r」×3を続けて(da0:sbp0:0:0:0): removing device entryをし忘れたかどうかは不明だが、その後、HD caseの電源offしてちゃんと 「
fwcontrol -r」×3
をしたんだけど、その後の電源onで(da0:sbp0:0:0:0): READ(10). CDB: 28 0 0 0 0 0 0 0 1 0 (da0:sbp0:0:0:0): CAM Status: SCSI Status Error (da0:sbp0:0:0:0): SCSI Status: Check Condition (da0:sbp0:0:0:0): MEDIUM ERROR csi:79,1d,1,0 asc:11,0 (da0:sbp0:0:0:0): Unrecovered read error (da0:sbp0:0:0:0): Retrying Command (per Sense Data)というのを連打された挙げ句に
(da0:sbp0:0:0:0): Retries Exhaustedとなってしまった。 しばらく休ませておくか。
1221+1 records in 1221+1 records out 163928604672 bytes transferred in 3825.623136 secs (42850171 bytes/sec) 0.000u 74.802s 1:03:45.67 1.9% 21+282691k 0+0io 0pf+0wということで無事終了。
newfsとかして使える状態にする。
shutdown -p」して、組み立てだな。
なんか、この250GB HD、ちょっと遅いような気がするので、直った感じがするこの160GBをslaveにしておきたい気もちょっとはするけど、まぁいいか。
/etc/fstabを直してslave diskをmountするようにしておけばよかった。
portupgrade -af」するか。
うーん。
まずは仮名漢字関係ということでWnn関係かな。
ということで、ja-FreeWnn-libとja-FreeWnn-serverをportupgradeしてみた。
jserverを再起動してeggしてみる。
「kihon.〜の整合性がないよ。作り直す?」みたいなことを数回聞かれるが、無事動くようになった。
これで、emacsとか起動し直すたびに3rd PCにjserverを切替えなくてもよくなった。
嬉しい。
いや、もちろん、これまでも.emacsを一時的に変更しておけば
問題なかったことではあるんだけど。
portupgrade -af」はやりすぎな感じがするので、問題を体験した時にのみ対処ということで、1st PC復活宣言かな。
ddを使った計測:
write read
master slave master slave
46.7MB/s 15.8MB/s 49.5MB/s 50.7MB/s UDMA100 UFS2 FreeBSD5.3R
46.6MB/s 15.8MB/s 47.4MB/s 47.9MB/s UDMA66 UFS2 FreeBSD5.3R
46.8MB/s 15.9MB/s 27.7MB/s 28.0MB/s UDMA33 UFS2 FreeBSD5.3R
50.4MB/s 51.6MB/s 52.8MB/s 54.5MB/s UDMA100 UFS1 FreeBSD4.11R
49.5MB/s 51.3MB/s 52.4MB/s 53.5MB/s UDMA66 UFS1 FreeBSD4.11R
31.4MB/s 31.4MB/s 28.5MB/s 29.3MB/s UDMA33 UFS1 FreeBSD4.11R
@付きはswap_pagerの警告messageが出たもの
sysinstall経由で、fdiskとbsdlabelしてみた。
file system経由での書き込み実験をしたい衝動にかられたけどちょっと時間もかかるしということでいいことにした。
HD case用のHDということで「tunefs -m 0 -n disable /dev/ad1s1d」しておいた。
shutdown -p」して繋ぎ替え。
んで、起動。
で、例のごとくddで0-fill開始。
このdiskも確か前の方に書き込み不能で、しかもUFS2的にかなり嬉しくないsectorが壊れていて、そこを避けるようにfdisk partitionを切って運用していた。
が、0 fillで復活することを期待。
でも、例によってもうすぐ録画予約が始まるから、タイミングを逃さないようにctrl-zせねば。
ddを使った計測:
write read
master slave master slave
46.7MB/s 15.8MB/s 49.5MB/s 50.7MB/s UDMA100 UFS2 FreeBSD5.3R
46.6MB/s 15.8MB/s 47.4MB/s 47.9MB/s UDMA66 UFS2 FreeBSD5.3R
46.8MB/s 15.9MB/s 27.7MB/s 28.0MB/s UDMA33 UFS2 FreeBSD5.3R
@付きはswap_pagerの警告messageが出たもの
nice +10の
mencoderが走っていても大丈夫だったけど、
なんか、今回は「fwohci0: IR DMA overrun (0x40008011)」をそれなりに食らってしまったな。
ずっと連続ってわけではないんだけど。
確かに音を聞いていたら結構、激しくseekしていたようではあったけど。
fwcontrol中はmencoderは「kill -STOP」かなぁ。
でもそうするとbt878の方の奴まで止まってしまうので、面倒だ。
とりあえずあんまり効果ない気がするけど「nice +20」で対応してみるか。
makeをしておいたので、それをinstallして、slaveにcrashしたHDを接続して再起動。
iostat 1」でも3MB/sぐらいしか速度が出ていないので、何かと思ったら「bs=」で書き込み単位を大きくするの忘れてた。
^^;
ということで、一旦中断した後、それまでに書き出した容量を見て「dd if=zero of=ad1 bs=128m skip=396」として再開。
これでiostat出力を見ても15MB/sぐらいになっていて、5倍速。
bs=」の指定し直しでも、その次の録画予約には間に合わなかったので、ctrl-z。
今のところ、エラー無しということで、直ったと思いたいなぁ。
エラーがあったのは丁度、真中辺だったはずなので、そろそろそれを過ぎていると思うので。
ddの出力する時間の合計は途中で止めたってのもあるけど10時間弱。
長かった。
ということで、次は読み込み実験。
1221+1 records in 1221+1 records out 163928604672 bytes transferred in 3775.973972 secs (43413595 bytes/sec) 0.000u 75.753s 1:02:56.01 2.0% 22+-269564k 0+0io 0pf+0wということで問題なし。 直った、とおもっていいのかな。 といってもやっぱり気持ち悪いので、外付けHDでそのうち消すのを入れる用にしよう。 で、disk繋ぎ替えて、もう一台の内蔵HDに使っていたものの書き込み実験とかを始めたかったけど、録画予約が始まってしまった。 まぁ今夜はこの辺で終りだな。
write read
master slave master slave
51.7MB/s 52.1MB/s 53.5MB/s 54.6MB/s UDMA100 UFS1 FreeBSD4.11R
50.2MB/s 51.2MB/s 51.7MB/s 53.1MB/s UDMA66 UFS1 FreeBSD4.11R
31.4MB/s 31.2MB/s 28.4MB/s 29.2MB/s UDMA33 UFS1 FreeBSD4.11R
15.6MB/s@ 15.9MB/s 49.5MB/s 48.5MB/s UDMA100 UFS1 FreeBSD5.3R
15.8MB/s@ 15.9MB/s 47.5MB/s 48.6MB/s UDMA66 UFS1 FreeBSD5.3R
15.8MB/s@ 15.9MB/s 28.0MB/s 28.4MB/s UDMA33 UFS1 FreeBSD5.3R
15.7MB/s@ 15.8MB/s 48.7MB/s 48.8MB/s UDMA100 UFS2 FreeBSD5.3R
15.5MB/s@ 15.7MB/s 47.2MB/s 48.4MB/s UDMA66 UFS2 FreeBSD5.3R
15.6MB/s@ 15.8MB/s 27.7MB/s 28.0MB/s UDMA33 UFS2 FreeBSD5.3R
@付きはswap_pagerの警告messageが出たもの
diskinfoとかいうのがあるのを思い出した。
ということで「diskinfo -t」の「Transfer rates」を見てみる。
master slave
outside middle inside outside middle inside
49.0MB/s 46.7MB/s 29.8MB/s 56.7MB/s 47.8MB/s 29.8MB/s UDMA100
49.3MB/s 45.8MB/s 29.7MB/s 54.8MB/s 47.7MB/s 29.8MB/s UDMA66
28.6MB/s 29.6MB/s 29.7MB/s 30.0MB/s 30.0MB/s 29.8MB/s UDMA33
でも、これ、書き込み試験はないからよくわからんなぁ。
やっぱり繋ぎかえるか。
shutdown -p」の後、
側板を開けて繋ぎ替えられるかと思ったけど結構狭いところにコネクタがあって断念。
なんで、これだけ大きな筐体なのに、そういうこと考えて設計されてないかなぁ。
と、思いながら諦めて背中の大量の、というほどでもまだつながってなかった、cableを外して繋ぎ替え。
んで起動。
fstabがATA channel 1のままだけどsingle user modeでどうなるかと思ったら、ちゃんとroot deviceを聞いてくるのね。
ということで、入力して起動。
んで、他のpartitionをmountして「vi /etc/fstab」しまった。
書き込み出来ないじゃん。
とりあえず「:w /tmp/x」で退避して、えーと、remountってどうするんだっけ?
って他のマシンでonline manualを見ると-u optionがあればいいらしい。
ということで、書き換えて再起動。
無事起動したので、また実験開始。
diskinfo -tからいくか。
master slave
outside middle inside outside middle inside
50.2MB/s 47.1MB/s 29.7MB/s 56.6MB/s 47.3MB/s 29.8MB/s UDMA100
48.0MB/s 45.9MB/s 29.7MB/s 54.7MB/s 47.6MB/s 29.8MB/s UDMA66
28.9MB/s 30.1MB/s 29.7MB/s 30.2MB/s 29.9MB/s 29.7MB/s UDMA33
せいぜいちょっと速いかもという程度か。
1割くらい違うところもあるけど、計測誤差かもしれない。
write read
master slave master slave
51.7MB/s 52.1MB/s 53.5MB/s 54.6MB/s UDMA100 UFS1 FreeBSD4.11R
50.2MB/s 51.2MB/s 51.7MB/s 53.1MB/s UDMA66 UFS1 FreeBSD4.11R
31.4MB/s 31.2MB/s 28.4MB/s 29.2MB/s UDMA33 UFS1 FreeBSD4.11R
15.6MB/s@ 15.9MB/s 49.5MB/s 48.5MB/s UDMA100 UFS1 FreeBSD5.3R
15.8MB/s@ 15.9MB/s 47.5MB/s 48.6MB/s UDMA66 UFS1 FreeBSD5.3R
15.8MB/s@ 15.9MB/s 28.0MB/s 28.4MB/s UDMA33 UFS1 FreeBSD5.3R
@付きはswap_pagerの警告messageが出たもの
#は計測中のもの
atacontrol mode 0 UDMA66 UDMA66」
とかしたら、何故かslaveがBIOSPIOに…
あ、違った。
channel 1だった。
rebootする必要なかったじゃん。
なんか、疲れているのかな。
いろいろ並行して実行していると間違いがち。
dd: ad1: short write on character device dd: ad1: end of device 1871+0 records in 1870+1 records out 251000193024 bytes transferred in 18179.720301 secs (13806604 bytes/sec)無事終った。 とりあえず買った3台のHDには簡単に見つかる初期不良はなかったということで。
mountすれば十分だからこれまで何回か発現した長時間アクセスによる暴走っぽい現象もそれほど恐くはないし。
ということで、早速newfsとかして準備。
tarで複写開始。
で、次の録画予約時間まで40分ほど。
あんまり無いじゃん。
まぁctrl-zでいいんだが。
makeしなおし。
dd: ad2: short write on character device dd: ad2: end of device 19079+1 records in 19078+0 records out 160041885696 bytes transferred in 9987.631614 secs (16024008 bytes/sec)とりあえず今夜は寝るか…
newfsとか始まった後、放置しておいたら勝手にrebootがかかっているぞ???
とりあえず最初からやり直し。
面倒なので、今度はminimalを選ぶ。
repeat 3 dd if=/dev/zero of=16g.bin bs=128m count=128」の中間値で、読み込みは上ので出来たファイルについて「repeat 3 dd if=16g.bin of=/dev/null bs=128m」の中間値を使う。
write read
master slave master slave
51.7MB/s 52.1MB/s 53.5MB/s 54.6MB/s UDMA100 UFS1 FreeBSD4.11R
50.2MB/s 51.2MB/s 51.7MB/s 53.1MB/s UDMA66 UFS1 FreeBSD4.11R
31.4MB/s 31.2MB/s 28.4MB/s 29.2MB/s UDMA33 UFS1 FreeBSD4.11R
なお「repeat 3 dd if=/dev/zero of=/dev/null bs=128m count=128」の中間値はFreeBSD4.11R: 1965.7MB/s, FreeBSD5.3R: 1797.6MB/sだった。
dump作業を90分ほど中断。
fgして再開。
dump申告の残り時間(5分単位):
4:53, 4:45, 4:37, 4:30, 4:21, 4:14, 4:05, 3:57, 3:50, 3:42, 3:34,
3:27, 3:20, 3:13, 3:06, 3:00, 2:53, 2:46, 2:39, 2:32, 2:24, 2:17,
2:09, 2:02, 1:54, 1:47, 1:40, 1:33, 1:25, 1:17, 1:10, 1:02, 0:54,
0:47, 0:39, 0:32, 0:26, 0:22, 0:17, 0:10, 0:03
dumpだとどれくらい時間がかかるか実験。
なんか、差分dumpなんて実行するのなんか、10年ぶり以上の気がするのでドキドキな感じ。
iostat 1」してみた。
tty ad0 ad1 cpu
tin tout KB/t tps MB/s KB/t tps MB/s us ni sy in id
9 507 8.09 482 3.81 117.11 68 7.72 3 25 8 1 64
33 427 4.83 1327 6.25 128.00 44 5.45 12 0 17 1 70
79 309 4.63 1735 7.84 128.00 54 6.81 8 0 18 2 72
16 309 4.69 1466 6.72 123.04 48 5.71 8 0 16 1 76
基本的に触るのはdump元のad0だけかと思ったらそうでもないらしい。
dump申告の残り時間(5分単位):
0:12, 0:08, 0:02
dumpだと速いようだ。
これなら、single user modeで待てる時間だな。
実際にかかった時間は22分ほどだったし。
dump先を確認すると…
やっぱり、消したり移動したりしたファイルは反映されていないのか。
まぁ大体何をいじったかとかは自分のhome以下についてはわかるからなんとかはなるんだが。
shutdownして、single user modeで、/usrの差分dumpをするつもりがなんか、single user modeだとnetwork認識の辺りでどうも起動しない。
そういえば、前にもそんなことあって問題解決をpendingにしていたことを思いだした。
dumpも差分が少ないせいか、1分もかからず終了。
その他のpartitionは差分dumpでもよかったのかもしれないけど、
消したのが消えていないとかあるかもしれないし、そんなに時間はかからないと思うので、newfsしてやり直し。
mountしてそこからtarで移動。
どれくらいかかるかなぁ。
次の録画予約時間まで約4時間だが間に合うか。
dump&restoreより速い感じがする。
で、これからこのdiskの読み書きチェックだけど…
録画までに出来るところまでするか、それともその後にするか。
後にしよう。
腹減った。
飯食いたい。
1870+1 records in 1870+1 records out 251000193024 bytes transferred in 5488.958252 secs (45728202 bytes/sec) 0.023u 134.634s 1:31:28.99 2.4% 25+10747k 0+0io 0pf+0w続いて書き込みテスト。 でも、これは次の録画予約までには終りそうにないな。 まぁ出来るところまでということで。
ddないのか。
catとかでの実験でもいいけど…
せっかくだからfixitを使うか。
ということで、まずはslaveの実験。
「dd if=ad3 of=null bs=8m」ということで。
19079+0 records in 19078+1 records out 160041885696 bytes transferred in 3512.273341 secs (45566467 bytes/sec)と無事終了。 今度は同じ試験を
ad2に対して実行。
こっちも19078+1 records in 19078+1 records out 160041885696 bytes transferred in 3558.349431 secs (44976439 bytes/sec)と無事終了。
dd if=zero of=ad3 bs=8m」ということで。
dd: ad3: short write on character device dd: ad3: end of device 19078+1 records in 19078+1 records out 160041885696 bytes transferred in 9970.201499 secs (16052021 bytes/sec)ということで
ad2も同じ実験。
dd: ad1: short write on character device dd: ad1: end of device 1871+0 records in 1870+1 records out 251000193024 bytes transferred in 16051.068788 secs (15637600 bytes/sec) 0.016u 393.096s 4:27:31.15 2.4% 24+-9960k 0+0io 0pf+0wということで無事終了。
em0: Link is up 100 Mbps Full Duplexと出た後、ダンマリだなぁ。 30秒ほど待った後、ctrl-alt-delで再起動。 んで、次はうまくいった。 んー、もしかしてPPP接続がうまくいっていなかっただけかしらん? まぁいいや。
dd if=ad1 of=null bs=128m」でテスト。
shutdown -p now」。
em0を立ち上げた後固まっているような…
いや、30秒ぐらい待ったら立ち上がった。
1870+1 records in 1870+1 records out 251000193024 bytes transferred in 5049.050912 secs (49712351 bytes/sec) 0.008u 126.962s 1:24:09.10 2.5% 22+-38637k 0+0io 0pf+0wで時間を見たら、ぎりぎり書き込みも間に合いそうだったので、間に合わなかったらctrl-zということで開始。
dd if=zero of=ad0 bs=128m」。
危ねー。
いま使っているfile systemを潰すところだった。
OSの保護機構が働いたのか
dd: ad0: Operation not permittedとなって助かった。
dd: ad1: short write on character device dd: ad1: end of device 1871+0 records in 1870+1 records out 251000193024 bytes transferred in 19097.849645 secs (13142851 bytes/sec) 0.016u 400.637s 5:18:17.94 2.0% 24+2155k 0+0io 0pf+0wと、無事終了。 途中50分ほど止めた分も
dd出力の時間に含まれるようだ。
sysinstallで切るのはいいんだけど、a partitionって、mount pointを「/」にしないとだめなのかいな?
というか、もっと直接partition名を指定って出来ないんだろうか?
とりあえず「/」を指定した後にmount pointを変更することによって対処。
変更忘れると、勝手にmountされてひどい目にあってしまうので。
以前それで痛い目にあっているのだった。
^^;
dump&restoreで複写。
今度は、OSが普通に生きているところなので、非常に作業がし易い。
例えばこんな感じ
「dump 0uaLf - /dev/ad0s1f | restore xf -」。
u optionを付けて、現状をdumpしたあとで差分dumpで追い付く予定。
これで多少は、OSの停止時間とかを減らせると期待。
そういえば、昔は差分dumpって消したファイルについては考慮されていなかったけど今もそうなのかな。
/tmpとかもそれなりに大きくてrestoreの作る一時ファイルとかでも溢れたりしないのが嬉しい。
dump申告の残り時間(5分単位):
11:16, 7:58, 7:14, 6:48, 6:29, 6:17, 6:06, 5:54, 5:44, 5:36, 5:30
dump申告の残り時間(5分単位):
5:22, 5:16, 5:10, 5:07, 5:02, 4:56, 4:50, 4:44, 4:38, 4:34
restore済と期待したら、情報量的には存在した。
とりあえず救出。
dump申告の残り時間(5分単位):
4:40, 4:51, 5:03, 5:01, 4:59, 4:54, 4:49, 4:44, 4:40, 4:34, 4:31,
4:25, 4:19, 4:13, 4:08, 4:-2, 3:57, 3:52, 3:46, 3:40, 3:34
Apr 2 08:30:01 flu kernel: fwohci0: IR DMA overrun (0x40008011) Apr 2 09:38:15 flu kernel: fwohci0: IR DMA overrun (0x40008011) Apr 2 10:03:43 flu kernel: fwohci0: IR DMA overrun (0x40008011)連打ってわけじゃないけど、ちょと追い付いていないのか。 この時点では、slave diskのdisk checkも終っていたので、本質的にfirewire read + encodingだけのハズ。 前の160GB HDより遅くなったのかなぁ。 どちらも7200 rpmで、同じMaxtorの製品だけど、250GBになって、なんかseek timeが遅くなったとかあるのかなぁ。安いdisk買ったしなぁ。 録画予約時間と比較して裏で何本encodingが走っているときに「
fwcontrol -R」を避けたらいいのかとか考えたかったけどどうも法則性がわからん。
1本でダメな時もあれば、3本走っていて大丈夫な場合もあるようだし。
ad1に向かって張ってあるsymlinkを直して、/etc/fstabの該当箇所をcomment outしてshutdown。
cd /dev」「dd if=ad1 of=null bs=128m」このあと0 fill実験予定。
これだけでも、経験的には1割ぐらいは引っかかるからなぁ。
3台HDを買ってきたので、引っかかる確率は27%ぐらいか。
読むだけで90分ぐらいはかかりそうだなぁ。
今日寝るまでにどこまで仕掛けられるか。
ad1: FAILURE - READ_DMA status=7f<READY,DMA_READY,DSC,DRQ,CORRECTABLE,INDEX,ERROR> error=7f<UNCORRECTABLE,MEDIA_CHANGED,NID_NOT_FOUND,MEDIA_CHANGE_REQEST,ABORTED,NO_MEDIA,ILLEGAL_LENGTH> LBA=273904256 dd: ad1: Input/output error 1044+0 records in 1044+0 records out 140123308032 bytes transferred in 2647.618749 secs (52924277 bytes/sec) 0.026u 72.682s 44:07.66 2.7% 22+-289315k 0+0io 0pf+0wちょうど真中辺か。
dd if=ad0 bs=512 skip=273642112 of=null」と実験。
同じ場所でおかしくなるなら40秒ほどで地雷に到達のはず。
bs=512だと4MB/sぐらいしか出ないから。
って、阿呆か?>私
ad0をテストしてどうする。
dd if=ad1 bs=512 skip=273642112 of=null」で実験。
すぐにad1: FAILURE - READ_DMA status=7f<READY,DMA_READY,DSC,DRQ,CORRECTABLE,INDEX,ERROR> error=7f<UNCORRECTABLE,MEDIA_CHANGED,NID_NOT_FOUND,MEDIA_CHANGE_REQEST,ABORTED,NO_MEDIA,ILLEGAL_LENGTH> LBA=273642112が出る。 というか、どんなskip数にしてもすぐエラー。 というか、上のすべてのbitが立っているようなerrorってなによ?
ad1認識していない上にem0がちゃんと立ち上がらないんですけど。
fsck中。
fsck終ったので改めて「dd if=ad1 bs=512 skip=273642112 of=null」で実験。
3分弱実行して問題なし。
んで、「dd if=ad1 bs=128m skip=1042 of=null」とbs=を大きくして実験。
なんか、OSの地雷でも踏んだかなぁ。
数日前も某所で「tar xfz」しただけなのにfile systemを壊滅的に破壊されたとかあったし。
しかも、これは、ある手順に従って操作した場合に確率2/8で再現性があった。
最近、hardwareだけじゃなくて、FreeBSDにも嫌われている気がする。
こんなに愛してるのに。
ddでskipを指定できないってことあった気がしたけど改善したのかな?
んで828+1 records in 828+1 records out 111145320448 bytes transferred in 2849.208587 secs (39009190 bytes/sec) 0.009u 51.110s 47:29.25 1.7% 21+286762k 0+0io 0pf+0wと無事終了。 実行時間からしても、ちゃんと
skipが効いていたみたい。
んで、気になるので、もう一度先ほど失敗した「dd if=ad1 of=null bs=128m」をやり直し。
1870+1 records in 1870+1 records out 251000193024 bytes transferred in 5515.931356 secs (45504590 bytes/sec) 0.009u 109.262s 1:31:55.98 1.9% 21+-110527k 0+0io 0pf+0wと、問題なくいった。 さっきは運が悪かったと思うことにした。 で、今度は「
dd if=zero bs=128m of=ad1」と書き込み実験。
本ページの主張等は著者の所属組織に全く関係なく、個人としてのものです。