mirror of
https://github.com/QubesOS/qubes-doc.git
synced 2024-12-22 14:05:15 -05:00
199 lines
7.8 KiB
ReStructuredText
199 lines
7.8 KiB
ReStructuredText
|
====================
|
|||
|
Disk troubleshooting
|
|||
|
====================
|
|||
|
|
|||
|
|
|||
|
"Out of disk space" error
|
|||
|
-------------------------
|
|||
|
|
|||
|
|
|||
|
If the disk is completely full, you will get an ``Out of disk space``
|
|||
|
error that may crash your system because Dom0 does not have enough disk
|
|||
|
space to work. So it’s good practice to regularly check disk space
|
|||
|
usage. Running the ``df -h`` command in dom0 terminal will show some
|
|||
|
information, but not include all the relevant details. The Qubes user
|
|||
|
interface provides a disk space widget. If you are unable to access the
|
|||
|
interface, the command line version is running ``sudo lvs | head`` and
|
|||
|
looking at top entry for LVM pool. For example:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
|
|||
|
pool00 qubes_dom0 twi-aotz-- 453.17g 89.95 69.78
|
|||
|
root qubes_dom0 Vwi-aotz-- 453.17g pool00 5.87
|
|||
|
swap qubes_dom0 -wi-ao---- 7.57g
|
|||
|
|
|||
|
|
|||
|
|
|||
|
If you run ``df -h``, it only shows the information in the ``root`` line
|
|||
|
(which is already included in the ``pool00`` line). As you can see, the
|
|||
|
``sudo lvs | head`` command includes additional important columns
|
|||
|
``Data%`` and ``Meta%``, shown in the above example to have the values
|
|||
|
89% and 69% respectively.
|
|||
|
|
|||
|
If your system is able to boot, but cannot load a desktop environment,
|
|||
|
it is possible to login to dom0 terminal with Alt + Ctrl + F2.
|
|||
|
|
|||
|
If this does not work, check the size of /var/lib/qubes/qubes.xml. If it
|
|||
|
is zero, you’ll need to use one of the file backup (stored in
|
|||
|
/var/lib/qubes/backup), hopefully you have the current data there. Find
|
|||
|
the most recent one and place in /var/lib/qubes/qubes.xml instead of the
|
|||
|
empty file.
|
|||
|
|
|||
|
In any case you’ll need some disk space to start the VM. Check ``df -h``
|
|||
|
output if you have some. If not, here are some hints how to free some
|
|||
|
disk space:
|
|||
|
|
|||
|
1. Clean yum cache.
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
sudo dnf clean all
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2. Delete ``.img`` files of a less important VM, which can be found in
|
|||
|
``/var/lib/qubes/appvms/``. Then, when the system is working again,
|
|||
|
clean up the rest.
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-remove <VMname>
|
|||
|
|
|||
|
|
|||
|
With this method, you lose the data of one VM, but it’ll work more
|
|||
|
reliably.
|
|||
|
|
|||
|
3. Decrease the filesystem safety margin (5% by default).
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
sudo tune2fs -m 4 /dev/mapper/vg_dom0-lv_root
|
|||
|
|
|||
|
|
|||
|
|
|||
|
4. Remove some unneeded files in dom0 home (if you have any, most likely
|
|||
|
not). Also look for unneeded files in ``/var/log`` in dom0, and
|
|||
|
``/var/log/qubes``.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
The above steps applies to old VM disks format. These steps may work on
|
|||
|
Qubes 4.0, but are not default anymore. By default, Qubes 4.0 now uses
|
|||
|
LVM. The equivalent steps are:
|
|||
|
|
|||
|
1. Get a list of VM disks using ``sudo lvs``.
|
|||
|
|
|||
|
2. Use ``sudo lvremove qubes_dom0/<name>`` to remove backup copies of
|
|||
|
some less important VMs – entries with ``-back`` in their name.
|
|||
|
|
|||
|
3. If that isn’t enough, remove actual disks of less important VMs.
|
|||
|
NOTE: You will lose the data of that VM, but your system will resume
|
|||
|
working.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
For example:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
$ sudo lvs
|
|||
|
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
|
|||
|
pool00 qubes_dom0 twi-aotz-- 453.17g 89.95 69.78
|
|||
|
root qubes_dom0 Vwi-aotz-- 453.17g pool00 5.87
|
|||
|
swap qubes_dom0 -wi-ao---- 7.57g
|
|||
|
(...)
|
|||
|
vm-d10test-private qubes_dom0 Vwi-a-tz-- 2.00g pool00 vm-d10test-private-1600961860-back 29.27
|
|||
|
vm-d10test-private-1600961860-back qubes_dom0 Vwi-a-tz-- 2.00g pool00 4.87
|
|||
|
vm-d10test-standalone-private qubes_dom0 Vwi-a-tz-- 2.00g pool00 vm-d10test-standalone-private-1580772439-back 4.90
|
|||
|
vm-d10test-standalone-private-1580772439-back qubes_dom0 Vwi-a-tz-- 2.00g pool00 4.87
|
|||
|
vm-d10test-standalone-root qubes_dom0 Vwi-a-tz-- 10.00g pool00 vm-d10test-standalone-root-1580772439-back 43.37
|
|||
|
vm-d10test-standalone-root-1580772439-back qubes_dom0 Vwi-a-tz-- 10.00g pool00 42.05
|
|||
|
vm-debian-10-my-private qubes_dom0 Vwi-a-tz-- 2.00g pool00 4.96
|
|||
|
vm-debian-10-my-root qubes_dom0 Vwi-a-tz-- 10.00g pool00 vm-debian-10-my-root-1565013689-back 57.99
|
|||
|
vm-debian-10-my-root-1565013689-back qubes_dom0 Vwi-a-tz-- 10.00g pool00 56.55
|
|||
|
vm-debian-10-private qubes_dom0 Vwi-a-tz-- 2.00g pool00 4.94
|
|||
|
vm-debian-10-root qubes_dom0 Vwi-a-tz-- 10.00g pool00 vm-debian-10-root-1601126126-back 93.44
|
|||
|
vm-debian-10-root-1601126126-back qubes_dom0 Vwi-a-tz-- 10.00g pool00 88.75
|
|||
|
(...)
|
|||
|
$ sudo lvremove qubes_dom0/vm-d10test-standalone-root-1580772439-back
|
|||
|
Do you really want to remove and DISCARD active logical volume qubes_dom0/vm-d10test-standalone-root-1580772439-back? [y/n]: y
|
|||
|
Logical volume "vm-d10test-standalone-root-1580772439-back" successfully removed
|
|||
|
|
|||
|
|
|||
|
|
|||
|
After freeing some initial space, it may be possible to recover more
|
|||
|
space by deleting files in a userVM after connecting to the userVM
|
|||
|
terminal:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-start <VMname>
|
|||
|
qvm-console-dispvm <VMname>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Since ``qvm-console-dispvm`` requires working graphical user interface
|
|||
|
login, you must first free enough space to be able to start a VM and
|
|||
|
login to graphical UI.
|
|||
|
|
|||
|
Can't resize VM storage / "resize2fs: Permission denied" error
|
|||
|
--------------------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
:doc:`Resizing a volume </user/advanced-topics/resize-disk-image>` in the Qubes interface
|
|||
|
should be a straightforward process. But sometimes, an attempt to resize
|
|||
|
will look like it worked, when it in fact fails silently. If you then
|
|||
|
try the same operation in the dom0 console using the
|
|||
|
``qvm-volume extend`` command, it fails with the error message:
|
|||
|
``resize2fs: Permission denied to resize filesystem``. This error
|
|||
|
indicates that a ``resize2fs`` will not work, unless ``fsck`` is run
|
|||
|
first. Qubes OS utilities cannot yet handle this case.
|
|||
|
|
|||
|
To fix this issue:
|
|||
|
|
|||
|
1. In the dom0 terminal get a root console on the vm (eg. sys-usb) with:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-console-dispvm sys-usb
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2. Unmount everything mounted on the private volume
|
|||
|
``/dev/xvdb partition``. There are typically several mounts listed in
|
|||
|
``/etc/mtab``.
|
|||
|
|
|||
|
3. When you attempt to unmount the ``/home`` directory using the
|
|||
|
``umount /home`` command, you will encounter an error because there
|
|||
|
are processes using the ``/home`` directory. You can view a list of
|
|||
|
these processes with the ``fuser`` command:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
fuser -m /home
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Kill these process until they are all gone using ``kill <process ID>``.
|
|||
|
|
|||
|
4. Finally, run:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
umount /home
|
|||
|
fsck /dev/xvdb
|
|||
|
resize2fs /dev/xvdb
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
After restarting your VM, everything should now work as expected. The
|
|||
|
private volume size shown externally in the VM’s settings interface is
|
|||
|
the same as that seen within the VM.
|