¿Qué imagen de disco debo usar con VirtualBox, VDI, VMDK, VHD o HDD?


296

Las últimas versiones de VirtualBox admiten varios formatos para discos virtuales, pero se olvidaron de proporcionar una comparación entre ellos.

  • VDI
  • VMDK
  • VHD
  • HDD

Ahora, estoy interesado en una recomendación o comparación que considere lo siguiente:

  • ser capaz de usar dimensionamiento dinámico
  • poder tener instantáneas
  • ser capaz de mover mi máquina virtual a otro sistema operativo o incluso a otra solución de virtualización gratuita con un mínimo esfuerzo (probablemente algo que funcione bien en Ubuntu).
  • actuación

11
Ejecute el cuadro Virtual y haga clic en el icono de ayuda> Contenido, hay una explicación justa allí en "Almacenamiento virtual"
Moab

1
Con respecto a la migración a "otra solución de virtualización gratuita ... que funcionaría bien en Ubuntu", estoy bastante seguro de que VirtualBox está disponible para Linux.
Iszi

En cuanto al rendimiento, creo que lo mejor es crear discos fijos si tienes espacio. De lo contrario, es muy estresante para el sistema operativo cuando se utiliza la máquina virtual en lugar de una vez en el momento de la creación.
Alexis Wilke

3
Otra cosa a considerar es cambiar el tamaño de la imagen cuando sea necesario: VBoxManage no puede cambiar el tamaño de VMDK, por lo que primero tendría que clonar a VDI, luego cambiar el tamaño y luego volver a VMDK + falsificar el UUID. Solo por esta razón, VDI parece la mejor opción para mí.
Mike Demenok

Respuestas:


214

VirtualBox tiene

  • soporte completo para
    • VDI
    • VMDK
    • VHD
  • apoyo parcial para
    • HDD (solo Parallels versión 2)
  • y apoyo indocumentado para
    • QCOW
    • QED

Fuente: Manual del usuario de Oracle® VM VirtualBox® » Capítulo 5. Almacenamiento virtual » 5.2. Archivos de imagen de disco (VDI, VMDK, VHD, HDD)

Captura de pantalla de Crear disco duro virtual


Respondiendo sus consideraciones

  • ser capaz de usar dimensionamiento dinámico

VDI , VMDK y VHD son compatibles con el almacenamiento asignado dinámicamente. VMDK tiene una capacidad adicional de dividir el archivo de almacenamiento en archivos de menos de 2 GB cada uno, lo cual es útil si su sistema de archivos tiene un límite de tamaño de archivo pequeño.

HDD , QCOW y QED deben asignarse dinámicamente si se crean en VirtualBox.

  • poder tener instantáneas

VirtualBox admite instantáneas de los seis formatos .

  • ser capaz de mover mi máquina virtual a otro sistema operativo o incluso a otra solución de virtualización gratuita con un mínimo esfuerzo (probablemente algo que funcione bien en Ubuntu).

VDI es el formato nativo de VirtualBox. Otro software de virtualización generalmente no admite VDI, pero es bastante fácil convertir de VDI a otro formato, especialmente con qemu-img convert.

VMDK está desarrollado por y para VMWare, pero VirtualBox y QEMU (otro software de virtualización común) también lo admiten. Este formato puede ser la mejor opción para usted porque desea una amplia compatibilidad con otro software de virtualización.

VHD es el formato nativo de Microsoft Virtual PC. Windows Server 2012 introdujo VHDX como el sucesor de VHD, pero VirtualBox no es compatible con VHDX.

HDD es un formato para Parallels . Parallels se especializa en virtualización para macOS. Esto probablemente no sea adecuado para usted, especialmente teniendo en cuenta que VirtualBox solo admite una versión anterior del formato HDD.

QCOW es la versión original anterior del formato qcow. Ha sido reemplazado por qcow2, que VirtualBox no admite.

QED fue una mejora abandonada de qcow2. QEMU desaconseja el uso de QED.

  • actuación

Cada uno de los formatos puede tener características de rendimiento matizadas debido a la forma en que el almacenamiento de bloques es abstraído por el formato, pero no he encontrado ningún punto de referencia que compare los formatos compatibles con VirtualBox.

Hay factores más importantes que influyen en el rendimiento, como:

  • las limitaciones de su dispositivo físico (mucho más notable en una unidad de disco duro que en una unidad de estado sólido ... ¿Por qué? )
  • expandir una unidad de disco virtual asignada dinámicamente (las operaciones de escritura son más lentas a medida que el disco virtual se expande, pero una vez que es lo suficientemente grande, la expansión debería ocurrir menos)
  • tecnología de virtualización ( hardware versus software ; la virtualización de hardware ayuda a VirtualBox y mejora la velocidad de los sistemas operativos virtuales)
  • El hecho de que está ejecutando un sistema operativo virtual. El rendimiento siempre es más lento que ejecutar un sistema operativo en el host debido a la sobrecarga de virtualización.

18
+1 Agregaré que VMDK parece ofrecer la panacea que he estado buscando en términos de copias de seguridad incrementales: ya no tengo que hacer una copia de seguridad de un enorme VDI monolítico para un solo cambio en el invitado.
msanford

Creo que falta alguna consideración sobre el disco duro del host sin procesar, que es el invitado virtual que usa un disco duro "físico" (o dispositivo RAID) como se ve desde el host. Esto permitiría mejores desempeños que usar una unidad simulada sobre un sistema de archivos.
EnzoR

1
@Enzo: ahora uso VMDK en un dispositivo de bloque sin procesar. El gran problema es que VirtualBox necesita ejecutarse como root. Además, las instantáneas no son compatibles con los discos sin formato, pero tengo un sistema de instantáneas de terceros (ZFS). VMDK en un disco sin formato también es mucho menos portátil. En cuanto al rendimiento, no tengo puntos de referencia sólidos, pero tampoco tengo quejas.
Deltik

66
VHD se puede montar como una unidad en Windows Disk Management, que no parece tan sencillo con VDI: superuser.com/q/342334/13889
endolith

55
@msanford, ¿podría explicar cómo VMDK evita hacer una copia de seguridad del enorme archivo? ¿Puede rsync descubrir mejor las diferencias? el archivo VMDK también parece cambiar en cada ajuste.
Ben Creasy

39

Siempre uso VDI, ya que es el formato nativo de VirtualBox; sin embargo, el uso de un VMDK (formato VMWare) aumentará la compatibilidad con otro software de máquina virtual.

VirtualBox funcionará bien en Ubuntu, por lo que si el objetivo es la interoperabilidad de Windows / Ubuntu, VDI sería una opción perfectamente válida.

Ambos formatos cumplirán sus requisitos.

En cuanto a los otros dos, VHD es un formato desarrollado por Microsoft, y HDD es un formato desarrollado por Apple; ambos tienen licencia propia, por lo tanto, limite el soporte multiplataforma; No los recomendaría


18

Mpack, explica una diferencia clave de rendimiento entre VHD y VDI aquí:

Habiendo estudiado recientemente el formato VHD, esperaría que haya al menos una pequeña diferencia en el favor de VDI, más notable cuando se compara como similar, es decir, un VDI optimizado frente a un VHD optimizado. La razón es que el formato dinámico VHD tiene estos sectores de "mapa de bits" dispersos por todo el disco. Cada vez que modifique un sector dentro de un bloque, es posible que estos bloques de mapa de bits también necesiten actualizarse y escribirse, lo que implica búsquedas, lecturas y escrituras adicionales. Estos sectores de mapa de bits también se deben omitir al leer clústeres consecutivos de una imagen de unidad; más búsquedas. El formato VDI no tiene estos gastos generales, especialmente si el VDI ha sido optimizado (bloques en el disco virtual ordenados en orden LBA).

Todos mis comentarios se aplican al formato VHD dinámico frente a VDI dinámico. Las pruebas de rendimiento en discos virtuales de tamaño fijo no tienen sentido ya que ambos formatos son iguales (solo una imagen simple de un disco), solo tienen encabezados diferentes.

https://forums.virtualbox.org/viewtopic.php?f=1&t=22688


5

No sé si usar vmdk le permitiría ejecutar de forma transparente una máquina virtual creada en VirtualBox en VMware o no. Que podría. Sin embargo, una opción más universal podría ser usar la función VirtualBox File / Export para crear un archivo .ova de "Open Virtualization Appliance" que luego se pueda importar a VMware. Con ese enfoque, puede transferir a cualquier sistema de virtualización que admita .ova sin importar el formato de imagen de disco que use en VirtualBox.

Si necesita exportar desde la misma máquina virtual a intervalos regulares, por ejemplo, todos los días, eso podría ser un problema. Pero si solo te cambias a una tecnología diferente ocasionalmente, debería estar bien.

Si ya tiene un archivo .vdi, puede probar si esto funciona sin tener que crear una nueva máquina virtual. Exportarlo a un .ova, luego intente importar con vmware.


5

Depende de cómo planee usar el disco virtual también. No todas las máquinas virtuales quieren una única partición en un solo disco.

VDI parece tener más opciones (cuando se usa con VirtualBox), pero tan pronto como elimina VirtualBox de la imagen, el soporte para VDI se vuelve algo inestable (a fines de 2014).

Por ejemplo, mis soluciones deben tener el máximo soporte multiplataforma. Montar un VDI (como un dispositivo de bucle invertido) en Linux o Windows 7 es más difícil y tiene más errores de lo que cabría esperar. Casi como el VDI tiene demasiadas características, lo que hace que sea difícil crear utilidades totalmente conformes que puedan funcionar en él.

VMDK es simplemente menos doloroso en mi humilde opinión cuando quiere que funcione con cualquier VM en cualquier estación de trabajo, cuando desea clonarlo 3 veces a otros sistemas en la red al mismo tiempo, y cuando quiere abrirlo sin iniciar una VM ejemplo.

Aunque uso VirtualBox el 90% del tiempo, las pocas veces que mis discos se vuelven inaccesibles en ciertos flujos de trabajo me han llevado a favorecer VMDK para sistemas de archivos conectables / compartidos.


5

Los archivos de imagen de disco residen en el sistema host y los sistemas invitados los ven como discos duros de cierta geometría. Cuando un sistema operativo invitado lee o escribe en un disco duro, VirtualBox redirige la solicitud al archivo de imagen.

Al igual que un disco físico, un disco virtual tiene un tamaño (capacidad), que debe especificarse cuando se crea el archivo de imagen. Sin embargo, a diferencia de un disco físico, VirtualBox le permite expandir un archivo de imagen después de la creación, incluso si ya tiene datos; VirtualBox admite cuatro variantes de archivos de imagen de disco:

VDI: normalmente, VirtualBox utiliza su propio formato contenedor para discos duros invitados: archivos de imagen de disco virtual (VDI). En particular, este formato se usará cuando cree una nueva máquina virtual con un nuevo disco.

VMDK: VirtualBox también es totalmente compatible con el popular y abierto formato contenedor VMDK que utilizan muchos otros productos de virtualización, en particular VMware. [25]

VHD: VirtualBox también es totalmente compatible con el formato VHD utilizado por Microsoft.

Los archivos de imagen de Parallels versión 2 (formato HDD) también son compatibles. [26] Por falta de documentación del formato, los formatos más nuevos (3 y 4) no son compatibles. Sin embargo, puede convertir dichos archivos de imagen al formato de la versión 2 utilizando las herramientas proporcionadas por Parallels.


3
Esta respuesta proviene del Capítulo 5 del manual de VirtualBox. enlace
JerryOL

4

Una buena razón para mí para usar vmdk es que Virtualbox (al menos hasta la versión 4.1) que usa el formato VDI tiene la tendencia, con el tiempo, de llenar el espacio de disco asignado completo, a pesar de que el uso interno del disco virtual es aún mucho menor. Con Virtualbox usando discos vmdk, esto parece un problema menor.

Pero estoy hablando de años de actividad. Esto podría no ser un problema que muchas personas encuentren.


3
Está más relacionado con la fragmentación del sistema de archivos invitado que con el formato en sí.
EnzoR

2

Parece que el uso de VDI hace posible recortar el archivo de disco a su tamaño real VirtualBox y el soporte de comando TRIM de SSD


Si bien es cierto, es un poco deslucido para una pregunta que pregunta sobre las diferencias generales entre esos formatos, ¿no le parece?
Seth

3
@Seth La descripción general fue proporcionada por respuestas anteriores y no tengo suficiente representante para comentar, pero aún es importante mencionar este hecho
OwnageIsMagic

1
Solo como una sugerencia, sin embargo, agréguela para darle más contexto. Por ejemplo, "Si bien esta respuesta proporciona una buena visión general, también debe considerar la ventaja de ...". Entonces, incluso si lee solo, su respuesta tiene una relación con una más general.
Seth

@Seth hay un editbotón debajo de mi pregunta para ti: D
OwnageIsMagic

1
Puedo garantizar que revisaré su edición, para que su trabajo no se desperdicie. También se lo mencionará como editor de la pregunta, por lo que obtendrá la atribución adecuada. ¿Cuál es el problema?
OwnageIsMagic

2

VDI es mucho más fácil de compactar si la VM crece demasiado.


1

Hace mucho tiempo hice una prueba, convertí vdi dinámico en vhd dinámico solo para probar la velocidad y el tamaño de los archivos.

Recuerde que fue un sistema operativo inmutable de Windows limpio para instalar con algunas aplicaciones, recuerde que para mi prueba convierto un formato a otro, por lo que se supone que ambos tienen exactamente la misma imagen, como hacer una clonación.

Para un tamaño de disco de 64GiB, el tamaño del archivo VDI era de aproximadamente 18GiB, mientras que el tamaño del archivo de VHD era de alrededor de 22GiB.

Puedo recordar que vi estas dos cosas:

  1. El tiempo de arranque fue significativamente diferente, si no recuerdo mal vhd fue 1.6 veces más rápido que VDI
  2. El tamaño de VHD era mucho más grande que VDI, alrededor de 4GiB gigabytes más grande que 18GiB, por lo tanto, 1.2 veces más grande.

Eso fue hace mucho tiempo y la prueba se realizó en un HDD, pero me aseguro de que ambos archivos se desfragmentaron y uno al lado del otro en la parte rápida del disco.

Espero que alguien pueda hacer pruebas SSD reales, pero creo que VHD es más rápido (y más grande) que VDI.

Solo un consejo: VHD / VHDX se puede compactar directamente en cualquier Windows 7 y superior mediante la herramienta de línea de comandos DiskPart, para VDI se necesita una herramienta externa CloneVDI.

Lo siento, no probé VMDK, no sabía cómo compactarlo sin cambiar su UUID (el UUID del disco), recuerde que las herramientas de comando VBOX siempre lo cambian en cada clon, sin importar el formato que use.


1

Acabo de migrar un VMDK sin procesar, que se asignó a una partición de un Transcend SSD370 de 128 GB a un Samsung Pro 850 de 512 GB.

Aparentemente, VMDK es mucho más rápido que VDI. No entiendo por qué, tal vez cometí un error en alguna parte.

Copié el VMDK a través del Virtual Media Manager en el 850. Una vez como VDI, una vez como VMDK.

Luego corrí hdparm -tT --direct /dev/sdasobre las imágenes. Para cada una de las "ejecuciones" que cambié, reemplacé la "Máquina -> Configuración -> Almacenamiento -> Controlador SATA -> ImageFile.xxx". La partición sin formato en SSD370 fue definida por un archivo VMDK, por lo que no es realmente una imagen.

Estos son los resultados:

################################################################################################

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-96-generic x86_64)

  System information as of Thu Sep 21 17:02:51 CEST 2017

  System load:  1.96               Processes:              201
  Usage of /:   83.2% of 43.88GB   Users logged in:        0
  Memory usage: 4%                 IP address for eth0:    
  Swap usage:   0%                 IP address for docker0: 172.17.0.1

################################################################################################

======================================================================================
      V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================

 Timing O_DIRECT cached reads:   1024 MB in  2.00 seconds = 511.61 MB/sec <---
 Timing O_DIRECT disk reads: 1134 MB in  3.00 seconds = 377.88 MB/sec <---

 Timing O_DIRECT cached reads:   1042 MB in  2.00 seconds = 520.82 MB/sec <---
 Timing O_DIRECT disk reads: 1162 MB in  3.00 seconds = 387.27 MB/sec <---

---

 Timing O_DIRECT cached reads:   816 MB in  2.00 seconds = 407.55 MB/sec
 Timing O_DIRECT disk reads: 1020 MB in  3.01 seconds = 339.43 MB/sec <---

======================================================================================
      V M D K --- on Samsung Pro 850 515GB
======================================================================================

 Timing O_DIRECT cached reads:   836 MB in  2.00 seconds = 417.21 MB/sec <---
 Timing O_DIRECT disk reads: 782 MB in  3.01 seconds = 260.21 MB/sec

 Timing O_DIRECT cached reads:   834 MB in  2.00 seconds = 416.08 MB/sec
 Timing O_DIRECT disk reads: 786 MB in  3.00 seconds = 261.71 MB/sec

---

 Timing O_DIRECT cached reads:   826 MB in  2.00 seconds = 412.75 MB/sec <---
 Timing O_DIRECT disk reads: 774 MB in  3.00 seconds = 257.79 MB/sec

 Timing O_DIRECT cached reads:   828 MB in  2.00 seconds = 413.88 MB/sec <---
 Timing O_DIRECT disk reads: 774 MB in  3.00 seconds = 257.83 MB/sec

---

 Timing O_DIRECT cached reads:   842 MB in  2.00 seconds = 420.76 MB/sec <---
 Timing O_DIRECT disk reads: 770 MB in  3.00 seconds = 256.56 MB/sec

======================================================================================
      V D I --- on Samsung Pro 850 515GB
======================================================================================

 Timing O_DIRECT cached reads:   470 MB in  2.01 seconds = 234.21 MB/sec <---
 Timing O_DIRECT disk reads: 766 MB in  3.00 seconds = 254.94 MB/sec

 Timing O_DIRECT cached reads:   494 MB in  2.00 seconds = 246.45 MB/sec <---
 Timing O_DIRECT disk reads: 754 MB in  3.00 seconds = 250.92 MB/sec

 Timing O_DIRECT cached reads:   490 MB in  2.00 seconds = 244.46 MB/sec <---
 Timing O_DIRECT disk reads: 764 MB in  3.01 seconds = 254.03 MB/sec

################################################################################################
# Data above comes from here
################################################################################################

======================================================================================
      V M D K --- on Samsung Pro 850 515GB
======================================================================================

  System information as of Thu Sep 21 17:02:51 CEST 2017

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   836 MB in  2.00 seconds = 417.21 MB/sec <======
 Timing O_DIRECT disk reads: 782 MB in  3.01 seconds = 260.21 MB/sec <======

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   21080 MB in  2.00 seconds = 10554.40 MB/sec
 Timing buffered disk reads: 784 MB in  3.00 seconds = 260.92 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   834 MB in  2.00 seconds = 416.08 MB/sec <======
 Timing O_DIRECT disk reads: 786 MB in  3.00 seconds = 261.71 MB/sec <======

======================================================================================
      V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================

  System information as of Thu Sep 21 17:00:47 CEST 2017

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   1024 MB in  2.00 seconds = 511.61 MB/sec <======
 Timing O_DIRECT disk reads: 1134 MB in  3.00 seconds = 377.88 MB/sec <======

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   21182 MB in  2.00 seconds = 10603.52 MB/sec
 Timing buffered disk reads: 1060 MB in  3.00 seconds = 352.91 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   1042 MB in  2.00 seconds = 520.82 MB/sec <======
 Timing O_DIRECT disk reads: 1162 MB in  3.00 seconds = 387.27 MB/sec <======

======================================================================================
      V M D K --- on Samsung Pro 850 515GB
======================================================================================

  System information as of Thu Sep 21 16:58:12 CEST 2017

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   826 MB in  2.00 seconds = 412.75 MB/sec <======
 Timing O_DIRECT disk reads: 774 MB in  3.00 seconds = 257.79 MB/sec <======

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   22082 MB in  2.00 seconds = 11055.78 MB/sec
 Timing buffered disk reads: 788 MB in  3.01 seconds = 262.11 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   828 MB in  2.00 seconds = 413.88 MB/sec <======
 Timing O_DIRECT disk reads: 774 MB in  3.00 seconds = 257.83 MB/sec <======

======================================================================================
      V D I --- on Samsung Pro 850 515GB
======================================================================================

  System information as of Thu Sep 21 16:55:24 CEST 2017

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   21468 MB in  2.00 seconds = 10747.37 MB/sec
 Timing buffered disk reads: 662 MB in  3.01 seconds = 220.12 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   470 MB in  2.01 seconds = 234.21 MB/sec <======
 Timing O_DIRECT disk reads: 766 MB in  3.00 seconds = 254.94 MB/sec <======

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   494 MB in  2.00 seconds = 246.45 MB/sec <======
 Timing O_DIRECT disk reads: 754 MB in  3.00 seconds = 250.92 MB/sec <======

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   20872 MB in  2.00 seconds = 10448.98 MB/sec
 Timing buffered disk reads: 694 MB in  3.01 seconds = 230.78 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   490 MB in  2.00 seconds = 244.46 MB/sec <======
 Timing O_DIRECT disk reads: 764 MB in  3.01 seconds = 254.03 MB/sec <======

======================================================================================
      V M D K --- on Samsung Pro 850 515GB
======================================================================================

  System information as of Thu Sep 21 16:52:32 CEST 2017

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   20872 MB in  2.00 seconds = 10448.90 MB/sec
 Timing buffered disk reads: 764 MB in  3.01 seconds = 254.11 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   842 MB in  2.00 seconds = 420.76 MB/sec <======
 Timing O_DIRECT disk reads: 770 MB in  3.00 seconds = 256.56 MB/sec <======

======================================================================================
      V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================

  System information as of Thu Sep 21 16:29:55 CEST 2017

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   22034 MB in  2.00 seconds = 11029.82 MB/sec
 Timing buffered disk reads: 990 MB in  3.00 seconds = 329.68 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   816 MB in  2.00 seconds = 407.55 MB/sec <======
 Timing O_DIRECT disk reads: 1020 MB in  3.01 seconds = 339.43 MB/sec <======

Realmente no sé cómo interpretar esto, tal vez alguien quiera dejar un comentario al respecto. Elegí el VMDK entonces.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.