• ベストアンサー

デバイスファイルの考え方

GlassMoonの回答

回答No.7

デバイスファイルってのは質問どおり2種類あります。 でも両方とも同じディスクを表しているんです。 /dev/dskの下に配置される論理パスは通常はブロックデバイスって言います。 一方の/dev/rdskの下に配置される論理パスはキャラクタデバイスって言います。 この2つ共に同じディスクを元に作成される論理パスなんですが、OSが使う用途によって分けているものです。 具体的に言うとブロックデバイスってものは処理に必要なデータをブロックという単位で転送します。 1ブロックは512バイトなんですが簡単に言えばこの種類のデバイスを指定した場合はOSは512バイトずつ読み書きするってことです。 通常ディスクへのアクセスはこちらが使用されます。 じゃあ一方のキャラクタデバイスはって言うと、こっちは処理に必要なデータを1キャラクタ(1バイト)ずつ転送します。 細かな処理はできますがブロックデバイス程のスピードではアクセスできません。 例をあげて言うならこんな感じでしょうか? プールに水が入っていたとします。 ここから水をかき出すときにバケツを使うのか、それとも茶碗を使うのかって感じですかね。 バケツを使えば一度にたくさんの水を出せますけど細かな調整は難しいですよね 一方の茶碗を使えば出す量はバケツに及びませんけど細かな量調整ができますよね この場合プールってのがディスクでバケツを使うってのがブロックデバイス、茶碗を使うってのがキャラクタデバイスって事にあたります。 カーネルは使用する用途によってこの2つを使い分けているんです。 と言っても私たちユーザは直接カーネルに指示を出したりできませんからコマンドを使って指示を出しますよね つまりコマンドの引数指定で指示するときに使い分けているんです。 基本的にほとんどのコマンドでデバイスファイルを引数として指定する場合キャラクタデバイスです。 ブロックデバイスを指定するコマンドは少なくてmount、umount、dfぐらいです。 mountコマンドで例をあげるなら mount△[オプション]△「ブロックデバイスファイル名」△「マウントポイント」 これがmountコマンドの書式ですよね 一方キャラクタデバイスを使用するコマンドは newfs△[オプション]△「キャラクタデバイスファイル名」 こんなコマンドですよね。 こんな感じでコマンドによって勝手に使い分けしてますから使う側の私たちはそんなに気にしなくてもOKです。 これが1つ目の質問の回答です。 領域を割り当てるってのはおそらくマウントするってことだと思いますが、上に書いた通りブロックデバイスを指定します。 ちなみに/devの下にあるデバイスは全て論理パスです。 コマンドで/devices配下の物理パスを指定するものは無いと思いますよ。 2つ目の質問ですがスライスってのは論理ディスクWindowsで言ったらパーティションにあたるものです。 ただしIA-Solarisの場合はちょっと違いがあります。 IA-SolarisはWindowsなどの別OSとのデュアルブートを行うために1本のディスクの中にSolaris専用領域であるソラリスパーティションをまず作成します。 そしてそのソラリスパーティションの中をスライスで論理的に分けて使用しています。 ですから混乱しやすいですがWindowsで言うパーティションにあたるのは厳密に言えばソラリスパーティションのことです。 SPARCマシンの場合はそもそもWindowsとデュアルブートってのがありえませんからパーティションってのはスライスとほぼイコールだと思ってもらってかまわないと思います。 最後に論理パスの命名規則ですが、デバイスの名前ってcxtxdxsx(xは0から始まる数字)ですよね ここで”c”ってのはコントローラ# これはSCSIなどのコントローラのチャネルにつけられる番号です。 ですからデュアルチャネルのSCSIはコントローラ#を2つ持っていますよね ”t”ってのはターゲットID、わかりやすく言えばSCSI IDやファイバでのループIDなんかがこの番号です。 ”d”ってのはディスク#(LUN#)普通はLUN#っていうかな LUNってのはLogical Unit Numberの略です。 なんに使うのかっていうと、同じSCSIチャネルから接続されてかつ同じSCSI IDを持つディスクが複数ある状況が想像できるでしょうか? つまり1本目のディスクがc1t1で始まってます2本目のディスクもc1t1で始まっている。 この状況下以外では”d”に意味は無いですよね そもそもチャネルが違うなら”c”の番号が違うんですから”d”の番号を変える必要が無いです。 SCSI IDが違うならやっぱり”d”の番号を変える必要は無いですよね。 この状況がわからない場合はLUNの意味はわからないと思います。 結論から言えばRAID装置を使用した場合、この状況になります。 RAID装置ってのは中にたくさんのディスクを入れて複数のディスクを使って論理的な冗長化されたディスクを作る技術ですよね。 このとき作成される冗長化された論理的なディスクのことをLUNって言うんです。 ですが1台のRAID装置の中には複数のLUNが作成できます。 ここで”d”の数字が活躍します。 だからLUN#って言うんです。 ちなみにどう活躍するのかって言うと RAID装置のターゲットID(tの数字のことです。最近はファイバチャネルの場合が多いんであえてSCSI IDとは書きません。)ってどこでつけられると思いますか? 普通IDはディスクをコントロールする基盤でつけられます。(ファイバチャネルのファブリック接続の場合はちょっと違いますがここでは考えないでください) RAID装置の場合、RAID装置の筐体の入り口であるRAIDコントローラ部分でつけられるってことです。 つまり同じコントローラの下にあるLUNは全て同じターゲットIDになるってことです。 こういう状況では”c”の番号も同じ、”t”の番号も同じになってしまいます。 ここでディスクを区別するのにLUN#を使うんです。 これがLUN#の使い方です。 最後に”s”は言うまでも無くスライス#です。 こんな感じでしょうか?

関連するQ&A

  • Solaris(SPARC)のファイルシステムについて

    dfコマンドでディスクスライスを参照した場合、 ファイルシステムで"c0t0d0s0"って表示されますが、 『c,t,d,s』って、それぞれどんな意味なんですか? "s"はスライスのような気はするのですが…。 #df -k ファイルシステム kbytes 使用済み 使用可能 capacity マウント先 /proc 0 0 0 0% /proc /dev/dsk/c0t0d0s0 1015909 491317 463638 52% / /dev/dsk/c0t0d0s1 1015909 798691 156264 84% /usr fd 0 0 0 0% /dev/fd /dev/dsk/c0t0d0s3 1015909 529819 425136 56% /var /dev/dsk/c0t0d0s4 1015909 904926 50029 95% /opt swap 5037840 1998296 3039544 40% /tmp

  • CDROMのマウントについて

    初めて投稿させて頂きます。初心者です。 Ultra機にSolaris10SPARC版のコアシステムサポートを(分けありで)インストールしたのですが、squidを入れようと思ってCDROMにsquid-2.6.STABLE2.tarを入れて、マシンにCDROMを入れたのですがマウントしません。 下記が起動時のファイルシステムです。 /dev/rdsk/c0t0d0s1: is logging. /dev/rdsk/c0t0d0s4: is logging. /dev/rdsk/c0t0d0s5: is logging. 下記が現在の/etc/vfstabの中です。 #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # fd - /dev/fd fd - no - /proc - /proc proc - no - /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no - /dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s3 /usr ufs 1 no - /dev/dsk/c0t0d0s2 /dev/rdsk/c0t0d0s2 /var ufs 1 no - /dev/dsk/c0t0d0s5 /dev/rdsk/c0t0d0s5 /data ufs 2 yes - /dev/dsk/c0t0d0s4 /dev/rdsk/c0t0d0s4 /opt ufs 2 yes - /dev/dsk/c0t0d0s1 /dev/rdsk/c0t0d0s1 /swap ufs 2 yes - /devices - /devices devfs - no - ctfs - /system/contract ctfs - no - objfs - /system/object objfs - no - swap - /tmp tmpfs - yes - インストール時のファイルシステムの指定に問題があるのでしょうか? どなたか解決策をご教示下さい。 宜しくお願い致します。

  • DISK2台使用してsolaris10にてミラーリング設定

    ・OS:Solaris10(SPARC版):初心者です。 ・HDD2台使用しています。 1台目は通常OSインストールし、2台目にてミラーリング設定。 教えて頂きたい事はミラーリング設定のやり方をご教授頂けたら幸いです。 自分なりに最初は色々とインターネットで調べてやってみましたが metadb: Jigen1108: c0t0d0s7: スワップデバイスである c0t0d0s1 とオーバーラップしますのメッセージが出てうまくいきませんでした。 (コマンド:metadb -a -f -c2 c0t0d0s7 c0t1d0s7) ・1台目 0 root wm 12549 - 24595 23.44GB 1 swap wu 0 - 501 1000.08MB 2 backup wm 0 - 38306 74.53GB 3 usr wm 24596 - 38306 26.67GB 4 var wm 854 - 6023 10.06GB 5 home wm 6024 - 12548 12.69GB 6 unassigned wm 0 0 7 unassigned wu 100 - 199 199.22MB ・2台目 Part Tag Flag Cylinders Size 0 unassigned wm 12549 - 24595 23.44GB 1 unassigned wu 0 - 501 1000.08MB 2 backup wu 0 - 38306 74.53GB 3 unassigned wm 24596 - 38306 26.67GB 4 unassigned wm 854 - 6023 10.06GB 5 unassigned wm 6024 - 12548 12.69GB 6 unassigned wm 0 0 7 unassigned wu 100 - 199 199.22MB ・vfstab /dev/dsk/c0t0d0s1 - - swap - no - /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no - /dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s3 /usr ufs 1 no - /dev/dsk/c0t0d0s4 /dev/rdsk/c0t0d0s4 /var ufs 1 no - /dev/dsk/c0t0d0s5 /dev/rdsk/c0t0d0s5 /export/home ufs 2 yes 他に足りない情報があれば記載いたしますので ミラーリングについてご教授お願いします。

  • dfコマンドの出力結果について

    お世話になります。 仕事でsolarisサーバを扱うことになったのですが、 まったく知識がなく聞ける相手もいないため、質問させていただきます。 dfコマンドのヘルプを見ると、以下のような例が出ていました。     /         (/dev/dsk/c0t0d0s0 ): 287530 blocks  92028 files     /system/contract  (ctfs       ):    0 blocks 2147483572 files     /system/object   (objfs       ):    0 blocks 2147483511 files     /usr        (/dev/dsk/c0t0d0s6 ): 1020214 blocks  268550 files     /proc       (/proc       ):    0 blocks   878 files     /dev/fd      (fd        ):    0 blocks    0 files     /etc/mnttab    (mnttab      ):    0 blocks    0 files     /var/run      (swap       ): 396016 blocks   9375 files     /tmp        (swap       ): 396016 blocks   9375 files     /opt        (/dev/dsk/c0t0d0s5 ): 381552 blocks  96649 files     /export/home    (/dev/dsk/c0t0d0s7 ): 434364 blocks  108220 files この情報の見方について教えていただきたいのですが、、、 ・「 /         (/dev/dsk/c0t0d0s0 )」は、  ディスク:c0t0d0 のスライス:s0が、/にマウントされている。 ・「/usr        (/dev/dsk/c0t0d0s6 )」は、  ディスク:c0t0d0 のスライス:s6が、/usrにマウントされている。 ・c0t0d0s0とc0t0d0s6は、同じディスクに存在する別のスライス。 という認識でよいでしょうか? ・「/system/contract  (ctfs       )」は、  /system/contractにマウントされているctfsというのは何でしょうか?  マニュアルには「デバイスまたはファイルシステム」と書かれていますが、  ファイルシステムとするとctfsはどこのディスクに存在するのでしょうか。  ・dfで表示されないスライスの情報はどうやって調べるのでしょうか?  format→partition→printではたくさんのスライスが表示されますが、  dfコマンドの出力結果にはすべてが出てきません。  スライスがどのように使用されているかを調べる方法はありますでしょうか? 知識がないためわけのわからないことを聞いているのかもしれませんが、 なにかヒントでもいただけると幸いです。 よろしくお願いいたします。

  • HP-UXにおけるDVDのmountについて

    OS:HP-UX 11i v3 Oracle11g for HP-UX Itaniumをインストールしようとしています。 WebよりダウンロードしたzipファイルをDVDに焼き、 そのDVDをHP-UXでmountしようとしているのですが、うまくできません。 以下、下記マニュアルより抜粋。 「Oracle Databaseクイック・インストレーション・ガイド 11gリリース1(11.1) for HP-UX Itanium」 http://otndnld.oracle.co.jp/document/products/oracle11g/111/hpux/E05990-01/toc.htm +++++++++++++++++++++++++++++++++++++++ 9 製品ディスクのマウント 3. 適切なディスクをディスク・ドライブに挿入し、次のようなコマンドを入力してマウントします。 # /usr/sbin/mount -F cdfs -o rr /dev/dsk/cxtydz /SD_DVD +++++++++++++++++++++++++++++++++++++++ 以下、実行コマンド。 *************************************** # ioscan -fnC disk Class I H/W Path Driver S/W State H/W Type Description =============================================================================== disk 2 0/1/1/0.0.0.0.0 sdisk CLAIMED DEVICE HP IR Volume /dev/dsk/c0t0d0 /dev/dsk/c0t0d0s2 /dev/rdsk/c0t0d0 /dev/rdsk/c0t0d0s2 /dev/dsk/c0t0d0s1 /dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s1 /dev/rdsk/c0t0d0s3 # mkdir /SD_CDROM # /usr/sbin/mount -F cdfs -o rr /dev/dsk/c0t0d0 /SD_CDROM /dev/dsk/c0t0d0: unrecognized file system *************************************** お気づきの点がありましたらどうぞ宜しくお願い致します。

  • fsck での修復について

    DELL optiplex GX1 Solaris 8 上記環境なのですが電源を入れるとHost nameを表示した(白画面・黒文字)あとに The /var file system (/dev/rdsk/c0d0s4) is begin checked. /dev/rdsk/c0d0s4: UNREF DIR I=176162 OWNER=root MODE=40775 /dev/rdsk/c0d0s4: SIZE=512 MTIME=Sep 7 21:58 2003 (RECONNECTED) /dev/rdsk/c0d0s4: DIR I=27575 CONNECTED. RARENT WAS I=3 /dev/rdsk/c0d0s4: UNREF DIR I=27575 OWNER=root MODE=40775 /dev/rdsk/c0d0s4: SIZE=512 MTIME=Sep 7 21:58 2003 (RECONNECTED) /dev/rdsk/c0d0s4: DIR I=27575 CONNECTED. RARENT WAS I=104578 /dev/rdsk/c0d0s4: LINK COUNT lost+found I=3 OWNER=root MODE=40700 /dev/rdsk/c0d0s4: SIZE=8192 MTIME=Sep 5 02:25 2003 COUNT 6 SHOULD BE 7 /dev/rdsk/c0d0s4: LINK COUNT INCREASING /dev/rdsk/c0d0s4: UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY WARNING - Unable to repair the /var filesystem. RUN fsck manually (fsck -F ufs /dev/rdsk/c0d0s4) EXIT the shell when done to continue the boot process と表示されてしまいます。シングルユーザモードでの起動は可能なので mountコマンドで/dev/dsk/c0d0s4をマウントさせようすると #mount -F ufs /dev/dsk/c0d0s4 mount: the state of /dev/dsk/c0d0s4 is not okay and it was attempted to be monted read/write mount: Please run fsck adn try again となります。 この場合修復は無理でしょうか?fsckコマンド等で修復できるようであれば修復方法を教えてください。 よろしくお願いします。

  • Solaris8で"newfs"エラー

    Solaris8 for SUN SPARCで、外付のDISKを追加して、 "newfs /dev/rdsk/c1t0d0s0"を行うと "/dev/rdsk/c1t0d0s0: Device busy"と 表示されます。なぜファイルシステムが作成されないのでしょう? もちろんformat,スライス分割は完了しているのですが、 教えてください。

  • /home/export の容量が100%で、 ダウンする

    管理者が入院で不在となってしまい、代役をしていたのですが、Solaris(unix)は 特にメンテナンス不要と聞いて、実際、この半年、手をかけたことが無いのですが、 一昨日よりサーバーがダウン(ダンマリ停止)することが発生しています。 少ない知恵で調べたのですがどうやら「/expor/home」の空き不足のようです。 しかし不要なファイルを削除し、空きを確保しているのですが改善されません。 下記のような環境ですが、どんなことでも結構ですので知恵を貸して下さい。 OS:Solaris (Unix) 5.5.1 #root>df -k Filesystem kbytes used avail capacity Mounted on /dev/dsk/c0d0s0 62623 29112 27251 52% / /dev/dsk/c0d0s6 480815 238241 194494 56% /usr /proc 0 0 0 0% /proc fd 0 0 0 0% /dev/fd /dev/dsk/c0d0s4 192423 97993 75190 57% /var /dev/dsk/c0d0s7 461111 422939 0 100% /export/home /dev/dsk/c0d0s5 384847 199214 147153 58% /opt /dev/dsk/c0d0s3 288391 237727 21834 92% /usr/openwin swap 102460 12 102448 1% /tmp

  • fssnapについて

    fssnapでファイルのバックアップをとろうと思っていますが、下記のようなエラーメッセージが出てしまいます。 fssnap: ioctl: error 22: Invalid argument /や/varで発生しており、/homeのバックアップをとるときは特に問題ありません。 /etc/vfstabは下記の通りです。 /dev/md/dsk/d4 - - swap - no - /dev/md/dsk/d1 /dev/md/rdsk/d1 / ufs 1 no - - /dev/md/dsk/d2 /dev/md/rdsk/d2 /var ufs 1 no - /dev/md/dsk/d3 /dev/md/rdsk/d3 /home ufs 2 yes - /devices - /devices devfs - no - swap - /tmp tmpfs - yes - もしわかるかたがいらっしゃいましたら、ご回答宜しくお願いいたします。

  • (Solaris10)マウントポイントの変更方法

    Solaris10(SPARC版)で、マウントポイント名(/disk01 ⇒ /DISK)を変更したく、 下記の操作手順で試みたところ「マウントポイント /DISK が存在しません。」 とエラーが出て失敗してしまいました。 申し訳ありませんが正しいマウントポイント名の変更のしかたを御教示ください。 よろしくお願いします。 《操作手順》 #umount /disk01 #vi /etc/vfstab (下記の様に内容変更) #mount /DISK mount: マウントポイント /DISK が存在しません。 《変更前》 /dev/dsk/c1t2d0s1 /dev/rdsk/c1t2d0s1 /disk01 ufs 2 yes - 《変更後》 /dev/dsk/c1t2d0s1 /dev/rdsk/c1t2d0s1 /DISK ufs 2 yes -