EN JA
CTLADM(8)
CTLADM(8) FreeBSD System Manager's Manual CTLADM(8)

名称

ctladmCAM ターゲット層 (Target Layer) 制御ユーティリティ

書式

ctladm < command>[ target:lun][ generic args][ command args]

ctladm tur <target:lun>[ general options]

ctladm inquiry <target:lun>[ general options]

ctladm reqsense <target:lun>[ general options]

ctladm reportluns <target:lun>[ general options]

ctladm read <target:lun>[ general options]< -l lba>< -d datalen>< -f file|->< -b blocksize_bytes>[ -c cdbsize][ -N]

ctladm write <target:lun>[ general options]< -l lba>< -d datalen>< -f file|->< -b blocksize_bytes>[ -c cdbsize][ -N]

ctladm bbrread <target:lun>[ general options]< --l lba>< --d datalen>

ctladm readcap <target:lun>[ general options][ -c cdbsize]

ctladm modesense <target:lun>< -m page | -l>[ -P pc][ -d][ -S subpage][ -c size]

ctladm start <target:lun>[ general options][ -i][ -o]

ctladm stop <target:lun>[ general options][ -i][ -o]

ctladm synccache <target:lun>[ general options][ -l lba][ -b blockcount][ -r][ -i][ -c cdbsize]

ctladm shutdown [ general options]

ctladm startup [ general options]

ctladm hardstop

ctladm hardstart

ctladm lunlist

ctladm delay <target:lun>< -l datamove|done>< -t secs>[ -T oneshot|cont]

ctladm realsync <on|off|query>

ctladm setsync interval <target:lun>< -i interval>

ctladm getsync <target:lun>

ctladm inject < -i action>< -p pattern>[ -r lba,len][ -s len fmt [ args]][ -c][ -d delete_id]

ctladm create < -b backend>[ -B blocksize][ -d device_id][ -l lun_id][ -o name=value][ -s size_bytes][ -S serial_num][ -t device_type]

ctladm remove < -b backend>< -l lun_id>[ -o name=value]

ctladm modify < -b backend>< -l lun_id>< -s size_bytes>

ctladm devlist [ -b backend][ -v][ -x]

ctladm port [ -l][ -o on|off][ -w wwpn][ -W wwnn][ -p targ_port][ -t fe_type][ -q][ -x]

ctladm dumpooa

ctladm dumpstructs

ctladm islist [ -v][ -x]

ctladm islogout < -a | -c connection-id | -i name | -p portal>

ctladm isterminate < -a | -c connection-id | -i name | -p portal>

ctladm help

解説

ctladm ユーティリティは、CAM ターゲット層 (CTL) にアクセスして、制御する方法を提供するように設計されています。それは、CTL 層に SCSI コマンドを送信する方法を提供し、さらに、 SCSI コマンドを利用するいくつかのメタコマンドも提供しています。 (例えば、 lunlist コマンドは、 SCSI REPORT LUNS と INQUIRY コマンドを使用して実装されています。)

ctladm ユーティリティには、関数の多くがデバイスの識別子を要求する、多くの主要な関数があります。デバイス識別子は、次の形式を取ります:

target:lun
動作する (ほとんど常に 0 の) ターゲットと LUN 番号を指定します。

ctladm ユーティリティの主要な関数の多くは、次のオプションの引数を取ります:

-C retries
万一失敗の場合にコマンドを再び試みる回数を指定します。
-D device
オープンするデバイスを指定します。これによって、送信するコマンドのためにオープンされるデフォルトのデバイス /dev/cam/ctl 以外のデバイスをオープンすることができます。
-I id
使用する開始プログラム (initiator) の番号を指定します。デフォルトで、 ctladm は、開始プログラム (initiator) の番号として 7 を使用します。

主要なコマンドは、次の通りです:

tur
デバイスに SCSI TEST UNIT READY コマンドを送信し、それが準備できているかどうかを報告します。
inquiry
デバイスに SCSI INQUIRY コマンドを送信し、返された問い合わせデータのいくつかを表示します。
reqsense
デバイスに SCSI REQUEST SENSE コマンドを送信し、返されたセンス情報を表示します。
reportluns
デバイスに SCSI REPORT LUNS コマンドを送信し、サポートされている LUN を表示します。
read
デバイスに SCSI READ コマンドを送信し、ファイルまたは標準出力 (stdout) に要求されたデータを書き込みます。
-l lba
READ のために開始する論理ブロックアドレス (Logical Block Address) を指定します。 10 進数、(0 で始まる) 8 進数、(0x で始まる) 16 進数、または strtoull(3) によってサポートされた他の基数 (base) で、これを指定することができます。
-d datalen
READ 要求の 512 バイトのブロック単位の長さを指定します。
-f file
READ コマンドによって読み込まれるデータのための宛先 (destination) を指定します。ファイル名または標準出力 (stdout) のための‘-’のいずれかを指定します。
-c cdbsize
READ 要求のために使用される最小の SCSI CDB (コマンドデータブロック) サイズを指定します。許可された値は、6、10、12 と 16 です。要求されたデータの LBA と量に依存して、より大きな CDB サイズが、要求を満足するために使用されます。 (例えば、0xffffffff を越える LBA については、READ(16) が要求を満足するために使用されなければなりません。)
-b blocksize
基本的な SCSI デバイスのブロックサイズを指定するので、転送の長さを正確に計算することができます。 SCSI READ CAPACITY コマンドによってブロックサイズを取得することができます。
-N
読み込みを行うとき、カーネルから ctladm にデータをコピーしません、データをコピーせずに、コマンドを単に実行します。これは、性能のテストのために使用されます。
write
ファイルまたは標準入力 (stdin) からデータを読み込み、 SCSI WRITE コマンドを使用して、デバイスにデータを書き込みます。
-l lba
WRITE のために開始する論理ブロックアドレス (Logical Block Address) を指定します。 10 進数、(0 で始まる) 8 進数、(0x で始まる) 16 進数、または strtoull(3) によってサポートされた他の基数 (base) で、これを指定することができます。
-d atalen
WRITE 要求の 512 バイトのブロック単位の長さを指定します。
-f file
WRITE コマンドによって書き込まれるデータのための送り元 (source) を指定します。ファイル名または標準入力 (stdin) のための‘-’のいずれかを指定します。
-c cdbsize
READ 要求のために使用される最小の SCSI CDB (コマンドデータブロック) サイズを指定します。許可された値は、6、10、12 と 16 です。要求されたデータの LBA と量に依存して、より大きな CDB サイズが、要求を満足するために使用されます。 (例えば、0xffffffff を越える LBA については、READ(16) が要求を満足するために使用されなければなりません。)
-b blocksize
基本的な SCSI デバイスのブロックサイズを指定するので、転送の長さを正確に計算することができます。 SCSI READ CAPACITY コマンドによってブロックサイズを取得することができます。
-N
書き込みを行うとき、 ctladm からデータをカーネルにコピーしません、データをコピーせずに、コマンドを単に実行します。これは、性能のテストのために使用されます。
bbrread
配列中の他のディスクから再構成される RAID セットのディスクで場合によっては強制的に不良ブロックにするために論理デバイスに SCSI READ コマンドを発行します。このコマンドは、通常の状態にある配列でのみ使用されるべきです。危機的な配列で使用され、再マップされる不良ブロックがディスクが配列でまだアクティブなディスクの 1 つの上であるなら、配列をオフラインにするかもしれません。

特に、このコマンドのためのデータは、廃棄され、ユーザに返されません。

どの LUN から読み込まれるかを決定するために、ユーザは、どの LUN のディスクが不良ブロックに属しているか最初に決定するべきです。次に、 bbrread コマンドにどの LBA を渡すかを決定するために配列のための論理ブロックアドレスに不良ディスクブロックを逆にマップするべきです。

このコマンドは、主としてテストを対照としています。実際には、不良ブロックの再マップは、一般的にカーネル内の Disk Aerobics と Disk Scrubbing コードによってトリガされます。

-l lba
開始する論理ブロックアドレス (Logical Block Address) を指定します。
-d datalen
LUN から読み込むためのバイト単位のデータの量を指定します。これは、LUN のブロックサイズの倍数でなければなりません。
readcap
デバイスに SCSI READ CAPACITY コマンドを送信し、デバイスサイズとデバイスブロックサイズを表示します。デフォルトで、READ CAPACITY(10) が使用されます。しかしながら、デバイスが 0xffffffff の最大の LBA を返すなら、 ctladm は、自動的に SERVICE ACTION IN(16) オペコードのサービスアクションとして実装される READ CAPACITY(16) を発行します。ユーザは、 -c 引数で最小の CDB サイズを指定することができます。 -c オプションのために有効な値は、10 と 16 です。 10 バイトの CDB が指定され、返された最大の LBA が 0xffffffff であるなら、要求は、16 バイトの CDB で自動的に再発行されます。
modesense
デバイスに SCSI MODE SENSE コマンドを送信し、要求された (複数の) モードページまたはページリストを表示します。
-m page
表示するべきモードページを指定します。このオプションと -l オプションは、相互に排他的です。しかしながら、2 つのうちの 1 つは、指定されなければなりません。モードページ番号は、10 進数または 16 進数で指定されます。
-l
デバイスによってサポートされたモードページのリストが返されることを要求します。このオプションと -m オプションは、相互に排他的です。しかしながら、2 つのうちの 1 つは、指定されなければなりません。
-P pc
モードページの制御値を指定します。指定できる値は、次の通りです:
0
現在の値。
1
変更可能な値のビットマスク。
2
デフォルト値。
3
保存された値。
-d
モードセンス要求を送信するとき、ブロック記述子を無効にします。
-S subpage
モードセンス要求で使用されるサブページ (subpage) を指定します。
-c cdbsize
モードセンス要求のために使用される CDB サイズを指定します。サポートされる値は、6 と 10 です。
start
設定されたスタートビット (start bit) で指定された LUN に SCSI START STOP UNIT コマンドを送信します。
-i
CDB の即時 (immediate) ビットを設定します。 CTL が即時ビットをサポートしないので、これは、CTL が適切なエラーを返すことを確かめるために主に役立つことに注意してください。
-o
CDB の Copan 所有者のオンライン/オフライン (on/offline) ビットを設定します。このフラグが使用されるとき、LUN は、再びオンラインにマークされます ( shutdownstartup コマンドの説明を参照)。このフラグがスタート (start) コマンドで使用されるとき、LUN は、スピンアウト (spin out) されません。 LUN のディスクをスピンアウトするために -o フラグなしのスタート (start) コマンドを使用する必要があります。
stop
クリアされたスタートビットで指定された LUN に SCSI START STOP UNIT コマンドを送信します。 LUN を停止するために順序付けられたタグを使用するので、それが停止される前にすべての保留されている I/O の実行を保証することができます。 (CTL は、とにかくこれを保証しますが、 ctladm は、完全性のために順序付けられたタグを送信します。)
-i
CDB の即時ビットを設定します。 CTL が即時ビットをサポートしないので、これは、CTL が適切なエラーを返すことを確かめるために主に役立つことに注意してください。
-o
CDB の Copan 所有者のオンライン/オフライン (on/offline) ビットを設定します。このフラグが使用されるとき、LUN は、スピンダウン (spin down) され、 ("Logical unit not ready, manual intervention required") (論理ユニットの準備ができていません、手動の介入が必要です) でオフラインとなります。 shutdownstartup コマンドの説明を参照してください。
synccache
デバイスに SCSI SYNCHRONIZE CACHE コマンドを送信します。デフォルトで、SYNCHRONIZE CACHE(10) 使用されます。しかしながら、指定された開始する LBA が 0xffffffff より大きいか、または長さが 0xffff より大きいなら、SYNCHRONIZE CACHE(16) が使用されます。ユーザが -c 引数で 16 バイトの CDB を指定するなら、16 バイトのコマンドも使用されます。
-l lba
同期するためのキャッシュ領域の開始する LBA を指定します。このオプションは、CTL に対して no-op (無操作) です。利用者が SYNCHRONIZE CACHE コマンドを送信するなら、すべての LUN のためのキャッシュを sync (同期) します。
-b blockcount
同期するためのキャッシュ領域の長さを指定します。このオプションは、CTL に対して no-op (無操作) です。利用者が SYNCHRONIZE CACHE コマンドを送信するなら、すべての LUN のためのキャッシュを sync (同期) します。
-r
開始する LBA のための相対アドレス指定します。 CTL は、リンクされたコマンドのためだけで動作するので、相対アドレス指定をサポートしません、そして CTL は、リンクされたコマンドをサポートしません。
-i
sync することを終了するためにキャッシュのために待つのでではなく、 SYHCHRONIZE CACHE コマンドを発行した直後に状態を返すようにターゲットに伝えます。 CTL は、このビットをサポートしません。
-c cdbsize
最小の CDB サイズを指定します。有効な値は、10 と 16 バイトです。
shutdown
クリアされたスタートビットで SCSI START STOP UNIT コマンドを発行し、オンライン/オフライン (on/offline) ビットをすべてのダイレクトアクセス LUN に設定します。これは、すべてのダイレクトアクセス LUN をスピンダウン (spin down) し、それらをオフラインとマークします ("Logical unit not ready, manual intervention required") (論理ユニットの準備ができていません、手動の介入が必要です)。いったんオフラインとマークされると、設定されたスタートビットと設定されたオンライン/オフライン (on/offline) で START STOP UNIT コマンドを送信することによって、状態をクリアすることができます、 ctladm コマンドの startupstart は、これを達成します。オンライン/オフライン (on/offline) ビットは、 SCSI START STOP UNIT コマンドへの非標準の Copan 拡張ですので、開始プログラム (initiator) から単に通常の開始コマンドを送信することは、状態をクリアしないことに注意してください。 (これは、意図的です。)
startup
すべてのダイレクトアクセス LUN に設定されたスタートビットと設定されたオンライン/オフライン (on/offline) で SCSI START STOP UNIT コマンドを発行します。これは、再びすべてのダイレクトアクセス LUN を "online"とマークします。それによって、任意の LUN は、開始しません。設定されたオンライン/オフライン (on/offline) なしの個別の開始コマンドは、そのために必要です。
hardstop
すべてのダイレクトアクセス LUN をすべて停止し、オフラインビットを設定するためにカーネルの機能を使用します。上記の shutdown コマンドと異なり、このコマンドによって、I/O がアクティブな状態で LUN をシャットダウンすることができます。また、LUN を停止することができるように、予約を中止するために任意の予約された LUN に LUN reset を発行します。代わりに、 shutdown コマンド。訳注: 文章の編集ミスか?
hardstart
このコマンドは、上に記述された startup コマンドと機能的に同一です。主な違いは、LUN が列挙され、 ctladm によっての代わりにカーネル内のフロントエンドターゲットドライバ (Front End Target Driver) によって送信されたコマンドということです。
lunlist
CTL で登録されたすべての LUN をリストします。このコマンドが ioctl ポートを使用するので、FETD (Front End Target Drivers) が有効になるとき、単に動作します。このコマンドは、1 つの LUN で REPORT LUNS を行い、そしてその後、システムの各 LUN で INQUIRY を行うことと同等です。
delay
与えられた位置でコマンドを遅延します。現在、コマンドが遅延される次の 2 つの場所があります: データが転送される (“datamove”) 前とホスト (“done”) に状態を送信する直前です。 2 つのうちの 1 つは、 -l オプションに引数として供給されなければなりません。また、 -t オプションも指定されなければなりません。
-l delayloc
指定された位置で (複数の) コマンドを遅延します。これは、データ移動ステージ (datamove) またはコマンド完了 (done) の前のいずれかを指定できます。
-t delaytime
指定された秒数 (複数の) コマンドを遅延します。これは、指定されなければなりません。 0 に設定されるなら、この特定の位置 (datamove または done) のために以前に設定された遅延をクリアします。
-T delaytype
遅延のタイプを指定します。デフォルトで、 delay オプションは、与えられた LUN に送信される次のコマンドを遅らせます。 -T cont オプションで、すべてのコマンドは、指定された期間遅延されます。 -T oneshot で、与えられた LUN に送信された次のコマンドは、遅延され、すべてのその後のコマンドは、普通に完了されます。これは、デフォルトです。
realsync
CTL の SYNCHRONIZE CACHE の振る舞いを問い合わせて、制御します。‘query’引数は、SYNCHRONIZE CACHE コマンドがバックエンドに送信されているかどうかを表示します。デフォルトは、バックエンドに SYNCHRONIZE CACHE コマンドを送信することです。‘on’引数によって、すべての LUN に送信されたすべての SYNCHRONIZE CACHE コマンドは、すべてのバックエンドに送信されます。‘off’引数によって、すべての LUN に送信されたすべての SYNCHRONIZE CACHE コマンドは、成功した状態で開始プログラム (initiator) に直ちに返されます。
setsync
与えられた lun に対して、送信されるあらゆる N 番目の SYNCHRONIZE CACHE コマンドのみ実際にサービスします。 SYNCHRONIZE キャッシュコマンドを送信するための最適な期間のデバッグのために、これを使用することができます。 0 の間隔は、キャッシュが SYNCHRONIZE CACHE コマンドが受信されるたびに、この LUN のためにフラッシュされることを意味します。

修正したいターゲットと LUN を指定しなければなりません。

getsync
上記の setsync コマンドによって設定されるように、実際に SYNCHRONIZE CACHE コマンドをサービスする間隔を取得します。報告された数は、あらゆる N 番目の SYNCHRONIZE CACHE コマンドでキャッシュを実際にフラッシュすることを意味します。 0 の値は、毎回キャッシュをフラッシュすることを意味します。

問い合わせたいターゲットと LUN を指定しなければなりません。

inject
与えられたパターンと一致するコマンドが見つかるとき、指定された LUN のための指定されたタイプのエラーを注入します。返されたセンスデータは、LUN のための制御モードページ (ページ 0xa) の D_SENSE ビットの状態に依存する、固定または記述子形式のいずれかです。

エラーは、他の理由のために、まだ失敗していないコマンドのためだけに注入されます。デフォルトで、指定されたパターンと一致する最初のコマンドだけが、指定されたエラーで返されます。

-c フラグが指定されるなら、パターンと一致するすべてのコマンドは、エラー注入 (injection) コマンドが -d フラグで削除されるまで、指定されたエラーで返されます。

-i action
返されるエラーを指定します:
aborted
センスキー ABORTED COMMAND (0x0b) と ASC/ASCQ 0x45,0x00 ("Select or reselect failure") (選択または再選択の失敗) で指定された LUN で、次の一致するコマンドを返します。
mediumerr
センスキー MEDIUM ERROR (0x03) と読み込みのための ASC/ASCQ 0x11,0x00 ("Unrecovered read error") (回復不可能な読み込みエラー) または、書き込みエラーのための ASC/ASCQ 0x0c,0x02 ("Write error - auto reallocation failed") (書き込みエラー - 自動再割り付けが失敗しました) で指定された LUN で、次の一致するコマンドを返します。
ua
センスキー UNIT ATTENTION (0x06) と ASC/ASCQ 0x29,0x00 ("POWER ON, RESET, OR BUS DEVICE RESET OCCURRED") (電源オン、リセットまたはバスデバイスリセットが生じました) で指定された LUN で、次の一致するコマンドを返します。
custom
供給されたセンスデータで指定された LUN で次の一致するコマンドを返します。 -s 引数が指定されなければなりません。
-p pattern
与えられたエラーで返されなければならないコマンドを指定します。
read
エラーは、READ(6)、READ(10)、READ(12)、READ(16) などに適用されるべきです。
write
エラーは、WRITE(6)、WRITE(10)、WRITE(12)、WRITE(16)、WRITE と VERIFY(10) などに適用されるべきです。
rw
エラーは、読み込みと書き込みタイプのコマンドの両方に適用されるべきです。
readcap
エラーは、READ CAPACITY(10) と READ CAPACITY(16) コマンドに適用されるべきです。
tur
エラーは、TEST UNIT READY コマンドに適用されるべきです。
any
エラーは、あらゆるコマンドに適用されるべきです。
-r lba,len
エラーをトリガすべき LBA の範囲の開始する lba と長さを指定します。このオプションは、読み込みおよび/または書き込みパターンが指定されたときのみ適用されます。他のコマンドタイプと共に使用されるなら、エラーは、決してトリガされません。
-s len fmt [ args]
カスタムアクションのために返されるセンスデータを指定します。形式が‘-’であるなら、センスデータの len バイトは、標準入力から読み込まれ、センスバッファに書き込まれます。 len が 252 バイト (最大の許可される SCSI センスデータの長さ) より長いなら、その長さに切り詰められます。センスデータの形式は、 cam_cdparse(3) に説明されています。
-c
エラー注入は、一度起こる代わりに、持続されるべきです。持続エラーは、 -d 引数で削除されなければなりません。
-d delete_id
指定されたエラー注入通し番号を削除します。シリアル番号は、エラーが注入されるとき、返されます。
port
いくつかの CTL フロントエンドポート操作のうちの 1 つを実行します。フロントエンドポートのリストを取得する ( -l)、1 つ以上のフロントエンドのオンまたはオフを切り替える ( -o on|off)、ワールドワイドノード名 (World Wide Node Name) ( -w wwnn) または与えられたポートのためのワールドワイドポート名 (World Wide Port Name) ( -W wwpn) を設定するかのいずれかです。 -l, -o または -w のうちの 1 つ、または -W が指定されなければなりません。 WWNN と WWPN は、両方とも同時に指定されますが、有効にする/無効にするか、またはポートをリストすることと組み合わせることはできません。
-l
すべての CTL フロントエンドポートまたは特定のポートタイプまたは数値をリストします。
-o on|off
指定された CTL フロントエンドポートをオフまたはオンに切り替えます。ポート番号またはポートタイプが指定されないなら、すべてのポートは、オンまたはオフに切り替えられます。
-p targ_port
フロントエンドポート番号を指定します。フロントエンドポートリストでポート番号を見つけることができます。
-q
ポートリストの出力でヘッダを省略します。
-t fe_type
フロントエンドタイプを指定します。現在定義されているポートタイプは、“fc” (Fibre Channel, ファイバチャンネル)、“scsi” (Parallel SCSI, パラレル SCSI)、“ioctl” (CTL ioctl interface, CTL ioctl インタフェース) と“internal” (CTL CAM SIM) です。
-w wwnn
与えられたポートのためのワールドワイドノード名を設定します。これは、単一のポートで実装するためだけ可能であるので、 -n 引数が指定されなければなりません。一般的なルールとして、WWNN は、システムのすべてのポートに渡って同じであるべきです。
-W wwpn
与えられたポートのためのワールドワイドポート名を設定します。これが一つのポート上でインプリメントするのに単に可能であるので、-n 議論が指定されるに違いありません。これは、単一のポートで実装するためだけ可能であるので、 -n 引数が指定されなければなりません。一般的なルールとして、WWPN は、システムのあらゆるポートに対して異なっていなければなりません。
-x
XML 形式でのポートリストを出力します。
dumpooa
CTL で登録された各 LUN のための OOA (Order Of Arrival, 到着の順序) キューをダンプします。
dumpstructs
コンソールに CTL 構造をダンプします。
create
新しい LUN を作成します。バックエンドは、指定されなければなりません、そして要求されたバックエンドに依存して、他のオプションのうちのいくつかは、必要とされます。 LUN が成功して作成されるなら、LUN の設定が表示されます。 LUN の作成が失敗するなら、メッセージは、失敗についての説明が表示されます。
-b backend
-b フラグは、必要です。これは、LUN を作成するとき、使用する指定されたバックエンドを指定します。例は、“ramdisk”と“block”です。
-B blocksize
バイト単位でバックエンドのブロックサイズを指定します。
-d device_id
SCSI INQUIRY VPD ページ 0x83 データで使用する、LUN に関連する文字列を指定します。
-l lun_id
特別の LUN 番号が割り当てられることを要求します。要求された LUN 番号が利用可能でないなら、要求は、失敗します。
-o name=value
バックエンド特有の名/値ペアを指定します。複数の -o 引数が指定されます。使用される引数については、バックエンドの文書を参照してください。
-s size_bytes
バイト単位で LUN のサイズを指定します。いくつかのバックエンドは、サイズ (例えば、ramdisk バックエンド) を設定することができ、他のものについては、サイズは、暗黙です (例えば、ブロックバックエンド)。
-S serial_num
SCSI INQUIRY VPD ページ 0x80 データで使用するシリアル番号を指定します
-t device_type
LUN を作成するときに使用する数値の SCSI デバイスタイプを指定します。例えば、ダイレクトアクセス (Direct Access) タイプは、0 です。このフラグが使用されないなら、作成された LUN のタイプは、バックエンド特有です。すべての LUN タイプがサポートされるとは限りません。現在、CTL は、ダイレクトアクセス (タイプ 0) とプロセッサ (タイプ 3) LUN のみをサポートします。要求されたバックエンドは、CTL がサポートする LUN タイプのすべてサポートするかどうか分かりません。
remove
LUN を削除します。バックエンドは、指定されなければなりません、そして LUN 番号も指定されなければなりません。また、バックエンド特有のオプションは、 -o フラグで指定されます。
-b backend
削除される LUN を所有するバックエンドを指定します。例は、“ramdisk”と“block”です。
-l lun_id
削除する LUN 番号を指定します。
-o name=value
バックエンド特有の名/値ペアを指定します。複数の -o 引数が指定されます。使用される引数については、バックエンドの文書を参照してください。
modify
LUN サイズを修正します。バックエンド (backend)、LUN 番号とサイズが指定されなければなりません。
-b backend
削除される LUN を所有するバックエンドを指定します。例は、“ramdisk”と“block”です。
-l lun_id
削除する LUN 番号を指定します。
-s size_bytes
バイト単位で LUN のサイズを指定します。“block”バックエンドに関して、“auto”キーワードが代わりに渡されます。これは、CTL に裏打ちされたファイルまたはデバイスのサイズを使用するようにします。
devlist
すべての設定された LUN のリストを取得します。また、これは、LUN のサイズとブロックサイズ、シリアル番号とデバイス ID を含みます。
-b backend
バックエンドを指定します。これは、LUN リストを指定されたバックエンドに制限します。例は、“ramdisk”と“block”です。
-v
冗長にします。また、これは、標準の LUN ごとの情報に加えてあらゆるバックエンド特有の LUN 属性を表示します。
-x
生 (raw) の XML をダンプします。カーネルからの LUN リスト情報は、XML 形式で現れ、このオプションによって、生の XML データの表示を可能にします。このオプションと -v-b オプションは、相互に排他的です。 -x を指定するなら、すべての LUN データベースは、XML 形式で表示されます。
islist
現在、実行している iSCSI 接続のリストを取得します。これは、開始プログラムとターゲット名とユニークな接続 ID を含んでいます。
-v
冗長モード。
-x
生の XML をダンプします。カーネルからの接続リスト情報は、XML 形式で提供され、このオプションは、生の XML データの表示を可能にします。
islogout
基準と一致する iSCSI 接続をログアウトする開始プログラムに問い合わせます。
-a
すべての接続をログアウトします。
-c
接続 ID を指定します。
-i
開始プログラム名を指定します。
-p
開始プログラムのポータル (portal) (ホスト名または IP アドレス) を指定します。
isterminate
基準と一致する iSCSI 接続を強制的に終了します。
-a
すべての接続を終了します。
-c
接続 ID を指定します。
-i
開始プログラム名を指定します。
-p
開始プログラムのポータル (portal) (ホスト名または IP アドレス) を指定します。
help
ctladm の使用法の情報を表示します。

使用例

ctladm tur 0:1

SCSI TEST UNIT READY コマンドを LUN 1 に送信します。

ctladm modesense 0:1 -l

LUN 1 によってサポートされたモードページのリストを表示します。

ctladm modesense 0:0 -m 10 -P 3 -d -c 10

LUN 0 で制御モードページ (ページ 10 ) の保存されたバージョンを表示します。ブロックの記述子をフェッチすることを無効にし、デフォルトの 6 バイトのコマンドの代わりに 10 バイトの MODE SENSE コマンドを使用します。

ctladm read 0:2 -l 0 -d 1 -b 512 -f - > foo

LUN 2 から最初の 512 バイトのブロックを読み込み、ファイル foo にそれをダンプします。

ctladm write 0:3 -l 0xff432140 -d 20 -b 512 -f /tmp/bar

ファイル /tmp/bar から 10240 バイトを読み込み、ターゲット 0、LUN 3 に書き込みます。 LBA 0xff432140 から開始すること。

ctladm create -b ramdisk -s 10485760000000000

裏打ちされた格納 (外部記憶域装置) として“偽の” ramdisk で LUN を作成します。 LUN は、およそ 10 テラバイトのサイズを持つことを要求します。

ctladm create -b block -o file=src/usr.sbin/ctladm/ctladm.8

ブロックのバックエンドを使用して、LUN を作成し、裏打ちされた格納 (外部記憶域装置) としてファイル src/usr.sbin/ctladm/ctladm.8 を指定します。 LUN のサイズは、ファイルのサイズに由来します。

ctladm create -b block -o file=src/usr.sbin/ctladm/ctladm.8 -S MYSERIAL321 -d MYDEVID123

ブロックのバックエンドを使用して LUN を作成し、裏打ちされた格納 (外部記憶域装置) としてファイル src/usr.sbin/ctladm/ctladm.8 を指定し、 SCSI VPD ページ 0x80 と 0x83 シリアル番号 ( -S) とデバイス ID ( -d) を指定します。

ctladm remove -b block -l 12

システムからブロックのバックエンドによって取り扱われる LUN 12 を削除します。

ctladm devlist

LUN のバックエンドとシリアル番号とともにシステムの設定された LUN をリストします。これは、フロントエンドターゲットドライバ (Front End Target Drivers) が有効または無効にされるとき、動作します。

ctladm lunlist

すべての LUN の問い合わせデータとデバイスタイプとともにシステムのすべての LUN をリストします。これは、コマンドが ioctl ポートを通過するので、 FETD が有効になるときのみ動作します。

ctladm inject 0:6 -i mediumerr -p read -r 0,512 -c

LUN の最初の 512 ブロックをカバーする、すべての読み込みのための LUN 6 で中間のエラーを注入します。

ctladm inject 0:6 -i custom -p tur -s 18 "f0 0 02 s12 04 02"

次の TEST UNIT READY コマンドのみのための LUN 6 でカスタムエラーを注入します。これは、ある意味では生じるでしょう、NOT READY (0x02) と 0x04,0x02 ("Logical unit not ready, initializing command required") (論理ユニットが準備できていません、要求されるコマンドを初期化します) の ASC/ASCQ のキーの結果となります。

歴史

ctladm ユーティリティは、最初に CTL へのインタフェースとして 2003 年の冬/春の間に書かれました。

作者

Ken Merry <ken@FreeBSD.org>
October 30, 2013 FreeBSD