Saya ingin memasukkan hard drive virtual (atau apa saja) untuk menempati blok sistem / dev / sdb , bagaimana saya bisa melakukannya di Linux (Ubuntu dan Debian)?
hard-drive
filesystems
return 0
sumber
sumber
Jawaban:
Buat file dengan ukuran yang Anda inginkan untuk hard drive virtual ini (berikut ini menghasilkan file 1Mx1024 atau 1GByte):
dd if=/dev/zero of=virtual_hard_drive.bin bs=1M count=1024
Buat perangkat loop berdiri di tempat
/dev/sdb
mknod /dev/sdb b 7 500
Tidak, ini tidak akan berfungsi jika Anda sudah memiliki
/dev/sdb
sana.Anda harus mengubah 500 ke nomor lain jika Anda memiliki peluang yang sangat kecil
/dev/loop500
.Sekarang, tetapkan file Anda ke perangkat loop ini
losetup /dev/sdb virtual_hard_drive.bin
Jadi sekarang Anda memiliki file yang bertindak sebagai hard drive, melalui mekanisme perangkat loop Linux. Pada titik ini Anda ingin memformatnya
mke2fs /dev/sdb
atau serupa, lalu pasang dengan cara biasa.Agar ini berfungsi saat boot akan memerlukan beberapa pengeditan skrip waktu boot sebagai skrip yang memeriksa
fstab
tidak akan membuat/dev/sdb
ke dalam perangkat loop saat boot sendiri.Jika Anda tidak benar-benar membutuhkan volume di sana, Anda dapat melakukan sesuatu seperti
ln -s /dev/sdb /dev/full
untuk membuat/dev/sdb
"arahkan ke"full
(atauzero
ataunull
, atau bahkandvdrom
) perangkat virtual.sumber
ln
Untuk/sys/block
jika itu mungkin, yaitu cobaln -s /sys/block/sdb /sys/block/loop500
atau serupa. Untuk menghapus loop, lepaskan ikatannya, lalulosetup -d /dev/sdb
, lalu hapus file perangkat Andamknod
ed.Mengapa Anda secara spesifik membutuhkannya?
/dev/sdb
? Saya pikir Anda perlu menjelaskan mengapa Anda ingin sesuatu untuk menempati simpul perangkat blok itu, karena Anda tidak bisa hanya memiliki sesuatu menggunakannya. Jika Anda memiliki beberapa perangkat lunak yang ingin dibaca/dev/sdb
, Anda bisa saja mengubah perangkat lunaknya.Dalam kasus terburuk, Anda dapat menggunakan Simulator host debug SCSI . Lakukan saja
modprobe scsi_debug
, dan standarnya harus menyediakan perangkat SCSI tunggal. Perhatikan bahwa itu tidak akan aktif secara eksplisit/dev/sdb
, tetapi selalu perangkat SCSI berikutnya yang tersedia.sumber
Jika Anda ingin menggunakan file gambar disk mentah, Anda dapat menggunakan perangkat loopback untuk mengaksesnya sebagai perangkat blok (seperti
/dev/sdb
).dd if=/dev/zero of=/path/to/the/image bs=1M count=10240
Ini akan membuat gambar kosong berukuran 10 GiB.
sudo losetup -f --show /path/to/the/image
Ini akan mencetak perangkat loop yang digunakan. Katakan saja begitu
/dev/loop0
.sudo gparted /dev/loop0
/dev/sdb
:for a in /dev/sdb* ; do sudo mv "$a" "$a-orig" ; done
/dev/sdb
:l=/dev/loop0 ; d=/dev/sdb ; sudo cp -a "$l" "$d" ; for a in "$l"* ; do sudo cp -a "$a" "$d${a#$l}" ; done
Setelah itu Anda akan memiliki gambar disk
/path/to/the/image
diakses sebagai/dev/sdb
termasuk partisi.sumber
Solusi berdasarkan
losetup
diberikan di atas tidak membuat perangkat blok SCSI, maka mereka tidak membuat/dev/sd*
simpul perangkat dan beberapa penggantian nama atau tautan diperlukan untuk membuatnya, dan beberapa perangkat lunak mungkin tidak menemukan perangkat yang cocok karena tidak menggunakan subsistem SCSI.Dimungkinkan untuk membuat perangkat disk SCSI yang didukung oleh partisi atau file menggunakan
targetcli
. Lihat http://linux-iscsi.org/wiki/Tcm_loop , dan https://stackoverflow.com/questions/30972176/creating-a-loopback-device-in-lio-scsi-target yang mencakup masalah dengan instruksi tersebut. Seperti simulator host debug SCSI yang disarankan oleh @ robbat2, perangkat ini akan diberi pengidentifikasi yang tersedia berikutnya.Saya mengetahui bahwa simulator host debug SCSI didukung oleh RAM, sehingga volatile. Dengan metode yang saya usulkan di sini, data sebenarnya akan ditulis ke partisi atau file.
sumber