2011/12/25

SL6をインストールしようとしたらディスクを認識しなかった。

検証用のHDDにSL6をインストールしようとしたら

「Disk sda contains BIOS RAID metadata 〜」

などと言われて内蔵ディスクが認識されず、インストールができなかった。
なので、dmraid コマンドでメタデータを消してやった。

 # dmraid -r -E /dev/sdX

2011/05/11

partedコマンドでUSB HDDをfat32でフォーマットしてみた。

# parted
GNU Parted 1.8.1
/dev/hda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) select /dev/sdd
/dev/sdd を使用
(parted) mklabel
警告: The existing disk label on /dev/sdd will be destroyed and all data on this
disk will be lost. Do you want to continue?
はい(Y)/Yes/いいえ(N)/No? y
新しいディスクラベル? [gpt]? msdos
(parted) print

モデル: SAMSUNG HM160HC (scsi)
ディスク /dev/sdd: 160GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号 開始 終了 サイズ タイプ ファイルシステム フラグ

(parted) mkpart
パーティションの種類? primary/プライマリ/extended/拡張? primary
ファイルシステムの種類? [ext2]? fat32
開始? 0
終了? 160GB
(parted) print

モデル: SAMSUNG HM160HC (scsi)
ディスク /dev/sdd: 160GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 32.3kB 160GB 160GB プライマリ lba

(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

# mount -t vfat /dev/sdd1 /media
mount: wrong fs type, bad option, bad superblock on /dev/sdd1,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

# mkfs.vfat -F 32 /dev/sdd1
mkfs.vfat 2.11 (12 Mar 2005)

2011/03/20

CentOS5がBCASカードを認識しなかったのをなんとかした。

PT2のドライバが作成できたので、次はBCASカードを認識させる。

BCASカードが認識しているのかを確認するために pcsc-tools に入っている pcsc_scan コマンドを使ってみる。

# pcsc_scan 
PC/SC device scanner
V 1.4.10 (c) 2001-2007, Ludovic Rousseau 
Compiled with PC/SC lite version: 1.3.3
Scanning present readers
Waiting for the first reader...

カードリーダーが認識していない?

今回使っているカードリーダーはPT2を買った時に一緒に買ったCI691(AA)というカードリーダー。
PT2の設定情報では、よくNTT製のがつかわれているため、この辺りに原因が潜んでいそう。

調べてみたところ、pcscd はカードリーダーのデバイスIDなどをチェックするとのこと。
ということは、どこかにある設定ファイルにデバイスIDなどを追加するだけでよさそう。

まず、追加する必要のある設定を確認する。
カードリーダー側の情報はlsusbコマンドで確認できる。

# lsusb
Bus 004 Device 001: ID 0000:0000  
Bus 004 Device 002: ID 0bda:0165 Realtek Semiconductor Corp. 
Bus 002 Device 001: ID 0000:0000  
Bus 001 Device 001: ID 0000:0000  
Bus 005 Device 001: ID 0000:0000  
Bus 006 Device 001: ID 0000:0000  
Bus 007 Device 001: ID 0000:0000  
Bus 003 Device 001: ID 0000:0000  
Bus 003 Device 003: ID 1130:9177 Tenx Technology, Inc. 
Bus 003 Device 002: ID 045e:0024 Microsoft Corp. Trackball Explorer

分かりづらいけれど上から2行目のRealtek〜がCI691。

CI691のベンダーIDが0bdaでプロダクトIDが0165らしい。

この情報をどこかに追加したらよさそう。というわけで調べてみると、CentOSでは/usr/lib64/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plistに追加するといけるらしい。
※64bit版の場合。32bit版だと/usr/lib/pcsc・・・になるかと。

<key>ifdVendorID</key>
        <array>
                <string>0x08E6</string>
                <string>0x08E6</string>
                  :
                <string>0x0bda</string> <-追加
        </array>

        <key>ifdProductID</key>
        <array>
                <string>0x2202</string>
                  :
               <string>0x0165</string> <-追加
        </array>

        <key>ifdFriendlyName</key>
        <array>
                <string>Gemplus Gem e-Seal Pro</string>
                  :
                <string>CI691</string> <-追加
        </array>

こんな感じ。
追加したら pcscd を再起動させて、pcsc_scan コマンドで認識しているかを確認する。

# pcsc_scan 
PC/SC device scanner
V 1.4.10 (c) 2001-2007, Ludovic Rousseau 
Compiled with PC/SC lite version: 1.3.3
Scanning present readers
0: CI691 (20070818000000000) 00 00

Sun Mar 20 01:57:34 2011
 Reader 0: CI691 (20070818000000000) 00 00
 :
 :

2011/03/19

CentOS5にPT2をインストールしてみた。

PT2が発売されてからかなりの時間が経過しているので、CentOS環境にインストールした情報も多くあり、基本的には詰まったりしないはずですがmakeした時にエラーがでてしまった。

# make
revh=`hg parents --template '#define DRV_VERSION "r{rev}:{node|short}"\n#define DRV_RELDATE "{date|shortdate}"\n' 2>/dev/null`; \
 if [ -n "$revh" ] ; then \
  echo "$revh" > version.h; \
 else \
  printf "#define DRV_VERSION \""1.1.0"\"\n#define DRV_RELDATE \""2010-01-27"\"\n" > version.h; \
 fi
make -C /lib/modules/`uname -r`/build M=`pwd` V=0 modules
make: *** /lib/modules/2.6.18-194.32.1.el5/build: そのようなファイルやディレクトリはありません.  中止.
make: *** [pt1_drv.ko] エラー 2

/lib/modules/`uname -r`/build/ 配下が存在しないとのことです。
単純に kernel-devel パッケージがインストールされていませんでした。
というわけで yum install kernel を実行してから再度 make を実行。

今度はうまくいきましたとさ。

ドライバのダウンロードも含めて、以下の手順で実行。

# mkdir -p /usr/local/src/pt2
# cd /usr/local/src/pt2/
# hg clone http://hg.honeyplanet.jp/pt1/ pt2
requesting all changes
adding changesets
adding manifests
adding file changes
added 120 changesets with 308 changes to 115 files
updating working directory
31 files updated, 0 files merged, 0 files removed, 0 files unresolved
# cd pt2/driver
# make
# make install
# insmod /lib/modules/`uname -r`/kernel/drivers/video/pt1_drv.ko
# ls -l /dev/pt1*
crw-rw-rw- 1 root root 253, 0  3月 19 22:38 /dev/pt1video0
crw-rw-rw- 1 root root 253, 1  3月 19 22:38 /dev/pt1video1
crw-rw-rw- 1 root root 253, 2  3月 19 22:38 /dev/pt1video2
crw-rw-rw- 1 root root 253, 3  3月 19 22:38 /dev/pt1video3

手順中に出てくる hg コマンドは mercurial パッケージに入っているけれど、デフォルトのリポジトリには存在しないので yum ではインストールできない。

調べたところ、fedora 向けに公開されているパッケージが使えるということなので、ここからダウンロードして手動でインストール。

mkfsができない?

ようやくサーバのセットアップを始めたと思ったらファイルシステムが作成できない状況に遭遇。

# mkfs /dev/sda1
mke2fs 1.39 (29-May-2006)
/dev/sda1 is apparently in use by the system; will not make a filesystem here!
# mkfs /dev/sdb1
mke2fs 1.39 (29-May-2006)
/dev/sdb1 is apparently in use by the system; will not make a filesystem here!
# mkfs /dev/sdc1
mke2fs 1.39 (29-May-2006)
/dev/sdc1 is apparently in use by the system; will not make a filesystem here!

システムが使用しているとのことだけど、心当たりはなし。
lsofやfuserを実行しても使用している形跡はないし、何が原因だろうと調べたら。

# vgdisplay -v
--- Physical volumes ---
PV Name               /dev/sda
:
PV Name               /dev/sdc
:
PV Name               /dev/sdb

前回テストしたLVMの情報消し忘れでしたとさ。

2011/02/12

LVMのミラーリングを壊してみた。

ミラーリングしているLogicalVolumeのディスクを稼働中に外すことにより、ディスク不良が発生した場合の状況と復旧方法を確認してみる。

前回作ったLVM領域を適当なところにマウントして、テスト用のファイルを用意します。
# mount /dev/testvol/testlog /mnt/testdir/
# cd /mnt/testdir
# wget http://ftp.riken.jp/Linux/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-LiveCD.iso
--2011-02-12 12:32:58--  http://ftp.riken.jp/Linux/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-LiveCD.iso
ftp.riken.jp をDNSに問いあわせています... 134.160.38.1
ftp.riken.jp|134.160.38.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 728184832 (694M) [application/octet-stream]
`CentOS-5.5-x86_64-LiveCD.iso' に保存中

100%[=============================================================================================>] 728,184,832 3.53M/s 時間 3m 18s  

2011-02-12 12:36:16 (3.51 MB/s) - `CentOS-5.5-x86_64-LiveCD.iso' へ保存完了 [728184832/728184832]
# ls
CentOS-5.5-x86_64-LiveCD.iso  lost+found
次にディスク不良を想定して、稼働中のディスクをremoveします。
注意:動作中のディスクは絶対にremoveしないでください。
# umount /mnt/testdir/
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: silicon  Model: -power           Rev: 0.00
  Type:   Direct-Access                    ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD10EADS-00L Rev: 01.0
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: SAMSUNG HD103SI  Rev: 1AG0
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD10EADS-00L Rev: 01.0
  Type:   Direct-Access                    ANSI SCSI revision: 05
# echo "scsi remove-single-device 2 0 0 0 " > /proc/scsi/scsi
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: silicon  Model: -power           Rev: 0.00
  Type:   Direct-Access                    ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD10EADS-00L Rev: 01.0
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD10EADS-00L Rev: 01.0
  Type:   Direct-Access                    ANSI SCSI revision: 05
ディスクをremoveしたら、LVMの状態を確認。
使用中にremoveしたもんだからI/O errorが発生してる。
# lvs -a -o +devices
  LV      VG      Attr   LSize Origin Snap%  Move Log Copy%  Convert Devices    
  testlog testvol -wi-ao 5.00G                                       /dev/sdb(0)
# tail /var/log/messages
Feb 12 12:23:04 localhost ntpd[2775]: kernel time sync enabled 0001
Feb 12 12:26:49 localhost ntpd[2775]: synchronized to 202.224.32.4, stratum 2
Feb 12 12:51:53 localhost kernel: ata2.00: disabled
Feb 12 12:51:59 localhost kernel: scsi 2:0:0:0: rejecting I/O to dead device
Feb 12 12:51:59 localhost lvm[2145]: Mirror device, 253:2, has failed. 
Feb 12 12:51:59 localhost lvm[2145]: Device failure in testvol-testlog 
Feb 12 12:51:59 localhost kernel: scsi 2:0:0:0: rejecting I/O to dead device
Feb 12 12:52:00 localhost last message repeated 55 times
Feb 12 12:52:00 localhost lvm[2145]: Repair of mirrored LV testvol/testlog finished successfully.
Feb 12 12:52:02 localhost lvm[2145]: No longer monitoring mirror device testvol-testlog for events 
# dmesg | tail
scsi 2:0:0:0: rejecting I/O to dead device
scsi 2:0:0:0: rejecting I/O to dead device
scsi 2:0:0:0: rejecting I/O to dead device
scsi 2:0:0:0: rejecting I/O to dead device
scsi 2:0:0:0: rejecting I/O to dead device
scsi 2:0:0:0: rejecting I/O to dead device
scsi 2:0:0:0: rejecting I/O to dead device
scsi 2:0:0:0: rejecting I/O to dead device
scsi 2:0:0:0: rejecting I/O to dead device
scsi 2:0:0:0: rejecting I/O to dead device
removeしたディスクを戻します。
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: silicon  Model: -power           Rev: 0.00
  Type:   Direct-Access                    ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD10EADS-00L Rev: 01.0
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD10EADS-00L Rev: 01.0
  Type:   Direct-Access                    ANSI SCSI revision: 05
# echo "scsi add-single-device 2 0 0 0 " > /proc/scsi/scsi
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: silicon  Model: -power           Rev: 0.00
  Type:   Direct-Access                    ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD10EADS-00L Rev: 01.0
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD10EADS-00L Rev: 01.0
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: SAMSUNG HD103SI  Rev: 1AG0
  Type:   Direct-Access                    ANSI SCSI revision: 05
無事に認識(Attached)されたようです。
# dmesg | tail
sdc: Write Protect is off
sdc: Mode Sense: 00 3a 00 00
SCSI device sdc: drive cache: write back
SCSI device sdc: 1953525168 512-byte hdwr sectors (1000205 MB)
sdc: Write Protect is off
sdc: Mode Sense: 00 3a 00 00
SCSI device sdc: drive cache: write back
 sdc: unknown partition table
sd 2:0:0:0: Attached scsi disk sdc
sd 2:0:0:0: Attached scsi generic sg2 type 0
LVMの状態を見てみると、メタデータが不正だとかでVolumeGroupから外されてた。
# lvs -a -o +devices
  WARNING: Inconsistent metadata found for VG testvol - updating to use version 9
  Removing PV /dev/sdc (M9T2Zc-HHF1-OWcd-Ehx9-scGl-ARiZ-LdrYsx) that no longer belongs to VG testvol
  LV      VG      Attr   LSize Origin Snap%  Move Log Copy%  Convert Devices    
  testlog testvol -wi-ao 5.00G                                       /dev/sdb(0)
# vgs
  VG      #PV #LV #SN Attr   VSize VFree
  testvol   2   1   0 wz--n- 1.82T 1.81T
# pvs
  PV         VG      Fmt  Attr PSize   PFree  
  /dev/sdb   testvol lvm2 a-   931.51G 926.51G
  /dev/sdc           lvm2 --   931.51G 931.51G
  /dev/sdd   testvol lvm2 a-   931.51G 931.51G
復旧しましょう。
# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created
# pvs
  PV         VG      Fmt  Attr PSize   PFree  
  /dev/sdb   testvol lvm2 a-   931.51G 926.51G
  /dev/sdc           lvm2 --   931.51G 931.51G
  /dev/sdd   testvol lvm2 a-   931.51G 931.51G
# vgextend testvol /dev/sdc
  Volume group "testvol" successfully extended
# pvs
  PV         VG      Fmt  Attr PSize   PFree  
  /dev/sdb   testvol lvm2 a-   931.51G 926.51G
  /dev/sdc   testvol lvm2 a-   931.51G 931.51G
  /dev/sdd   testvol lvm2 a-   931.51G 931.51G                      
# vgs
  VG      #PV #LV #SN Attr   VSize VFree
  testvol   3   1   0 wz--n- 2.73T 2.72T
LogicalVolumeを停止してからコンバート。
# lvchange -an /dev/testvol/testlog
# lvconvert -m 1 /dev/testvol/testlog
  Conversion starts after activation
# lvchange -ay /dev/testvol/testlog
# lvs -a -o +devices
  LV                 VG      Attr   LSize Origin Snap%  Move Log          Copy%  Convert Devices                                
  testlog            testvol mwi-a- 5.00G                    testlog_mlog   4.22         testlog_mimage_0(0),testlog_mimage_1(0)
  [testlog_mimage_0] testvol Iwi-ao 5.00G                                                /dev/sdb(0)                            
  [testlog_mimage_1] testvol Iwi-ao 5.00G                                                /dev/sdd(0)                            
  [testlog_mlog]     testvol lwi-ao 4.00M                                                /dev/sdc(0)                            
# mount /dev/testvol/testlog /mnt/testdir/
# ls /mnt/testdir
CentOS-5.5-x86_64-LiveCD.iso  lost+found

2011/02/11

preタグがwebkit系ブラウザで改行された。

コマンドの実行結果を改行されたくなかったのでpreタグを使ったのですが
なぜかchrome、safariでは有効にならずに改行されてしまいました。

色々調べたところword-wrapが影響している様子。
cssにword-wrapとoverflowを追加したところ、うまくいった様子。

pre {
word-wrap: normal; 
overflow: auto;
}

LVMのミラーリングを作ってみた。

HDDを冗長化するためにmdadmのRAID1ではなくLVMのミラーリングを試してみる。
まずはPhysicalVolumeとVolumeGroupを作成。
# pvcreate /dev/sd[bcd]
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created
  Physical volume "/dev/sdd" successfully created
# vgcreate testvol /dev/sd[bcd]
  Volume group "testvol" successfully created
# pvs
  PV         VG      Fmt  Attr PSize   PFree
  /dev/sdb   testvol lvm2 a-   931.51G 931.51G
  /dev/sdc   testvol lvm2 a-   931.51G 931.51G
  /dev/sdd   testvol lvm2 a-   931.51G 931.51G
# vgs
  VG      #PV #LV #SN Attr   VSize VFree
  testvol   3   0   0 wz--n- 2.73T 2.73T
LogicalVolumeは-mオプションを指定して作成。
# lvcreate -L 5GB -m 1 -n testlog testvol
  Logical volume "testlog" created
# lvs -a -o +devices
  LV                 VG      Attr   LSize Origin Snap%  Move Log          Copy%  Convert Devices                                
  testlog            testvol mwi-a- 5.00G                    testlog_mlog 100.00         testlog_mimage_0(0),testlog_mimage_1(0)
  [testlog_mimage_0] testvol iwi-ao 5.00G                                                /dev/sdb(0)                            
  [testlog_mimage_1] testvol iwi-ao 5.00G                                                /dev/sdc(0)                            
  [testlog_mlog]     testvol lwi-ao 4.00M                                                /dev/sdd(0)
/dev/sdbと/dev/sdcでミラーリングされているらしい。
/dev/sddはログらしいけど、これがなくなったらどうなるのやら。
というわけで実験してみましょう。