Updated MANIFEST.
[virt-top.git] / virt-df / virt-df.txt
1 NAME
2     virt-df - 'df'-like utility for virtualization stats
3
4 SUMMARY
5     virt-df [-options]
6
7 DESCRIPTION
8     virt-df is a df(1)-like utility for showing the actual disk usage of
9     guests. Many command line options are the same as for ordinary *df*.
10
11     It uses libvirt so it is capable of showing stats across a variety of
12     different virtualization systems.
13
14     There are some shortcomings to the whole approach of reading disk state
15     from outside the guest. Please read SHORTCOMINGS section below for more
16     details.
17
18 OPTIONS
19     -a, --all
20         Show all domains. The default is show only running (active) domains.
21
22     -c uri, --connect uri
23         Connect to libvirt URI. The default is to connect to the default
24         libvirt URI, normally Xen.
25
26     --debug
27         Emit debugging information on stderr. Please supply this if you
28         report a bug.
29
30     -h, --human-readable
31         Display human-readable sizes (eg. 10GiB).
32
33     -i, --inodes
34         Display inode information.
35
36     --help
37         Display usage summary.
38
39     -t diskimage
40         Test mode. Instead of checking libvirt for domain information, this
41         runs virt-df directly on the disk image (or device) supplied. You
42         may specify the -t option multiple times.
43
44     --version
45         Display version and exit.
46
47 SHORTCOMINGS
48     virt-df spies on the guest's disk image to try to work out how much disk
49     space it is actually using. There are some shortcomings to this,
50     described here.
51
52     (1) It does not work over remote connections. The storage API does not
53     support peeking into remote disks, and libvirt has rejected a request to
54     add this support.
55
56     (2) It only understands a limited set of partition types. Assuming that
57     the files and partitions that we get back from libvirt / Xen correspond
58     to block devices in the guests, we can go some way towards manually
59     parsing those partitions to find out what they contain. We can read the
60     MBR, LVM, superblocks and so on. However that's a lot of parsing work,
61     and currently there is no library which understands a wide range of
62     partition schemes and filesystem types (not even libparted which doesn't
63     support LVM yet). The Linux kernel does support that, but there's not
64     really any good way to access that work.
65
66     The current implementation uses a hand-coded parser which understands
67     some simple formats (MBR, LVM2, ext2/3). In future we should use
68     something like libparted.
69
70     (3) The statistics you get are delayed. The real state of, for example,
71     an ext2 filesystem is only stored in the memory of the guest's kernel.
72     The ext2 superblock contains some meta-information about blocks used and
73     free, but this superblock is not up to date. In fact the guest kernel
74     may not update it even on a 'sync', not until the filesystem is
75     unmounted. Some operations do appear to write the superblock, for
76     example fsync(2) [that is my reading of the ext2/3 source code at
77     least].
78
79 SECURITY
80     The current code tries hard to be secure against malicious guests, for
81     example guests which set up malicious disk partitions.
82
83 SEE ALSO
84     df(1), virsh(1), xm(1), <http://www.libvirt.org/ocaml/>,
85     <http://www.libvirt.org/>, <http://et.redhat.com/~rjones/>,
86     <http://caml.inria.fr/>
87
88 AUTHORS
89     Richard W.M. Jones <rjones @ redhat . com>
90
91 COPYRIGHT
92     (C) Copyright 2007-2008 Red Hat Inc., Richard W.M. Jones
93     http://libvirt.org/
94
95     This program is free software; you can redistribute it and/or modify it
96     under the terms of the GNU General Public License as published by the
97     Free Software Foundation; either version 2 of the License, or (at your
98     option) any later version.
99
100     This program is distributed in the hope that it will be useful, but
101     WITHOUT ANY WARRANTY; without even the implied warranty of
102     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
103     Public License for more details.
104
105     You should have received a copy of the GNU General Public License along
106     with this program; if not, write to the Free Software Foundation, Inc.,
107     675 Mass Ave, Cambridge, MA 02139, USA.
108
109 REPORTING BUGS
110     Bugs can be viewed on the Red Hat Bugzilla page:
111     <https://bugzilla.redhat.com/>.
112
113     If you find a bug in virt-df, please follow these steps to report it:
114
115     1. Check for existing bug reports
116         Go to <https://bugzilla.redhat.com/> and search for similar bugs.
117         Someone may already have reported the same bug, and they may even
118         have fixed it.
119
120     2. Capture debug and error messages
121         Run
122
123          virt-df --debug > virt-df.log 2>&1
124
125         and keep *virt-df.log*. It contains error messages which you should
126         submit with your bug report.
127
128     3. Get version of virt-df and version of libvirt.
129         Run
130
131          virt-df --version
132
133     4. Submit a bug report.
134         Go to <https://bugzilla.redhat.com/> and enter a new bug. Please
135         describe the problem in as much detail as possible.
136
137         Remember to include the version numbers (step 3) and the debug
138         messages file (step 2).
139
140     5. Assign the bug to rjones @ redhat.com
141         Assign or reassign the bug to rjones @ redhat.com (without the
142         spaces). You can also send me an email with the bug number if you
143         want a faster response.
144