So-net無料ブログ作成
検索選択

ディスクデバイス名 [備忘録]

 LinuxHDDを接続すると、
 /dev/sda
 とか、
 /dev/hdb
 とかいう具合に、aから順にデバイス名が割り当てられるわけです。

 で、zまで行ったら、その次はどうなるの?という疑問があったわけです。(笑)
 そんな中、会社にこのよーなマシンが登場しました。。。
[root@chunli ~]# cat /proc/partitions
major minor  #blocks  name

   8     0  976762584 sda
   8    16  976762584 sdb
   8    32  976762584 sdc
   8    48  976762584 sdd
   8    64  976762584 sde
   8    80  976762584 sdf
   8    96  976762584 sdg
   8   112  976762584 sdh
   8   128  976762584 sdi
   8   144  976762584 sdj
   8   160  976762584 sdk
   8   176  976762584 sdl
   8   192  976762584 sdm
   8   208  976762584 sdn
   8   224  976762584 sdo
   8   240  976762584 sdp
  65     0  976762584 sdq
  65    16  976762584 sdr
  65    32  976762584 sds
  65    48  976762584 sdt
  65    64  976762584 sdu
  65    80  976762584 sdv
  65    96  976762584 sdw
  65   112  976762584 sdx
 104     0  573366680 cciss/c0d0
 104     1     104391 cciss/c0d0p1
 104     2  573255427 cciss/c0d0p2
  65   128    1957888 sdy
  65   129          1 sdy1
  65   132       4080 sdy4
  65   133     255984 sdy5
  65   134     255984 sdy6
  65   135     112624 sdy7
  65   136     292848 sdy8
 253     0  534151168 dm-0
 253     1   39092224 dm-1
   9     0 10744387456 md0



 sdyまできてる!!
 というわけで、コイツに急遽USBなディスクを複数接続してみた!!!
 そしたらあーた!!
[root@chunli ~]# cat /proc/partitions
major minor  #blocks  name

   8     0  976762584 sda
   8    16  976762584 sdb
(途中省略)
  65   144 1953514584 sdz
  65   145 1953512001 sdz1
  65   160 1953514584 sdaa
  65   161 1953512001 sdaa1
  65   176 1953514584 sdab
  65   177 1953512001 sdab1
  65   192 1953514584 sdac
  65   193 1953512001 sdac1
 253     2 7813988352 dm-2


 sdaa
 そうきましたか。(笑)

 で、sdaa、sdab、sdac…となっているのですが、ということは、sdazまで行ったら次はsdbaなのかな??

 じゃあ、sdzzの次はsdaaaかすら・・・?

 検証不能につき識者の方のツッコミ求む!!!!(笑)

テープデバイスを使おうとして「メモリが足りない!」とか怒られた場合 [Linux再入門]

 諸般の事情により、テープデバイスからデータを読み出そうとしたところ…

 メモリが足りません

 的なエラーメッセージが出ることがある。
 例えば…

 cd /some/directory
 find . -print | cpio -oBv -H newc > /dev/st0

 という感じでデータをテープにコピーした後、一旦テープをイジェクトし、再度テープを挿入。

 cat /dev/st0 | cpio -ivt

 みたいなことをしようとするとエラーメッセージが出てにっちもさっちも行かない…なんてケース。(出ないこともある)

 あるいは、テープが接続されているサーバにディスクの空き容量が無いので、他のマシンでデータを復元しようとして…

 ssh FileServer "cd /some/restore;cpio -iBvumd" < /dev/st0

 または

 cd /some/restore
 ssh TapeServer "cat /dev/st0" | cpio -iBvumd

 とかやろうとした場合。
 メモリなんか湯水のように使えるサーバでも「メモリが足りません」的なメッセージで苦しめられてしまう。

 そんなときには、テープが接続されているサーバで以下の呪文を唱えてあげよう。

 mt -f /dev/st0 setblk 5120

 cpioコマンドオプションに「B」を含めた場合、ブロックサイズは5120バイトになるので、mtコマンドでブロックサイズを5120バイトだよという具合に指示してやる必要がある。

 ddコマンド等を経由してテープデバイスにデータを書き出した場合は別の値になるので要注意。「bs」の値とかその辺的なふいんきで。。。。。。

複数のテープにまたがるデータを途中のテープから戻す方法 [小技(Linux)]

 例えばLTOとか、DDSとか、QMT(CMT)とか、DLTとかいったようなテープデバイスにデータを退避してあるとする。データ量が多くて1本のテープに収まりきらない場合にはcpioコマンドなら複数のテープにまたがって一つのボリュームなりバックアップデータなりをまとめて退避することができる。

 が、この場合に特有の困った問題が発生することがある。テープの読み取りエラーである。
 8ビットパソコン世代のオッサンなら、Tape read errorとでも言えばイメージが涌きやすいだろうか。(大笑)

 例えば、cpioコマンドでデータをテープにバックアップしたとする。退避するときに

 cd /some/directory
 find . -print | cpio -oBv -H newc >/dev/st0

 とかいう具合にデータをバックアップしたとする。(オプション類はお好みに応じてどうぞ)

 で、復元する場合、普通は…

 cd /some/restore
 cpio -iBvumd < /dev/st0

 とかいう感じで戻すことになると思う。(オプション類はお好みに応じてどうぞ)
 このとき、テープの1本目の先頭部分には「-H」オプションを指定した場合のフォーマット情報が保存されるそうで、復元する場合には「-H」オプションは省略しても構わないことになっている。(別に記述してもよいけど)

 さて。ここで不幸にして1本目のテープでエラーが出ちゃったとする。しかしお目当てのデータはまだ復元されていない!!2本目のテープに望みをかけたいが先に進まず止まっちゃった!    みたいな場合。

 あるいは、なぜか1本目のテープが見当たらない!!テープの保管場所にあるはずなのにど~しても見当たらない!!   みたいな場合。

 もしくは、1本目のテープにうっかり全然違うデータを上書きして壊しちゃった!!!どーしよう!!!   みたいな場合。

 2本目以降から(3本目でも4本目でもいいけど)復元したい場合は、普通にcpioコマンドを実行するが、「-H」オプションを必須で指定する必要がある。

 cd /some/restore
 cpio -iBvumd -H newc< /dev/st0

 すると、テープをまたがって記録されているファイルのファイルから復元することができる。
 実行するとおそらくこんな具合にワーニングメッセージが出るが。

 cpio: warning: skipped ??????? bytes of junk

 「???????」のところには何らかの数値が入る。要するに読み飛ばされるデータのバイト数である。

 ひとまずこれで、2本目以降のデータをなんとか復元することも可能ではある。

メッセージを送る