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
」と書き込み実験。
本ページの主張等は著者の所属組織に全く関係なく、個人としてのものです。