QA@IT
«回答へ戻る

5599
 とりあえずどちらからアタッチしても同じドライブレターでアタッチされました。
 
 vhdのパス/ファイル名、uuidの値は適宜変更してください。
+あと、パーティションが複数ある場合はボリュームの選択が難しいかもしれません。

いろいろ試してみましたが、

  • create vdiskをsourceオプション付きで実行する (vhd uuidが変更されてコピーされる)
  • uniqueid disk id=でMBR uuidも変更する(しないと同時にマウントできない) の 2つでいけるかもしれません。 完全にうまくいくかは保証できませんが参考までに。

ただし

  • コピー(create vdisk ~ source)前に元のvhdをデタッチする必要がある
  • デタッチできない場合は、vhdをファイルコピーしてからコピー(create vdisk ~ source)すればできると思うが容量の問題は発生する。 という条件が付きます。

またMBR uuidはコピー毎に変えないといけませんので(※)、完全自動にするにはuuidを自動生成する方法を考えないといけません。
※ 常にオリジナルとコピーの2種類しか存在しないのであれば毎回同じMBR uuidにしても問題ないはずなのでこの問題は発生しない

簡単にしか確認してませんが、以下のような diskpart用のファイルで作成すると、
デタッチ後に再アタッチしても同じドライブレターでマウントされるようです。

rem # サンプルのため元ディスクを作る作業。既にあるので以下 4行は不要。
create vdisk file="r:\test_1.vhd" maximum=100 type=expandable
attach vdisk
create partition primary
assign letter=s
rem ## サンプルのためformatはトラブル回避のためにあえてしてません


rem # ここからがコピー
rem ## 元ディスクのデタッチ
rem ### ディスクを作成しない場合はデタッチのために元ディスクをselectする必要がある。
rem select vdisk file="r:\test_1.vhd"
detach vdisk

rem ## コピーする(vhd uuidが異なるディスクが作成できる)
create vdisk file="r:\test_2.vhd" source="r:\test_1.vhd" type=expandable

rem ### この時点ではまだMBR uuidが同一のため、ドライブレターが奪われないようにマウントしてしまう
select vdisk file="r:\test_1.vhd"
attach vdisk

rem ## コピーしたファイルをアタッチ
select vdisk file="r:\test_2.vhd"
attach vdisk

rem #### 余談:このタイミングでディスクの管理(GUI)を見ると競合エラーが出ているはず
rem ### MBR uuidを変更する。値は適宜変更する。GPTの場合は長さが違うので注意。
uniqueid disk id=4698AF35

rem ## 再アタッチしてドライブレターを設定
detach vdisk
attach vdisk
select partition 1
assign letter=x

このあと、2つの仮想ディスクをデタッチして、再アタッチしてみましたが、
とりあえずどちらからアタッチしても同じドライブレターでアタッチされました。

vhdのパス/ファイル名、uuidの値は適宜変更してください。
あと、パーティションが複数ある場合はボリュームの選択が難しいかもしれません。

いろいろ試してみましたが、
* `create vdisk`をsourceオプション付きで実行する (vhd uuidが変更されてコピーされる)
* `uniqueid disk id=`でMBR uuidも変更する(しないと同時にマウントできない)
の 2つでいけるかもしれません。
完全にうまくいくかは保証できませんが参考までに。

ただし
* コピー(`create vdisk ~ source`)前に元のvhdをデタッチする必要がある
* デタッチできない場合は、vhdをファイルコピーしてからコピー(`create vdisk ~ source`)すればできると思うが容量の問題は発生する。
という条件が付きます。

またMBR uuidはコピー毎に変えないといけませんので(※)、完全自動にするにはuuidを自動生成する方法を考えないといけません。
※ 常にオリジナルとコピーの2種類しか存在しないのであれば毎回同じMBR uuidにしても問題ないはずなのでこの問題は発生しない

簡単にしか確認してませんが、以下のような diskpart用のファイルで作成すると、
デタッチ後に再アタッチしても同じドライブレターでマウントされるようです。

```vb
rem # サンプルのため元ディスクを作る作業。既にあるので以下 4行は不要。
create vdisk file="r:\test_1.vhd" maximum=100 type=expandable
attach vdisk
create partition primary
assign letter=s
rem ## サンプルのためformatはトラブル回避のためにあえてしてません


rem # ここからがコピー
rem ## 元ディスクのデタッチ
rem ### ディスクを作成しない場合はデタッチのために元ディスクをselectする必要がある。
rem select vdisk file="r:\test_1.vhd"
detach vdisk

rem ## コピーする(vhd uuidが異なるディスクが作成できる)
create vdisk file="r:\test_2.vhd" source="r:\test_1.vhd" type=expandable

rem ### この時点ではまだMBR uuidが同一のため、ドライブレターが奪われないようにマウントしてしまう
select vdisk file="r:\test_1.vhd"
attach vdisk

rem ## コピーしたファイルをアタッチ
select vdisk file="r:\test_2.vhd"
attach vdisk

rem #### 余談:このタイミングでディスクの管理(GUI)を見ると競合エラーが出ているはず
rem ### MBR uuidを変更する。値は適宜変更する。GPTの場合は長さが違うので注意。
uniqueid disk id=4698AF35

rem ## 再アタッチしてドライブレターを設定
detach vdisk
attach vdisk
select partition 1
assign letter=x
```

このあと、2つの仮想ディスクをデタッチして、再アタッチしてみましたが、
とりあえずどちらからアタッチしても同じドライブレターでアタッチされました。

vhdのパス/ファイル名、uuidの値は適宜変更してください。
あと、パーティションが複数ある場合はボリュームの選択が難しいかもしれません。

回答を投稿

いろいろ試してみましたが、

  • create vdiskをsourceオプション付きで実行する (vhd uuidが変更されてコピーされる)
  • uniqueid disk id=でMBR uuidも変更する(しないと同時にマウントできない) の 2つでいけるかもしれません。 完全にうまくいくかは保証できませんが参考までに。

ただし

  • コピー(create vdisk ~ source)前に元のvhdをデタッチする必要がある
  • デタッチできない場合は、vhdをファイルコピーしてからコピー(create vdisk ~ source)すればできると思うが容量の問題は発生する。 という条件が付きます。

またMBR uuidはコピー毎に変えないといけませんので(※)、完全自動にするにはuuidを自動生成する方法を考えないといけません。
※ 常にオリジナルとコピーの2種類しか存在しないのであれば毎回同じMBR uuidにしても問題ないはずなのでこの問題は発生しない

簡単にしか確認してませんが、以下のような diskpart用のファイルで作成すると、
デタッチ後に再アタッチしても同じドライブレターでマウントされるようです。

rem # サンプルのため元ディスクを作る作業。既にあるので以下 4行は不要。
create vdisk file="r:\test_1.vhd" maximum=100 type=expandable
attach vdisk
create partition primary
assign letter=s
rem ## サンプルのためformatはトラブル回避のためにあえてしてません


rem # ここからがコピー
rem ## 元ディスクのデタッチ
rem ### ディスクを作成しない場合はデタッチのために元ディスクをselectする必要がある。
rem select vdisk file="r:\test_1.vhd"
detach vdisk

rem ## コピーする(vhd uuidが異なるディスクが作成できる)
create vdisk file="r:\test_2.vhd" source="r:\test_1.vhd" type=expandable

rem ### この時点ではまだMBR uuidが同一のため、ドライブレターが奪われないようにマウントしてしまう
select vdisk file="r:\test_1.vhd"
attach vdisk

rem ## コピーしたファイルをアタッチ
select vdisk file="r:\test_2.vhd"
attach vdisk

rem #### 余談:このタイミングでディスクの管理(GUI)を見ると競合エラーが出ているはず
rem ### MBR uuidを変更する。値は適宜変更する。GPTの場合は長さが違うので注意。
uniqueid disk id=4698AF35

rem ## 再アタッチしてドライブレターを設定
detach vdisk
attach vdisk
select partition 1
assign letter=x

このあと、2つの仮想ディスクをデタッチして、再アタッチしてみましたが、
とりあえずどちらからアタッチしても同じドライブレターでアタッチされました。

vhdのパス/ファイル名、uuidの値は適宜変更してください。

いろいろ試してみましたが、
* `create vdisk`をsourceオプション付きで実行する (vhd uuidが変更されてコピーされる)
* `uniqueid disk id=`でMBR uuidも変更する(しないと同時にマウントできない)
の 2つでいけるかもしれません。
完全にうまくいくかは保証できませんが参考までに。

ただし
* コピー(`create vdisk ~ source`)前に元のvhdをデタッチする必要がある
* デタッチできない場合は、vhdをファイルコピーしてからコピー(`create vdisk ~ source`)すればできると思うが容量の問題は発生する。
という条件が付きます。

またMBR uuidはコピー毎に変えないといけませんので(※)、完全自動にするにはuuidを自動生成する方法を考えないといけません。
※ 常にオリジナルとコピーの2種類しか存在しないのであれば毎回同じMBR uuidにしても問題ないはずなのでこの問題は発生しない

簡単にしか確認してませんが、以下のような diskpart用のファイルで作成すると、
デタッチ後に再アタッチしても同じドライブレターでマウントされるようです。

```vb
rem # サンプルのため元ディスクを作る作業。既にあるので以下 4行は不要。
create vdisk file="r:\test_1.vhd" maximum=100 type=expandable
attach vdisk
create partition primary
assign letter=s
rem ## サンプルのためformatはトラブル回避のためにあえてしてません


rem # ここからがコピー
rem ## 元ディスクのデタッチ
rem ### ディスクを作成しない場合はデタッチのために元ディスクをselectする必要がある。
rem select vdisk file="r:\test_1.vhd"
detach vdisk

rem ## コピーする(vhd uuidが異なるディスクが作成できる)
create vdisk file="r:\test_2.vhd" source="r:\test_1.vhd" type=expandable

rem ### この時点ではまだMBR uuidが同一のため、ドライブレターが奪われないようにマウントしてしまう
select vdisk file="r:\test_1.vhd"
attach vdisk

rem ## コピーしたファイルをアタッチ
select vdisk file="r:\test_2.vhd"
attach vdisk

rem #### 余談:このタイミングでディスクの管理(GUI)を見ると競合エラーが出ているはず
rem ### MBR uuidを変更する。値は適宜変更する。GPTの場合は長さが違うので注意。
uniqueid disk id=4698AF35

rem ## 再アタッチしてドライブレターを設定
detach vdisk
attach vdisk
select partition 1
assign letter=x
```

このあと、2つの仮想ディスクをデタッチして、再アタッチしてみましたが、
とりあえずどちらからアタッチしても同じドライブレターでアタッチされました。

vhdのパス/ファイル名、uuidの値は適宜変更してください。