すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Linux:ファイルがループデバイスに関連付けられているときに「losetup: failed to set up device: Device or resource busy」というエラーメッセージが表示された場合はどうすればよいですか?

最終更新日:Dec 11, 2024

ループデバイスは、Linuxで使用される仮想ブロックデバイスです。 ループデバイスは、通常のファイルをブロックデバイスとしてシミュレートし、オペレーティングシステムが物理ディスクまたはパーティションと同じ方法でファイルにアクセスできるようにします。 losetupコマンドを実行して、Linuxでデバイスマッパーを作成し、ファイルをループデバイスに関連付けることができます。 このトピックでは、Alibaba Cloud Linuxオペレーティングシステムでlosetupコマンドを実行してファイルをループデバイスに関連付けるときに、「losetup: ループデバイスのセットアップに失敗しました: デバイスまたはリソースビジー」というエラーメッセージが表示される問題の原因と解決策について説明します。

問題の説明

  1. オペレーティングシステムに関する情報を照会します。

    sudo cat /etc/os-release

    次のコマンド出力が返されます。

    NAME="Alibaba Cloud Linux"
    VERSION="3 (Soaring Falcon)"
    ID="alinux"
    ID_LIKE="rhel fedora centos anolis"
    VERSION_ID="3"
    UPDATE_ID="9.1"
    PLATFORM_ID="platform:al8"
    PRETTY_NAME="Alibaba Cloud Linux 3 (Soaring Falcon)"
    ANSI_COLOR="0;31"
    HOME_URL="https://www.aliyun.com/"
  2. オペレーティングシステム内のすべてのループデバイスを照会します。

    sudo ls /dev/loop*

    次のコマンド出力が返されます。これは、ループ0デバイスが現在のオペレーティングシステムに存在することを示します。

    /dev/loop0  /dev/loop-control
  3. 現在のディレクトリ内のファイルのリストを照会します。

    ll

    次のコマンド出力が返されます。

    total 11448
    drwxr-xr-x 2 root root     4096 Sep  7 15:34 .
    drwxr-xr-x 7 root root     4096 Sep  5 18:57 ..
    -rw-r--r-- 1 root root 10485760 Sep  5 18:57 img
    -rw-r--r-- 1 root root 10485760 Sep  7 15:34 img1
  4. 特定のファイルをループデバイスに関連付けます。

    次のコマンドを実行して、imgファイルをloop0デバイスに関連付けます。

    sudo losetup /dev/loop0 ./img

    次のエラーメッセージが表示されます。

    losetup: ./img: failed to set up loop device: Device or resource busy

原因

すでに別のファイルに関連付けられているloop0デバイスにimgファイルを関連付けると、「losetup: failed to set up loop device: device or resource busy」というエラーメッセージが表示されます。

次のコマンドを実行して、loop0デバイスの関連付けを表示します。

sudo losetup /dev/loop0

次のコマンド出力が返されます。これは、/root/workplace/losetup/img1ファイルがloop0デバイスに関連付けられていることを示しています。

/dev/loop0: [64771]:928116 (/root/workplace/losetup/img1)

ソリューション

次のいずれかのソリューションを選択して、上記の問題を解決できます。 解決策1は、ループデバイスが十分であるシナリオに適している。 シナリオ2は、アイドルループデバイスが利用可能でないシナリオに適している。

解決策1

ループデバイスを作成し、imgファイルを新しいループデバイスに関連付けます。 次のコマンドを実行して、imgファイルが関連付けられているループデバイスを照会します。 imgファイルがループデバイスに関連付けられていない場合、システムは、第1のアイドルループデバイスを検索し、imgファイルを照会されたループデバイスに関連付ける。

sudo losetup -f ./img

次のコマンドを実行して、すべてのループデバイスを表示します。

sudo losetup -a

次のコマンド出力が返されます。これは、imgファイルがloop1デバイスに関連付けられていることを示します。

/dev/loop1: [64771]:929300 (/root/workplace/losetup/img)
/dev/loop0: [64771]:928116 (/root/workplace/losetup/img1)

解決策2

img1ファイルとloop0デバイスの関連付けを解除し、imgファイルをloop0デバイスに関連付けます。

警告

この解決策は危険です。 img1ファイルとloop0デバイスの関連付けを解除する前に、loop0デバイスがサードパーティによって使用されていないことを確認してください。

  1. img1ファイルとloop0デバイスの関連付けを解除します。

    sudo losetup -d /dev/loop0
  2. imgファイルをloop0デバイスに関連付けます。

    sudo losetup /dev/loop0 ./img
  3. loop0デバイスの関連付けを照会します。

    sudo losetup /dev/loop0

    次のコマンド出力が返されます。これは、imgファイルがloop0デバイスに関連付けられていることを示します。

    /dev/loop0: [64771]:929300 (/root/workplace/losetup/img)