...making Linux just a little more fun!
Michael SanAngelo [msanangelo at gmail.com]
Hi, I was wondering what are the possibilities of creating and using virtual disks for. I understand I can use dd to create it then mkfs.ext3 or something like it to format the disk. What purpose could they be used for besides serving as a foundation for creating a live cd?
I want to do this from the cli so no gui.
Thanks,
Michael S.
Lew Pitcher [lew.pitcher at digitalfreehold.ca]
On January 14, 2009 14:05:20 Michael SanAngelo wrote:
> Hi, I was wondering what are the possibilities of creating and using > virtual disks for. I understand I can use dd to create it then mkfs.ext3 or > something like it to format the disk. What purpose could they be used for > besides serving as a foundation for creating a live cd?
I've used this "virtual hard disk" on occasion, for spot fixes to problems. I can't think of a "permenant" use for it, though, although others might be able to.
The biggest use I have is for "virtual cdroms". I take a dd image of a cdrom or data dvd, and save it on a hard disk. This gives me a library of images that I can pick and choose from; I can install Windows XP into a virtual machine without having to find the original CDROM, I can mount my Slackware install DVD and install new software (or upgrade old software), etc.
The second use I have for "virtual hard disks" is to place a Unixish file system (any one of the Linux fs that support unix file attribute bits, uid/gid, and mtime/ctime/utime) onto a USB thumb drive. Rather than reformat the drive (and thus make it unavailable to Windows machines), I create a VFAT file on the drive, and populate it with a Linux fs. On Linux, I can mount this file as a fs and have all the features you expect in a linux file system, and on MSWindows, I can run Linux in a VM, and give it access to the file through Windows.
> I want to do this from the cli so no gui.
dd if=/dev/zero of=/path/to/vfs/file bs=1024 count=<number of Kbytes in fs> mkfs -t <filesystemtype> /path/to/vfs/file mount -t <filesystemtype> -o loop /mount/point /path/to/vfs/file ... do your work... umount /mount/point
-- Lew Pitcher
Thomas Adam [thomas.adam22 at gmail.com]
2009/1/14 Michael SanAngelo <msanangelo@gmail.com>:
> Hi, I was wondering what are the possibilities of creating and using virtual > disks for. I understand I can use dd to create it then mkfs.ext3 or > something like it to format the disk. What purpose could they be used for > besides serving as a foundation for creating a live cd? > > I want to do this from the cli so no gui.
The term "virtual disk" is misleading here -- what you're referring to are essentially loopback files, a la:
dd if=/dev/zero of=/somefile bs=1024 count=300000
That will create a 30GiB zero-filled file called "somefile".
Then what you want to do with that is attach a loopback device to the file:
losetup /dev/loop0 /somefile
(It may well be that /dev/loop0 is in use -- there are up to 8 loopback devices:
/dev/loop{1,2,3,4}
Use whichever is available.)
Then create a filesystem on it:
mkfs -t ext3 -m 1 -v /dev/loop0
(Replacing "/dev/loop0 if applicable with the above.)
Then you can mount it somewhere:
mount -t ext3 /dev/loop0 /mnt
(Replacing "/dev/loop0 if applicable with the above.)
Do stuff under /mnt as you would with a normal directory then when you're done:
umount /mnt losetup -d /dev/loop0
(Replacing /dev/loop0 if applicable.)
-- Thomas Adam
Jimmy O'Regan [joregan at gmail.com]
2009/1/14 Lew Pitcher <lew.pitcher@digitalfreehold.ca>:
> On January 14, 2009 14:05:20 Michael SanAngelo wrote: >> Hi, I was wondering what are the possibilities of creating and using >> virtual disks for. I understand I can use dd to create it then mkfs.ext3 or >> something like it to format the disk. What purpose could they be used for >> besides serving as a foundation for creating a live cd? > > I've used this "virtual hard disk" on occasion, for spot fixes to problems. I > can't think of a "permenant" use for it, though, although others might be > able to. > > The biggest use I have is for "virtual cdroms". I take a dd image of a cdrom > or data dvd, and save it on a hard disk. This gives me a library of images > that I can pick and choose from; I can install Windows XP into a virtual > machine without having to find the original CDROM, I can mount my Slackware > install DVD and install new software (or upgrade old software), etc. > > The second use I have for "virtual hard disks" is to place a Unixish file > system (any one of the Linux fs that support unix file attribute bits, > uid/gid, and mtime/ctime/utime) onto a USB thumb drive. Rather than reformat > the drive (and thus make it unavailable to Windows machines), I create a VFAT > file on the drive, and populate it with a Linux fs. On Linux, I can mount > this file as a fs and have all the features you expect in a linux file > system, and on MSWindows, I can run Linux in a VM, and give it access to the > file through Windows. >
Disk images are also widely used in forensics; it's the recommended practice in data recovery to work with a copy of the hard drive you want to recover from; PC emulators use virtual disks out of necessity (generally, whole disk images, but qemu for one can use 'partition' images, like this, coLinux uses them by default); if your kernel has support, you can use NB (https://nbd.sourceforge.net/) to serve disk images to diskless clients, who can then use them as though they were real disks; the list of possible uses is only limited by the imagination
René Pfeiffer [lynx at luchs.at]
On Jan 14, 2009 at 1941 +0000, Thomas Adam appeared and said:
> 2009/1/14 Michael SanAngelo <msanangelo@gmail.com>: > > Hi, I was wondering what are the possibilities of creating and using virtual > > disks for. I understand I can use dd to create it then mkfs.ext3 or > > something like it to format the disk. What purpose could they be used for > > besides serving as a foundation for creating a live cd? > > > > I want to do this from the cli so no gui. > > The term "virtual disk" is misleading here -- what you're referring to > are essentially loopback files, a la: > > ``` > dd if=/dev/zero of=/somefile bs=1024 count=300000 > ''' > > That will create a 30GiB zero-filled file called "somefile".
This command will really write 30 GiB to disk. If you just want to create a file that can store up to 30 GiB "on demand", you can use this:
dd if=/dev/zero of=disk.img bs=1 count=0 seek=30GB
disk.img will show have a size of 30 GB, but it will only use the blocks that are actually used (when using it as a disk image for example). The file produced is called a sparse file.
https://en.wikipedia.org/wiki/Sparse_file
Sparse files are quite handy when you store the disks of virtual machines.
Best, René.