追加の詳細

追加の詳細

私は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

プロセスにマウントの読み取り専用ビューしかないのはなぜですか?

ありがとうございます!

追加の詳細

  • Ubuntu16.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サービスを再起動できます。

関連情報