추가 세부 사항

추가 세부 사항

나는 rw 파일 시스템을 가지고 있습니다 /myraid0.

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

나는 어떤 사용자 로서든 글을 쓰는 데 아무런 문제가 없습니다 /myraid0.

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

/myraid0그러나 EROFS(읽기 전용 파일 시스템)으로 인해 내 프로세스에서 파일을 쓸 수 없습니다.

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

이는 프로세스가 마운트를 ro로 처리함을 나타냅니다.

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

프로세스에 마운트에 대한 읽기 전용 보기만 있는 이유는 무엇입니까?

감사해요!

추가 세부 사항

  • 우분투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
  • 이 애플리케이션은 redis-server루팅되지 않은 장치에 스냅샷을 저장할 수 없습니다.
  • Redis 오류는

저장하기 위해 .rdb를 열 수 없습니다: 읽기 전용 파일 시스템

  • 버전 3.0.6을 설치하여apt-get
  • 스폰서systemd
  • 목록 /proc/15920/ns(@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아무것도 반환하지 않음(@Gilles가 요청함)
  • 로그의 어떤 것도 strace 출력보다 더 많은 정보를 제공하지 않습니다.

프로세스 네임스페이스

Redis 사용자를 위한 작동 중인 bash 쉘

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

Redis 프로세스가 작동하지 않습니다

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

내 사용자를 위한 작업 bash 쉘

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

답변1

보시다시피, redis 프로세스는 읽기 전용 옵션을 사용하여 자체 "마운트 네임스페이스"에서 실행되고 있습니다.

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

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

redis-server필요에 맞는 mountflags 관련 시작 및 업데이트 옵션을 보려면 systemd 장치를 확인하세요.

redis-server systemd 단위 파일을 보면 다음 설정이 표시됩니다.

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

따라서 /myraid0을 추가 ReadWriteDirectories하고 redis 서비스를 다시 시작할 수 있습니다.

관련 정보