Virtualbox acessa a unidade interna

0

Como posso acessar uma unidade interna de meus sistemas convidados? Meu host é o Windows 7. Eu tentei o manual , mas quando eu conecto o novo vmdk a um convidado do Windows 7, ele é exibido como não formatado com espaço em disco zero. O comando para criar o vmdk é:

VBoxManage.exe internalcommands createrawvmdk -filename C:\Users\me\.Virtualbox\VDI\mydrive.vmdk -rawdisk \.\PhysicalDrive0

Onde o número por trás do PhysicalDrive é o número do disco no Gerenciamento do computador - > Gerenciamento de disco. Se eu entendi o problema corretamente, o manual parece abordar usando o disco rígido como um dispositivo de inicialização em vez de armazenamento. Minha motivação para simplesmente adicionar outro disco ao meu convidado virtual é que tenho armazenamento adicional que pode ser acessado sem sobrecarga de virtualização. Compartilhar dados não é um problema. O disco em si não armazena dados que são importantes, embora eu não gostaria de excluí-lo se isso for uma opção. Eu vou usar pastas compartilhadas por enquanto, mas elas são lentas em comparação.

[EDIT] Desculpe pela confusão, a imagem vm que eu usei é o Windows XP, não o Windows 7. Eu criei um novo vmdk com privilégios de administrador, como sugerido nos comentários. O comportamento não mudou embora. Em seguida, tentei acessar o disco no meu Ubuntu vm. Na primeira partida, recebi um erro VERR_ACCESS_DENIED, verifique se há espaço livre suficiente. Depois de reiniciar o vm com força, consegui acessar o disco através do gerenciador de arquivos. Eu também tentei acessar o disco de um Windows 7 vm (sim, desta vez realmente o Windows 7). Lá ocorreu o mesmo erro VERR_ACCESS_DENIED. Em contraste com o Ubuntu vm reapareceu toda vez que eu reiniciei (três vezes).

[EDIT2] A implementação parece ser falha. Escrevi um script para escrever 10 GB de arquivos de 1 MB, 10 GB de 2 GB e assim por diante. Primeiro, recebi um erro no arquivo 6200.th 1MB. Na próxima execução, o mesmo erro ocorreu no primeiro arquivo de 3MB:

/bin/dd: opening '/media/Ultra_/samplefiles/3MB_1': Input/output error

A partir daí, recebo um erro de E / S ao tentar acessar o diretório samplefiles de qualquer forma.

[EDIT3] Aqui está um script de teste para reproduzir o erro. Se eu acessar o disco através do meu sistema host, não consigo ver os arquivos / pastas que eu escrevi para ele através do convidado. No guest em si, os arquivos são visíveis e o tamanho do sistema de arquivos do sistema de arquivos raw visível por meio de df -h diminui à medida que eu escrevo arquivos nele. Ainda posso acessar outros arquivos no disco depois que o erro ocorreu.

    #!/usr/bin/python
"""Generate directory of files for testing."""
import sys, os
import argparse
try:
    import sh
    from sh import dd
except:
    print 'Please install the python sh module first : pip install sh'
    exit(1)

class MyParser(argparse.ArgumentParser):
    def error(self, message):
        print_help()
        sys.exit(1)

def print_help():
   print
   print '  Not enough arguments.\n'
   print '      Example: '
   print '          %s directory_for_generated_files' %  sys.argv[0]
   print '          Generate 10GB worth of 1MB, 2MB, 3MB, 4MB, 5MB, and 6MB files to the directory *directory_for_generated_files*.'
   print

def main():
    parser = MyParser()
    parser.add_argument('directory')
    args = parser.parse_args()
    directory = args.directory
    if not os.path.exists(directory):
        os.makedirs(directory)
    filesize_arr = [1,2,3,4,5,6]
    filequantity_arr = [10000,5000,3333,2500,2000,1667]

    idx = 0 
    for size in filesize_arr:
        for nr in range(1,filequantity_arr[idx]+1):  # from 1 to file quantity
            filename =  directory+'/'+str(size)+'MB_'+str(nr)
            print "writing "+directory+'/'+str(size)+'MB_'+str(nr)
            dd('if=/dev/zero', 'of='+filename, 'bs=1MB', 'count='+str(size))
        idx += 1

if __name__ == '__main__':
    main()

[EDIT4] As alterações feitas no sistema de arquivos não são visíveis após o reinício da máquina virtual.

    
por phobic 22.11.2013 / 01:05

1 resposta

0

Apenas unidades e partições que não são montadas no sistema operacional host podem ser acessadas pelas VMs. Eu acho que \.\PhysicalDrive0 é a unidade que você está inicializando seu host, então você não poderá usá-lo. É muito improvável que isso mude no futuro, já que compartilhar um drive entre dois SOs causaria vários problemas, potencialmente levando à corrupção de dados.

Se você quiser compartilhar arquivos entre o sistema operacional host e o sistema operacional convidado, instale os Addons do VirtualBox no guest - uma opção de compartilhamento aparecerá nas configurações da VM, permitindo que você configure uma pasta de rede compartilhada em guest que aponte para alguns das pastas do host.

    
por 23.11.2013 / 19:00