ループデバイスは、Linuxで使用される仮想ブロックデバイスです。 ループデバイスは、通常のファイルをブロックデバイスとしてシミュレートし、オペレーティングシステムが物理ディスクまたはパーティションと同じ方法でファイルにアクセスできるようにします。 losetupコマンドを実行して、Linuxでデバイスマッパーを作成し、ファイルをループデバイスに関連付けることができます。 このトピックでは、Alibaba Cloud Linuxオペレーティングシステムでlosetupコマンドを実行してファイルをループデバイスに関連付けるときに、「losetup: ループデバイスのセットアップに失敗しました: デバイスまたはリソースビジー」というエラーメッセージが表示される問題の原因と解決策について説明します。
問題の説明
オペレーティングシステムに関する情報を照会します。
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/"オペレーティングシステム内のすべてのループデバイスを照会します。
sudo ls /dev/loop*次のコマンド出力が返されます。これは、ループ0デバイスが現在のオペレーティングシステムに存在することを示します。
/dev/loop0 /dev/loop-control現在のディレクトリ内のファイルのリストを照会します。
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特定のファイルをループデバイスに関連付けます。
次のコマンドを実行して、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デバイスがサードパーティによって使用されていないことを確認してください。
img1ファイルとloop0デバイスの関連付けを解除します。
sudo losetup -d /dev/loop0imgファイルをloop0デバイスに関連付けます。
sudo losetup /dev/loop0 ./imgloop0デバイスの関連付けを照会します。
sudo losetup /dev/loop0次のコマンド出力が返されます。これは、imgファイルがloop0デバイスに関連付けられていることを示します。
/dev/loop0: [64771]:929300 (/root/workplace/losetup/img)