Correção de “sistema de arquivos somente leitura” da VM do Ubuntu?

9

Eu instalaria as ferramentas VMWare em uma máquina virtual do servidor Ubuntu, mas tive o problema de não conseguir criar um diretório cdrom no diretório / mnt. Depois testei para ver se era apenas um problema de permissão, mas não consegui nem criar uma pasta no diretório inicial. Ele continua afirmando que é um sistema de arquivos somente leitura. Eu sei um pouco sobre o Linux e ainda não me sinto confortável. Qualquer conselho seria muito apreciado.

Informações solicitadas de um comentário:

username @ servername : ~ $ mount
/ dev / sda1 em / tipo ext4 (rw, erros = remount-ro)
proc em / proc tipo proc (rw)
nenhum em / sys tipo sysfs (rw, noexec, nosuid, nodev)
nenhum em / sys / fs / fuse / conexões tipo fusectl (rw)
nenhum em / sys / kernel / tipo de depuração debugfs (rw)
nenhum em / sys / kernel / tipo de segurança securityfs (rw)
udev em / dev tipo tmpfs (rw, mode = 0755)
nenhum no tipo / dev / pts devpts (rw, noexec, nosuid, gid = 5, mode = 0620)
nenhum no / dev / shm tipo tmpfs (rw, nosuid, nodev)
nenhum no / var / run type tmpfs (rw , nosuid, mode = 0755)
nenhum no / var / lock type tmpfs (rw, noexec, nosuid, nodev)
nenhum no / lib / init / rw tipo tmpfs (rw, nosuid, mode = 0755) binfmt_misc em / proc / sys / fs / binfmt_misc tipo binfmt_misc (rw, noexec, nosuid, nodev)

Com certeza a saída raiz.

root @ server01: ~ # montagem
/ dev / sda1 em / tipo ext4 (rw, erros = remount-ro)
proc em / proc tipo proc (rw)
nenhum em / sys tipo sysfs (rw, noexec, nosuid, nodev)
nenhum em / sys / fs / fuse / conexões tipo fusectl (rw)
nenhum em / sys / kernel / tipo de depuração debugfs (rw)
nenhum em / sys / kernel / tipo de segurança securityfs (rw)
udev em / dev tipo tmpfs (rw, mode = 0755)
nenhum no tipo / dev / pts devpts (rw, noexec, nosuid, gid = 5, mode = 0620)
nenhum no / dev / shm tipo tmpfs (rw, nosuid, nodev)
nenhum no / var / run type tmpfs (rw , nosuid, mode = 0755)
nenhum no / var / lock type tmpfs (rw, noexec, nosuid, nodev)
nenhum no / lib / init / rw tipo tmpfs (rw, nosuid, mode = 0755) binfmt_misc em / proc / sys / fs / binfmt_misc tipo binfmt_misc (rw, noexec, nosuid, nodev)

texto alternativo

texto alternativo

David
fonte
11
Você pode imprimir a saída do comando "mount"? (não é necessário nenhum parâmetro)
pgruetter
Adicionado à resposta. Obrigado por solicitar informações úteis.
David
Só para ter certeza: "sudo mkdir / mnt / cdrom" falha, certo?
Janne Pikkarainen
O que me confunde é que ele diz que é um sistema de arquivos somente leitura. A saída do comando indica "rw", que é o sistema de arquivos de gravação e leitura. Portanto, o próprio sistema de arquivos deve estar ok. Em qual pasta você está tentando gravar? Você também pode fornecer a saída de "ls -la <the_folder>"?
Pgruetter
Eu adicionei uma imagem na parte inferior, que é uma imagem do que recebo quando faço o comando solicitado. Avise-me se precisar que eu faça outra coisa. :)
David

Respostas:

16

Embora essa seja uma pergunta relativamente antiga, a resposta ainda é a mesma. Você tem uma máquina virtual (executando em um host físico) e algum tipo de armazenamento (armazenamento compartilhado - uma SAN FC, armazenamento iSCSI, um compartilhamento NFS - ou armazenamento local).

Com a virtualização, muitas máquinas virtuais tentam acessar os mesmos recursos físicos ao mesmo tempo. Devido a limitações físicas (número de operações de leitura / gravação - IOPS; taxa de transferência; latência), pode haver um problema para satisfazer todas as solicitações de armazenamento de todas as máquinas físicas ao mesmo tempo. O que geralmente acontece: você poderá ver "tentativas SCSI" e operações SCSI com falha nos sistemas operacionais de suas máquinas virtuais. Se você receber muitos erros / novas tentativas em um determinado período de tempo, o kernel definirá os sistemas de arquivos montados como somente leitura, a fim de evitar danos ao sistema de arquivos.

Para resumir a longa história: Seu armazenamento físico não é "poderoso" o suficiente. Existem muitos processos (máquinas virtuais) acessando o sistema de armazenamento ao mesmo tempo, suas máquinas virtuais não obtêm a resposta do armazenamento com rapidez suficiente e o sistema de arquivos é somente leitura.

Não há muitas coisas que você possa fazer. A solução óbvia é melhor / armazenamento adicional. Você também pode modificar os parâmetros para tempos limite de SCSI no kernel do Linux. Os detalhes são descritos, por exemplo, em:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009465

http://www.cyberciti.biz/tips/vmware-esx-server-scsi-timeout-for-linux-guest.html

No entanto, isso apenas "adiará" seus problemas, porque o kernel demora mais tempo antes que o sistema de arquivos seja configurado como somente leitura. (Ou seja, você não resolve a causa do problema.)

Minha experiência (vários anos com VMware) é que esse problema existe apenas com kernels Linux (estamos usando RHEL e SLES) e não com servidores Windows. Além disso, esse problema ocorre em todos os tipos de armazenamento - FC, iSCSI, armazenamento local. Para nós, o componente mais crítico (e caro) em nossa infraestrutura virtual é o armazenamento. (Agora estamos usando o HP LeftHand com conexões iSCSI de 1 Gbps e não tivemos problemas de armazenamento desde então. Escolhemos o LeftHand (em vez de soluções FC tradicionais) por sua escalabilidade.

Josef
fonte
Uau! Ótima resposta. Eu esqueci completamente dessa pergunta. Marquei sua resposta como a aceita. O datacenter com o qual trabalho atualmente (que é um grande parceiro do VMWare) atualizou recentemente seu armazenamento para um Hitachi Pod. Na verdade, estamos adicionando outro pod ao ambiente para ajudar na carga de IOPs, porque começamos a ter problemas adicionais com as IOPs (enfatizando previamente que precisávamos atualizar ou expandir os recursos da SAN). Portanto, no passado, aumentamos nossos recursos de SAN novamente.
David
4

Uma explicação provável é que existe um problema de hardware (falha parcial do disco) e que o kernel remontou o sistema de arquivos raiz como somente leitura assim que detectou o problema, a fim de minimizar o problema. Uma maneira mais confiável¹ de verificar as opções atuais de montagem é cat /proc/mounts( grep ' / ' /proc/mountspara o sistema de arquivos raiz, ignore uma rootfs / …linha que seja um artefato do processo de inicialização). Você provavelmente descobrirá que rw,errors=remount-rofoi alterado para ro(outras opções também podem ser exibidas).

Os logs do kernel provavelmente contêm a mensagem Remounting filesystem read-only, precedida por erros de acesso ao disco. Os logs normalmente /var/log/kern.logpermanecem, no entanto, se este estiver em um sistema de arquivos agora somente leitura, a mensagem não será exibida lá, embora os erros anteriores devam. Você também pode ver os últimos erros do kernel com o dmesgcomando

Por outro lado, no Ubuntu, o local usual para pontos de montagem (usado pela interface da área de trabalho) está em /media(por exemplo /media/cdrom0), embora você possa usar /mntou /mnt/cdromse quiser.

¹ relatórios de . Se o sistema de arquivos raiz for somente leitura, não será possível manter-se atualizado. mount/etc/mtab/etc/mtab

Gilles 'SO- parar de ser mau'
fonte
A única coisa sobre hardware ruim é que esta é uma máquina virtual, portanto, não pode ser um problema de hardware, pois existem centenas de máquinas virtuais nos hosts físicos e a minha é a única com um problema. Vou verificar os logs do kernel e tentar colocar uma captura de tela dele na pergunta.
David
Se você tiver um limite de tamanho no disco rígido virtual e estiver cheio, o Ubuntu falhará ao gravar, exatamente como mostrado acima. Você pode verificar.
CarlFerlin
@ David: Os logs mostram que o Linux encontrou um problema de hardware, apenas o hardware é virtual. Acho a hipótese de CarlF altamente plausível.
Gilles 'SO- stop be evil'
3

O que aconteceu foi que houve uma falha de energia no data center recentemente. Desde então, não toquei no meu servidor. Depois que nosso data center perde energia, o VSphere faz com que o sistema de arquivos do Ubuntu seja lido somente até que seja reiniciado. Eu teria tentado reiniciar, mas não queria que todo o monitoramento ficasse louco. Silenciei o Nagios (serviço de monitoramento) e tudo está funcionando bem agora que reiniciei o sistema. Obrigado por toda a entrada. Isso é muito apreciado.

David
fonte
1

Pode ser óbvio, mas você é um usuário "root" ao tentar fazer isso? / mnt pertence ao root e somente pode ser gravado pelo root. Você também pode verificar se há erros na inicialização. Sua saída acima diz que / (e, portanto, / mnt) deve ser remontado como somente leitura se o processo de inicialização detectar erros. Você pode alterar isso (ou seja, remontar em r / w) com o comando mount, mas eu não faria isso a menos que você tenha certeza de que o que causou o erro não é sério.

hotei
fonte
Eu poderia não estar enraizado por acidente quando fiz isso, mas acho que a saída é a mesma. A saída raiz com certeza está abaixo da primeira saída.
David