losstup -aから長さ制限を削除する方法

losstup -aから長さ制限を削除する方法

ループデバイスを表示するにはlosstup -aを使用していますが、長さ制限(62文字)があります。そのため、実際にどのループデバイスが必要なのかを判断することはできません。

前任者:

[root@r7byach]# losetup -a 
/dev/loop0: [fc03]:33030504 (/storage5_vol1/6/ABCD116476-linux-ubuntu-10_04-64b-base-07150/*)
/dev/loop1: [0015]:4933 (/storage4/5/ABCD12345-linux-centos-5-64b-base-86836/hdc)

/dev/loop1 を使用して出力を取得できます。

losetup -a|grep diskPath |cut -f1 -d:|cut -f3 -d/

しかし、名前が完全ではないため、Loop0からデバイスをインポートできません。

サイズ制限に関係なくループデバイスを取得する方法は?

答え1

カーネル2.6.37以降、デフォルトファイルの名前を検索してこれを行うことができます(長さ制限なし)/sys/block/loopX/loop/backing_file。このlosetupコマンドはutil-linux 2.19以降、この方法をサポートしています。

答え2

最新のカーネル(≥2.6.37)については、以下を参照してください。ピーター・ユーゼルの答え。以前のカーネルでは、これらの長さ制限が暗黙的です。

straceはlosetup -a名前を得て示しています。LOOP_GET_STATUS呼び出すioctlloop_get_status_old、これは以下からデータを取得します。struct loop_info。このカーネルデータ構造の名前フィールドは、以下に制限されます。LO_NAME_SIZE= 64バイト。 (loop_get_status64ともありますが、struct loop_info64同じ制限があります。)したがって、制限は暗黙的であり、より良いことはできません。

それにもかかわらず、このデータ構造は基本デバイスまたはファイルの元の名前を表示しますが、名前を変更または削除することもできますlosetup

たとえば、出力にはファイルのlosetupファイルシステム識別子()とinode()が表示されます。st_dev()で始まる行を見ると、ファイルシステムのブロックデバイスを見つけることができます。次に、そのブロックデバイスのマウントポイントを見つけます。次に、ファイル検索を実行します。はい、複雑です。いいえ、より速い方法はありません。st_ino[fc03]:33030504/proc/partitions252 3/proc/mountsfind /mount/point -inum 33030504debugfs一部のファイルシステムタイプの場合)。

関連情報