AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 787990
Accepted
Marcelo
Marcelo
Asked: 2024-12-12 08:51:38 +0800 CST2024-12-12 08:51:38 +0800 CST 2024-12-12 08:51:38 +0800 CST

Como posso usar um disco físico de forma confiável como um disco de sistema operacional convidado VMware sem riscos?

  • 772

Tenho uma máquina dual boot com duas instalações Linux, uma é meu sistema principal e a outra é um tipo de instalação de recuperação para usar caso algo dê errado com a instalação principal (para consertar a principal ou até mesmo para usá-la em uma situação de emergência).

Como tento manter essa instalação secundária atualizada, é preciso atualizar regularmente os pacotes, etc. O problema é que isso exige inicializá-la de tempos em tempos, o que consome tempo e, para não dizer, é muito chato.

Para resolver isso, configurei uma máquina convidada VMware que usa o segundo disco físico de instalação como seu disco virtual, o que me permite manter essa segunda instalação como uma tarefa em segundo plano (na maior parte do tempo).

O problema é que existem alguns riscos conhecidos do uso de discos físicos em VMs, sendo os mais importantes que vale a pena mencionar:

  1. A possibilidade de inicializar a VM enquanto o sistema operacional principal tem uma ou mais de suas partições também montadas, muitas vezes levando à corrupção e perda de dados.
  2. VMware para usar acidentalmente o disco físico errado devido à nomenclatura uniforme do kernel de dispositivos não ser garantida em cada inicialização. Pelo menos teoricamente, o mesmo disco pode ser atribuído a diferentes /dev/sdXnós em diferentes inicializações.

Como eu poderia evitar que essa situação acontecesse?

virtual-machine
  • 1 1 respostas
  • 29 Views

1 respostas

  • Voted
  1. Best Answer
    Marcelo
    2024-12-12T08:51:38+08:002024-12-12T08:51:38+08:00

    Para abordar os riscos mencionados na questão, escreveremos uma regra udev que garante que o VMware sempre usará o disco correto. Além disso, a menos que explicitamente montado pelo usuário, ele também garante que nenhuma de suas partições será montada automaticamente por utilitários e ambientes baseados em udisks (geralmente em /run/media/<user>/...):

    Você pode salvar o arquivo abaixo como/etc/udev/rules.d/70-persistent-vmdk.rules

    # The purpose of these rules is to make sure vmware will use the correct phisical device as a virtual disk.
    # All rules are based on the disk serial numbers, which can be obtained running:
    #   "udevadm info --query=all --name=/dev/<device>"
    # and looking for a line like this:
    #   "E: ID_SERIAL=<serial>"
    #
    # After editing this file with the correct serial number, execute:
    #   "udevadm control --reload-rules"
    #   "udevadm trigger"
    
    # Serial and node numbers associations:
    SUBSYSTEM=="block", ENV{ID_SERIAL}=="<serial 1...>", ENV{VMDK_NODE_NR}="0", GOTO="VMDK_MATCH"
    SUBSYSTEM=="block", ENV{ID_SERIAL}=="<serial 2...>", ENV{VMDK_NODE_NR}="1", GOTO="VMDK_MATCH"
    
    GOTO="VMDK_END"
    
    LABEL="VMDK_MATCH"
    
    # Prevent udisks based automount utilities to mount the disk under "/run/media/<user>/..."
    SUBSYSTEM=="block", ENV{UDISKS_IGNORE}="1"
    SUBSYSTEM=="block", ENV{UDISKS_AUTO}="0"
    
    # Create a symlinks to "/dev/vmdisk<node number>[p<partition>]"
    SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", SYMLINK+="vmdisk$env{VMDK_NODE_NR}"
    SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", SYMLINK+="vmdisk$env{VMDK_NODE_NR}p%n"
    
    LABEL="VMDK_END"
    

    Em seguida, configure o VMware para usar /dev/vmdisk0em vez do nome canônico do dispositivo (como /dev/sda, /dev/sdb, /dev/nvme0n1p1, ...).

    Note que o vmware inicialmente se recusará a adicionar um dispositivo físico se você especificar um symlink como o caminho do dispositivo. Tudo bem, primeiro crie-o usando seu nome canônico, depois feche o vmware e edite o arquivo vmdk.

    Deve haver uma linha parecida com esta:

    RW 1000215216 FLAT "/dev/sda" 0
    

    Substitua apenas o nome do dispositivo e não toque em mais nada :

    RW 1000215216 FLAT "/dev/vmdisk0" 0
    

    Claro que você pode aumentar essas regras do udev para adicionar mais discos com base em seus números de série e nomeá-los /dev/vmdisk2, /dev/vmdisk3...

    OBS: Isso foi testado no VMWare Workstation 17.5


    O principal objetivo de postar esta pergunta foi compartilhar as técnicas que desenvolvi e que podem ajudar outras pessoas, então estou respondendo minha própria pergunta.

    Quaisquer melhorias e outras respostas que o complementem são mais que bem-vindas.

    • 0

relate perguntas

  • Convidado do VirtualBox Win10 @ Linux host trava muito tempo na inicialização, como solucionar problemas?

  • Debian 9: Como configurar o Samba-Exchange entre QEMU-Host e QEMU-Guest (Windows)?

  • Como posso acionar manualmente o driver de balão virtio em um convidado?

  • Como você altera a porta KVM VNC em tempo de execução, na linha de comando?

  • Linux do zero dentro de um contêiner LXC

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve