{"id":1416,"date":"2011-09-28T19:11:34","date_gmt":"2011-09-28T17:11:34","guid":{"rendered":"http:\/\/ao.wordpress.attico\/?p=1416"},"modified":"2011-09-28T19:11:34","modified_gmt":"2011-09-28T17:11:34","slug":"conectar-un-disco-usb-a-una-maquina-virtualbox-sin-guest-additions","status":"publish","type":"post","link":"https:\/\/www.anadebreuil.org\/blog\/?p=1416","title":{"rendered":"Conectar un disco USB a una m\u00e1quina VirtualBox sin Guest Additions."},"content":{"rendered":"<p>El objetivo de este informe es montar un disco duro USB en una m\u00e1quina VirtualBox que no tiene instalado Guest Additions. Normalmente nos encontraremos en esta situaci\u00f3n en servidores Linux virtualizados en los que no queremos instalar Guest Additions. Con este truco podremos acceder al disco duro como si estuviera pinchado directamente en la m\u00e1quina virtual. B\u00e1sicamente la idea es crear un fichero VMDK directamente enlazado con el disco duro (no un fichero con el contenido del disco), y colocar ese disco en el bus SATA de la m\u00e1quina virtual.<\/p>\n<p><!--more--><\/p>\n<p>Las razones para no tener VirtualBox Guest Additions en el hu\u00e9sped van asociadas a lo que aporta:<\/p>\n<ul>\n<li>drivers adecuados para el modo gr\u00e1fico,<\/li>\n<li>drivers de rat\u00f3n y teclado mejor integrados con el escritorio del anfitri\u00f3n,<\/li>\n<li>conectividad USB (a veces Plug &amp; Play),<\/li>\n<li>y poder compartir carpetas entre el anfitri\u00f3n y el hu\u00e9sped.<\/li>\n<\/ul>\n<p>Estas caracter\u00edsticas son muy deseables en m\u00e1quinas virtuales \u00abde escritorio\u00bb, pero no son necesarias en servidores. Por contra, tendremos que instalar software adicional en la m\u00e1quina hu\u00e9sped, y si \u00e9sta es Linux implica compilar en la m\u00e1quina los drivers que viene en la imagen ISO de VirtualBox Guest Additions, y eso mismo cada vez que se actualice el n\u00facleo.<\/p>\n<p>Estaremos condenados a tener la m\u00e1quina hu\u00e9sped aislada del mundo: s\u00f3lo podr\u00e1 recibir informaci\u00f3n desde ficheros en red (FTP, HTTP, SFTP, CIFS \u00f3 NFS principalmente). Pero ante un escenario como, por ejemplo, restaurar los ficheros de una copia de seguridad (no ser\u00e1n uno ni dos ficheros precisamente&#8230;), colocar el disco entero en red no parece una buena idea. De esta forma veremos el disco duro como si estuviera directamente conectado a nuestra m\u00e1quina virtual.<\/p>\n<h2>Escenario<\/h2>\n<ul>\n<li>Un anfitri\u00f3n Fedora 15 con VirtualBox 4.1 instalado.<\/li>\n<li>Un huesped Linux (da igual la versi\u00f3n).<\/li>\n<li>Un disco duro USB.<\/li>\n<li>El usuario que ejecuta VirtualBox tiene permisos suficientes (rw) para leer y escribir en el dispositivo<em> \/dev\/xx<\/em> que tiene asignado el disco USB en el anfitri\u00f3n. En Fedora esto se cumple si el usuario pertenece al grupo <em>disk<\/em>.<\/li>\n<li>El usuario tiene permisos para adquirir la identidad de <em>root<\/em> en la m\u00e1quina huesped.<\/li>\n<\/ul>\n<h2>Procedimiento<\/h2>\n<ul>\n<li>Pinchamos el disco USB en una unidad del anfitri\u00f3n. La acci\u00f3n habitual de \u00e9ste ser\u00e1 montar el disco y abrirnos una ventana con su contenido. Cerramos esa ventana (no nos sirve para nada).<\/li>\n<\/ul>\n<ul>\n<li>Abrimos una ventana del terminal y buscamos qu\u00e9 dispositivo \/dev\/xxx ha asignado a mi disco externo. Para ello escribimos el comando <strong>df -h<\/strong>, y obtendremos un listado con una l\u00ednea por cada sistema de ficheros montado. Una de las l\u00edneas se corresponder\u00e1 a mi disco duro. Si el disco duro fue formateado con una etiqueta <em>LABEL<\/em>, el sistema lo monta en <strong>\/media\/LABEL<\/strong>. As\u00ed que en mi caso la etiqueta era <em>BACKUP<\/em> as\u00ed que obtuve esta l\u00ednea (entre otras):<\/li>\n<\/ul>\n<pre style=\"padding-left:30px;\"><strong>\/dev\/sdb1<\/strong>\u00a0\u00a0 299G\u00a0 173G\u00a0 126G\u00a0 58% \/media\/BACKUP<\/pre>\n<ul>\n<li>Anotamos la ruta del dispositivo. El t\u00e9rmino <em>sdb1<\/em> que me ha salido significa: <strong>S<\/strong>csi <strong>D<\/strong>isk <strong>B<\/strong> (A es el primero, B el segundo, etc.) <strong>1<\/strong>\u00aa partici\u00f3n. Como yo quiero acceder al disco entero y no s\u00f3lo a la partici\u00f3n 1, mi dispositivo es <strong>\/dev\/sdb<\/strong>.<\/li>\n<li>Desmonto el disco externo para que el sistema operativo del anfitri\u00f3n no lo utilice: <strong>umount \/dev\/sdb1<\/strong>.<\/li>\n<li>Compruebo que tengo acceso completo al dispositivo mediante el comando<strong> ls -l \/dev\/sdb<\/strong>, y sale algo as\u00ed:<br \/>\n<em>brw-rw&#8212;- 1 root disk 8, 16 sep 28 17:32 \/dev\/sdb<\/em><br \/>\nLo que implica que s\u00f3lo el usuario <em>root<\/em> y los usuarios del grupo <em>disk<\/em> pueden leer y escribir ese dispositivo.<\/li>\n<li>Compruebo si formo parte del grupo <em>disk<\/em> o no tendr\u00e9 nada que hacer: <strong>getent group | grep \u00ab^disk:\u00bb<\/strong> y miro a ver si mi <em>login<\/em> est\u00e1 en la lista de usuarios del grupo. Si no est\u00e1s arregla eso porque no puedes seguir.<\/li>\n<li>Bien, ahora tengo que decidir d\u00f3nde quiero crear el fichero VMDK que le dir\u00e1 a VirtualBox c\u00f3mo acceder al disco. En mi caso lo dej\u00e9 en el directorio<em> \/var\/lib\/VirtualBox\/mmartin\/HardDisks<\/em> porque ya lo ten\u00eda preparado para estas cosas.<\/li>\n<li>Ejecutamos estos comandos:<\/li>\n<\/ul>\n<pre>cd \/var\/lib\/VirtualBox\/mmartin\/HardDisks\nVBoxManage internalcommands createrawvmdk -filename BACKUP.vmdk -rawdisk \/dev\/sdb\nchgrp disk BACKUP.vmdk\nchmod 660 BACKUP.vmdk<\/pre>\n<ul>\n<li>Abrimos el VirtualBox. Si el hu\u00e9sped se est\u00e1 ejecutando, lo apagamos, para poder editar su configuraci\u00f3n. En Almacenamiento a\u00f1adimos al bus SATA un disco duro ya existente. Nos saldr\u00e1 un cuadro de di\u00e1logo para que le digamos el fichero del disco, y buscamos nuestro <strong>BACKUP.vmdk<\/strong>.<\/li>\n<li>Si arrancamos la m\u00e1quina, ahora tendr\u00e1 un dispositivo de disco duro nuevo, pongamos que \/dev\/sdc. Para el hu\u00e9sped es un disco duro fijo, no un disco USB. Esto implica que (1) tendremos que montarlo a mano porque no hay eventos de tipo \u00abdisco pinchado\u00bb que lancen el proceso de montaje autom\u00e1tico; y (2) el disco externo debe permanecer pinchado en el anfitri\u00f3n en tanto el huesped est\u00e9 encendido.<\/li>\n<li>Creamos una entrada en <strong>\/etc\/fstab<\/strong> para simplicar el montaje. Como ejemplo, en mi caso mont\u00e9 usando la etiqueta, un disco que ten\u00eda formateado como ReiserFS. La opci\u00f3n <strong>noauto<\/strong> es importante para que el sistema operativo no trate de montarlo en el arranque, y la opci\u00f3n <strong>sync<\/strong> para garantizar que no se demora la escritura de datos, y hacerlo menos vulnerable a extracciones incorrectas de la unidad. Las opciones <em>acl<\/em> y <em>user_xattr<\/em> las pongo porque el disco externo tiene copias de otros discos que se montan con esas opciones, de forma que garantizo que los metadatos del fichero tambi\u00e9n se copian en el disco externo, mientras que las opciones <em>nodev<\/em>, <em>nosuid<\/em> limita lo que pueden hacer los ficheros de esa unidad (que puede ser cualquiera).<\/li>\n<\/ul>\n<pre>LABEL=BACKUP \/media\/usb reiserfs noauto,sync,nodev,nosuid,acl,user_xattr 0 0<\/pre>\n<ul>\n<li>Creamos el directorio del punto de montaje, en mi caso <strong>mkdir \/media\/usb<\/strong>.<\/li>\n<li>Probamos a montar el disco en el huesped, en mi caso <strong>mount \/media\/usb<\/strong>, y si todo es correcto podemos desmontarlo si hemos terminado, <strong>umount \/media\/usb<\/strong>.<\/li>\n<\/ul>\n<h2>Observaciones<\/h2>\n<ul>\n<li>El disco no puede estar montado al mismo tiempo en el anfitri\u00f3n ni en el hu\u00e9sped, ni desde luego, ser conectado a otros hu\u00e9spedes.<\/li>\n<li>El disco no debe concectarse ni desconectarse con el hu\u00e9sped arrancado.<\/li>\n<li>El hu\u00e9sped no puede arrancarse sin el disco duro externo mientras en su configuraci\u00f3n est\u00e9 instalado en su bus SATA.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>El objetivo de este informe es montar un disco duro USB en una m\u00e1quina VirtualBox que no tiene instalado Guest Additions. Normalmente nos encontraremos en esta situaci\u00f3n en servidores Linux virtualizados en los&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[26],"class_list":["post-1416","post","type-post","status-publish","format-standard","hentry","category-tutoriales","tag-virtualbox"],"_links":{"self":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1416","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1416"}],"version-history":[{"count":0,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1416\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}