

/var/lib/pgsql 配下のファイルをすべて、拡張ディスク（/mnt/bv1/data/pgsql）に移動し、/var/lib/pgsql
をシンボリックリンクに変更しました。拡張ディスクに移動したファイルは、オーナーをpostgres,パーミッションを755に変更しています。  
この状態で、サービスを起動すると、postmaster: could not access directory "/var/lib/pgsql/data":
Permission denied となり、起動できません。  
パーミッションの問題のようなので、拡張ディスクに移動したファイルのパーミッションを777に変更しても同じエラーになってしまいます。

[code]

    lrwxrwxrwx.  1 postgres           postgres             19 Jun  8 11:02 pgsql -> /mnt/bv1/data/pgsql
    
[/code]

実施した手順

  1. mv /var/lib/pgsql/* /mnt/bv1/data
  2. chmod -R 755 /mnt/bv1/data
  3. ln -s /mnt/bv1/data/pgsql /var/lib
  4. sudo service postgrtesql start

バージョン  
・10.23


CC BY-SA 4.0
2023-06-08T02:36:32.397
95137
2023-06-09T12:09:16.383
2023-06-09T08:06:07.183
58647
58647
question
postgresql
postmaster: could not access directory "/var/lib/pgsql/data": Permission denied


`/var/lib/pgsql/` の中身を`/mnt/bv1/data/` に移動しているので、シンボリックリンクの貼り方が間違っている気がします。

今の状態からシンボリックリンクを貼り直すなら…

[code]

    # rm /var/lib/pgsql
    # ln -s /mnt/bv1/data /var/lib/pgsql
    
[/code]

(参考) 本来実行すべきだったコマンド例:

[code]

    # mv /var/lib/pgsql /mnt/bv1/data
    # ln -s /mnt/bv1/data/pgsql /var/lib/pgsql
    
[/code]


CC BY-SA 4.0
2023-06-09T09:27:23.003
95162
2023-06-09T09:27:23.003
3060
95137
answer


SELinux が有効なのですね。

移動先は /mnt/bv1/data/ ですか？ /mnt/bv1/data/pgsql/ ですか？  
前者と仮定すると以下の手順になると思います。

[code]

    [root@host]# cp -a /var/lib/pgsql/* /mnt/bv1/data/
    [root@host]# ls /mnt/bv1/data/
    backups  data
    
    [root@host]# semanage fcontext -a -e /var/lib/pgsql  /mnt/bv1/data
    [root@host]# restorecon -R /mnt/bv1/data/
    
        /mnt/bv1/data を /var/lib/pgsql と同じコンテキストとする。
    
    [root@host]# mv /var/lib/pgsql /var/lib/pgsql.bak
    [root@host]# ln -s /mnt/bv1/data /var/lib/pgsql
    [root@host]# ls -ld /var/lib/pgsql
    lrwxrwxrwx. 1 root root 13  6月  9 21:07 /var/lib/pgsql -> /mnt/bv1/data
    [root@host]# restorecon /var/lib/pgsql
    
        シンボリックリンク自体のコンテキストも修正が必要。
    
[/code]


CC BY-SA 4.0
2023-06-09T12:09:16.383
95166
2023-06-09T12:09:16.383
4603
95137
answer