5 virt-filesystems - List filesystems, partitions, block devices, LVM in a virtual machine or disk image
9 virt-filesystems [--options] -d domname
11 virt-filesystems [--options] -a disk.img [-a disk.img ...]
15 This tool allows you to discover filesystems, partitions, logical
16 volumes, and their sizes in a disk image or virtual machine. It is a
17 replacement for L<virt-list-filesystems(1)> and
18 L<virt-list-partitions(1)>.
20 One use for this tool is from shell scripts to iterate over all
21 filesystems from a disk image:
23 for fs in $(virt-filesystems -a disk.img); do
27 Another use is to list partitions before using another tool to modify
28 those partitions (such as L<virt-resize(1)>). If you are curious
29 about what an unknown disk image contains, use this tool along with
32 Various command line options control what this program displays. You
33 need to give either I<-a> or I<-d> options to specify the disk image
34 or libvirt guest respectively. If you just specify that then the
35 program shows filesystems found, one per line, like this:
37 $ virt-filesystems -a disk.img
41 If you add I<-l> or I<--long> then the output includes extra
44 $ virt-filesystems -a disk.img -l
45 Name Type VFS Label Size
46 /dev/sda1 filesystem ext4 boot 524288000
47 /dev/vg_guest/lv_root filesystem ext4 root 10212081664
49 If you add I<--extra> then non-mountable (swap, unknown) filesystems
52 $ virt-filesystems -a disk.img --extra
58 If you add I<--partitions> then partitions are shown instead of filesystems:
60 $ virt-filesystems -a disk.img --partitions
64 Similarly you can use I<--logical-volumes>, I<--volume-groups>,
65 I<--physical-volumes>, I<--block-devices> to list those items.
67 You can use these options in combination as well (if you want a
68 combination including filesystems, you have to add I<--filesystems>).
69 Notice that some items fall into several categories (eg. C</dev/sda1>
70 might be both a partition and a filesystem). These items are listed
71 several times. To get a list which includes absolutely everything
72 that virt-filesystems knows about, use the I<--all> option.
74 UUIDs (because they are quite long) are not shown by default. Add the
75 I<--uuid> option to display device and filesystem UUIDs in the long
78 I<--all --long --uuid> is a useful combination to display all possible
79 information about everything.
81 $ virt-filesystems -a win.img --all --long --uuid -h
82 Name Type VFS Label Size Parent UUID
83 /dev/sda1 filesystem ntfs System Reserved 100M - F81C92571C92112C
84 /dev/sda2 filesystem ntfs - 20G - F2E8996AE8992E3B
85 /dev/sda1 partition - - 100M /dev/sda -
86 /dev/sda2 partition - - 20G /dev/sda -
87 /dev/sda device - - 20G - -
89 For machine-readable output, use I<--csv> to get Comma-Separated Values.
103 Add I<file> which should be a disk image from a virtual machine. If
104 the virtual machine has multiple block devices, you must supply all of
105 them with separate I<-a> options.
107 The format of the disk image is auto-detected. To override this and
108 force a particular format use the I<--format=..> option.
112 Display everything. This is currently the same as specifying these
113 options: I<--filesystems>, I<--extra>, I<--partitions>,
114 I<--block-devices>, I<--logical-volumes>, I<--volume-groups>,
115 I<--physical-volumes>. (More may be added to this list in future).
121 =item B<--block-devices>
123 Display block devices.
127 =item B<--connect> URI
129 If using libvirt, connect to the given I<URI>. If omitted, then we
130 connect to the default libvirt hypervisor.
132 If you specify guest block devices directly (I<-a>), then libvirt is
137 Write out the results in CSV format (comma-separated values). This
138 format can be imported easily into databases and spreadsheets, but
139 read L</NOTE ABOUT CSV FORMAT> below.
143 =item B<--domain> guest
145 Add all the disks from the named libvirt guest.
149 When prompting for keys and passphrases, virt-filesystems normally
150 turns echoing off so you cannot see what you are typing. If you are
151 not worried about Tempest attacks and there is no one else in the room
152 you can specify this flag to see what you are typing.
156 This causes filesystems that are not ordinary, mountable filesystems
157 to be displayed. This category includes swapspace, and filesystems
158 that are empty or contain unknown data.
160 This option implies I<--filesystems>.
162 =item B<--filesystems>
164 Display mountable filesystems. If no display option was selected then
165 this option is implied.
167 With I<--extra>, non-mountable filesystems are shown too.
169 =item B<--format=raw|qcow2|..>
173 The default for the I<-a> option is to auto-detect the format of the
174 disk image. Using this forces the disk format for I<-a> options which
175 follow on the command line. Using I<--format> with no argument
176 switches back to auto-detection for subsequent I<-a> options.
180 virt-filesystems --format=raw -a disk.img
182 forces raw format (no auto-detection) for C<disk.img>.
184 virt-filesystems --format=raw -a disk.img --format -a another.img
186 forces raw format (no auto-detection) for C<disk.img> and reverts to
187 auto-detection for C<another.img>.
189 If you have untrusted raw-format guest disk images, you should use
190 this option to specify the disk format. This avoids a possible
191 security problem with malicious guests (CVE-2010-3851).
195 =item B<--human-readable>
197 In I<--long> mode, display sizes in human-readable format.
199 =item B<--keys-from-stdin>
201 Read key or passphrase parameters from stdin. The default is
202 to try to read passphrases from the user by opening C</dev/tty>.
208 Display extra columns of data ("long format").
210 A title row is added unless you also specify I<--no-title>.
212 The extra columns displayed depend on what output you select, and the
213 ordering of columns may change in future versions. Use the title row,
214 I<--csv> output and/or L<csvtool(1)> to match columns to data in
217 Use I<-h> if you want sizes to be displayed in human-readable format.
218 The default is to show raw numbers of I<bytes>.
220 Use I<--uuid> to display UUIDs too.
226 =item B<--logical-volumes>
228 Display LVM logical volumes. In this mode, these are displayed
229 irrespective of whether the LVs contain filesystems.
233 In I<--long> mode, don't add a title row.
235 Note that the order of the columns is not fixed, and may change in
236 future versions of virt-filesystems, so using this option may give you
237 unexpected surprises.
241 =item B<--partitions>
243 Display partitions. In this mode, these are displayed
244 irrespective of whether the partitions contain filesystems.
250 =item B<--physical-volumes>
252 Display LVM physical volumes.
258 In I<--long> mode, display UUIDs as well.
264 Enable verbose messages for debugging.
270 Display version number and exit.
276 =item B<--volume-groups>
278 Display LVM volume groups.
282 Enable tracing of libguestfs API calls.
288 Note that columns in the output are subject to reordering and change
289 in future versions of this tool.
295 The filesystem, partition, block device or LVM name.
297 For device and partition names these are displayed as canonical
298 libguestfs names, so that for example C</dev/sda2> is the second
299 partition on the first device.
301 If the I<--long> option is B<not> specified, then only the name column
302 is shown in the output.
306 The object type, for example C<filesystem>, C<lv>, C<device> etc.
310 If there is a filesystem, then this column displays the filesystem
311 type if one could be detected, eg. C<ext4>.
315 If the object has a label (used for identifying and mounting
316 filesystems) then this column contains the label.
320 The size of the object in bytes. If the I<--human> option is used
321 then the size is displayed in a human-readable form.
325 The parent column records the parent relationship between objects.
326 For example, if the object is a partition, then this column contains
327 the name of the containing device. If the object is a logical volume,
328 then this column is the name of the volume group.
332 If the object has a UUID (used for identifying and mounting
333 filesystems and block devices) then this column contains the UUID as a
336 The UUID is only displayed if the I<--uuid> option is given.
340 =head1 NOTE ABOUT CSV FORMAT
342 Comma-separated values (CSV) is a deceptive format. It I<seems> like
343 it should be easy to parse, but it is definitely not easy to parse.
345 Myth: Just split fields at commas. Reality: This does I<not> work
346 reliably. This example has two columns:
350 Myth: Read the file one line at a time. Reality: This does I<not>
351 work reliably. This example has one row:
356 For shell scripts, use C<csvtool> (L<http://merjis.com/developers/csv>
357 also packaged in major Linux distributions).
359 For other languages, use a CSV processing library (eg. C<Text::CSV>
360 for Perl or Python's built-in csv library).
362 Most spreadsheets and databases can import CSV directly.
366 Libvirt guest names can contain arbitrary characters, some of which
367 have meaning to the shell such as C<#> and space. You may need to
368 quote or escape these characters on the command line. See the shell
369 manual page L<sh(1)> for details.
377 L<virt-list-filesystems(1)>,
378 L<virt-list-partitions(1)>,
380 L<http://libguestfs.org/>.
384 Richard W.M. Jones L<http://people.redhat.com/~rjones/>
388 Copyright (C) 2010 Red Hat Inc.
390 This program is free software; you can redistribute it and/or modify
391 it under the terms of the GNU General Public License as published by
392 the Free Software Foundation; either version 2 of the License, or
393 (at your option) any later version.
395 This program is distributed in the hope that it will be useful,
396 but WITHOUT ANY WARRANTY; without even the implied warranty of
397 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
398 GNU General Public License for more details.
400 You should have received a copy of the GNU General Public License
401 along with this program; if not, write to the Free Software
402 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.