A montagem do processo é somente leitura

6

Eu tenho um sistema de arquivos rw /myraid0 .

# cat /proc/mounts | grep myraid0
/dev/mapper/isw_cfdbejjgdi_myraid0p1 /myraid0 ext4 rw,relatime,stripe=8,data=ordered 0 0

Não tenho problema em escrever para /myraid0 como qualquer usuário.

redis@host:~$ echo hi > /myraid0/tmp/redis/test
redis@host:~$ cat /myraid0/tmp/redis/test
hi

No entanto, meu processo não pode gravar um arquivo em /myraid0 , devido a EROFS (sistema de arquivos somente leitura).

open("temp-4036.rdb", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EROFS (Read-only file system)

Isso mostra o processo de visualização da montagem como ro.

# cat /proc/15920/mounts | grep myraid0
/dev/mapper/isw_cfdbejjgdi_myraid0p1 /myraid0 ext4 ro,relatime,stripe=8,data=ordered 0 0

Por que o processo tem apenas a visualização somente leitura da montagem?

Obrigado!

Detalhes adicionais

  • Ubuntu 16.04
  • Linux jeff-apartment-2015 4.4.0-36-generic #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  • O aplicativo é redis-server . Não está conseguindo salvar os instantâneos em um dispositivo não raiz
  • O erro do Redis é

Failed opening .rdb for saving: Read-only file system

  • Versão instalada 3.0.6 via apt-get
  • Lançado por systemd
  • Listagem de /proc/15920/ns (solicitada por @VenkatC): lrwxrwxrwx 1 redis redis 0 Sep 16 05:39 cgroup -> cgroup:[4026531835] lrwxrwxrwx 1 redis redis 0 Sep 15 18:03 ipc -> ipc:[4026531839] lrwxrwxrwx 1 redis redis 0 Sep 15 18:03 mnt -> mnt:[4026532343] lrwxrwxrwx 1 redis redis 0 Sep 15 18:03 net -> net:[4026531957] lrwxrwxrwx 1 redis redis 0 Sep 15 18:03 pid -> pid:[4026531836] lrwxrwxrwx 1 redis redis 0 Sep 15 18:03 user -> user:[4026531837] lrwxrwxrwx 1 redis redis 0 Sep 15 18:03 uts -> uts:[4026531838]
  • apparmor_status | grep redis não retorna nada (solicitado por @Gilles)
  • Nada mais nos logs é mais informativo do que a saída strace.

Espaços de nomes de processo

Trabalhando o shell bash para o usuário redis

ls -l /proc/7359/ns/mnt
lrwxrwxrwx 1 redis redis 0 Sep 15 18:03 /proc/7359/ns/mnt -> mnt:[4026531840]

Não está funcionando processo de atualização

ls -l /proc/15920/ns/mnt
lrwxrwxrwx 1 redis redis 0 Sep 15 18:03 /proc/15920/ns/mnt -> mnt:[4026532343]

Trabalhando o shell bash para meu usuário

ls -atlrh /proc/7138/ns/mnt
lrwxrwxrwx 1 jeff jeff 0 Sep 15 18:03 /proc/7138/ns/mnt -> mnt:[4026531840]
    
por Jeff 16.09.2016 / 03:33

1 resposta

10

Como você pode ver, o processo do redis está sendo executado em seu próprio 'namespace de montagem', com a opção readonly.

Redis proc started by Systemd [/proc/15920/ns/mnt] -> mnt:[4026532343]

your shell [/proc/7138/ns/mnt] -> mnt:[4026531840]

Veja a unidade systemd para a inicialização redis-server e atualize as opções relacionadas aos mountflags para atender às suas necessidades

Olhando para o arquivo de unidade systemd redis-server, vejo as configurações abaixo

# grep -i readwrite /etc/systemd/system/redis.service 
ReadWriteDirectories=-/var/lib/redis
ReadWriteDirectories=-/var/log/redis
ReadWriteDirectories=-/var/run/redis
ReadWriteDirectories=-/etc/redis

para que você possa adicionar / myraid0 como ReadWriteDirectories adicional e reiniciar o serviço redis

    
por 16.09.2016 / 16:04