LINUX.ORG.RU
решено ФорумAdmin

TRIM в гостевых системах под управлением libvirt/qemu-kvm

 trim kvm qemu libvirt


1

1

В гостевую систему под (Linux Fedora/Windows 2k3) подключаю диск с такой конфигурацией:

    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source dev='/dev/sde'/>
      <target dev='vdc' bus='virtio'/>
      <alias name='virtio-disk3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </disk>

TRIM судя по всему не работает (вначале диск отрабатывал запись очень шустро, сейчас очень медленно, подозрение именно на то, что ОС не отсылала контроллеру команды очистки блоков файловой системы.

virsh # version
Compiled against library: libvirt 1.0.5
Using library: libvirt 1.0.5
Using API: QEMU 1.0.5
Running hypervisor: QEMU 1.4.2
# smartctl -a /dev/sde
smartctl 6.1 2013-03-16 r3800 [x86_64-linux-3.10.10-200.fc19.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     Crucial_CT480M500SSD1
....

# uname -r
3.10.10-200.fc19.x86_64

Как заставить TRIM работать?



Последнее исправление: rafaelrs (всего исправлений: 2)

Теоретически он нафиг не уперся, по крайней мере с M4.
С М500 пока опыта не имею. А вот с сандфорсами без трима печаль.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

С M500 как раз он таки судя по всему и нужен. Да и к тому же у меня не только Crucial стоят, но в том числе и Intel SSD разных моделей.

rafaelrs
() автор топика
Ответ на: комментарий от rafaelrs

Интелы в большинстве своем на сандфорсах, так что да.
Насчет М500 сильно сомневаюсь, ибо марвелл.
Я бы на твоем месте проверил, оталигнены ли разделы. Ибо намного сильнее влиять может.

pekmop1024 ★★★★★
()
Последнее исправление: pekmop1024 (всего исправлений: 1)

А зачем гадать? Под Linux же есть скрипты котороые проверяют работу TRIM. Под офтопик имхо тоже есть что-то. :)

Только того самого: 2к3 не умеет же TRIM.

DALDON ★★★★★
()
Ответ на: комментарий от DALDON

Для начала - есть не только 2k3, но и скажем Linux который его очень даже умеет через discard в fstab, а так же fstrim.

В реальном времени 2k3 не умеет, в отложенном с помощью утилит похожих по работе на fstrim (например Intel SSD Toolbox, O&O Defrag) - умеет.

rafaelrs
() автор топика
Ответ на: комментарий от DALDON

Ну и для примера в гостевой Fedora:

# fstrim /
fstrim: /: FITRIM ioctl failed: Неподдерживаемая операция
В этом случае диск был подключен как:
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/home/vmhosts/PostgresDB_server/PostgresDB_server.raw'/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
Можно предположить, что в режиме образа, но точно так же оно ругается на подключенный обычный диск.

rafaelrs
() автор топика

Похоже нашел ответ

Порылся в инете и нашел как включить TRIM. Правда пока мне это не светит, ибо в релизе qemu только 1.4.2, а необходимо как выяснилось 1.5.

Решение добавление опции discard='unmap' в секцию диска virtio-scsi.

http://dustymabe.com/2013/06/11/recover-space-from-vm-disk-images-by-using-di...

<controller type='scsi' index='0' model='virtio-scsi'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </controller>
<disk type='file' device='disk'>
    <driver name='qemu' type='raw' discard='unmap'/>
    <source file='/guests/Fedora19.img'/>
    <target dev='sda' bus='scsi'/>
    <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>

rafaelrs
() автор топика
9 апреля 2015 г.
Ответ на: Похоже нашел ответ от rafaelrs

Небольшой апдейт если кто будет искать - диск должен быть virtio-scsi

Ссылка http://vasilisc.com/proxmox-virtio-scsi-discard или http://www.redhat.com/archives/libvirt-users/2014-November/msg00008.html

Из вот такого:

    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' discard='unmap'/>
      <source file='/mnt/System/!VirtualBox/Fedora_test_hosts.img'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </disk>

Получилось вот такое:

    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none' discard='unmap'/>
      <source file='/mnt/System/!VirtualBox/Fedora_test_hosts.img'>
        <seclabel model='selinux' labelskip='yes'/>
      </source>
      <backingStore/>
      <target dev='vda' bus='scsi'/>
      <alias name='scsi0-0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>

Менял только в тегах target, address и driver

rafaelrs
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.