nextcloudのデータを移動してrootパーティションの空き容量を減らす 

CentOS
Colossus CloudによるPixabayからの画像
この記事は約7分で読めます。
スポンサーリンク

これまでの経緯

先日、/(rootパーティション)の容量が100%になってしまった。
主な原因はnextcloudのデータ容量増加によって、rootの領域が圧迫されてしまったためである。

暫定対策としてデータをバックアップしたのち、nextcloud内の写真データやドキュメントなどを削除し対応した。これにより100%⇒91%、空き容量約4.9GBまで減らすことができた。

rootの使用量が100%

暫定対策後:nextcloudのデータを削除して91%

ただし、再度nextcloudを運用し始めると同様の容量不足の問題が再発するのは目に見えている。あと4.9GBくらいはすぐに消費してしまいそうだ。

 

前々から空き容量不足の問題が懸念されていたのだが、「まあいいか」「めんどくさい」「そもそも無理なのでは」と思いつつ、後回し、見て見ぬふりをしていた。ここは思い切って抜本的な対策を打たなければならない。

抜本的な対策の検討

nextcloud関連のデータを/homeに移動できないか

/home以下は残り容量約280GBで4%しか使われていない。nextcloud関連のデータを/homeに移動できればいいのでは?と考えるのが普通思いつきそうな対策である。

しかし、nextcloudのインストールでは今まで苦労してきた経緯があり、「抜本的な対策を打たなければならない」と言ってはみたものの腰が引ける。

nextcloudのインストール時に学んだPOINTを振り返って検討

  • SELinuxのセキュリティーが足を引っ張る形となってloginできない。
  • カレントディレクトリ” . ”(ドットファイルとも呼んでいる)のアクセス権
  • ディレクトリ、ファイルの所有者とアクセス権

これにシンボリックリンク ln -s を利用すれば設定ファイル内のパスやデータベースのパス?などパスに関する不具合、不整合が最小限におさえられるのではないかと思った。

 

対策実施

人によってインストール環境、データの保管場所が異なるので参考にならないないかもしれないけれど、おっさんの環境では主にプログラムのあるnextcloudのフォルダと主に写真・動画・文書を保管するnextcloudフォルダ(データ保管用nexucloudフォルダと呼ぶことにする)の2つのnextcloud用フォルダを持っている。

wwwフォルダ以下とかhtmlフォルダ以下に写真や文書データを置くと、設定ミスなどでクローラーなどに吸い取られてしまいそうな気がする?ので、写真・文書DATA等は /var/lib/nextcloud以下に保管している。

さらにSELinuxを有効にして運用しているのでさらにセキュリティーは強固になっているはずだ。(SELinuxを有効にすると色々な制限がかかるため意図したように動作しない事が多い。多くの解説ではSELinuxをOFFにしているように思われる。)おっさんの場合は、あえてハードルの高いSELinuxをONの状態で設定した。

作業概要としては以下のようになる

/(rootパーティション)の空き容量確保のイメージ

  1. /var/lib/nextcloudのデータを/home内にバックアップ
  2. /home内にデータ保管用nexucloudフォルダを作成・展開
  3. 既存dataフォルダの名前を変更
    (念のためのバックアップ+所有権等の比較のため)
  4. /var/lib内にシンボリックリンクを作成
  5. 動作テスト
  6. 所有権、アクセス権をオリジナルと比較し修正
1.~4.の作業詳細
#cd/var/lib
#tar  cvf  /home/nextcloud_2021_0119.tar  nextcloud
#cd  /home
#tar  xvf  nextcloud_2021_0119.tar
#cd /var/lib
#mv  -i  nextcloud  nextcloud_2012_0119_org
#ln  -s  /home/nextcloud  nextcloud
5.ここまでで動作テストしてみると書き込み権限パーミションに関するエラーがでた。

Your data directory is not writable

Webサーバーのルートディレクトリに書き込み権限パーミッションが必要です。https://docs.nextcloud.com/server/20/go.php?to=admin-dir_permissions を見てください。

nextcloudへのログインエラー

6.所有権、アクセス権をオリジナルと比較し修正

通常のファイルのアクセス権はオーナー:ユーザー:その他の3パターンの所有者に対してr(読み)、w(書き)、x(実行)が設定できる。SELinuxではセキュリティー上のポリシーがあらかじめ決められていて、ポリシーで許可されてないファイルやフォルダ―にアクセスできないようにしている。Webサーバーでは外部の不特定多数の人間がサーバーにアクセスしてくるのでSELinixを有効にした方がよりセキュリティーが高くなる。

食べログ評価3.5「俺のフレンチ」をご自宅で【俺のEC】

 

SELinixを有効にした場合にls -lを実行すると

drwxr-xr-x. 3 apache apache 18 8月 23 2019 nextcloud

のようにr-xの後に .(ドット)が付加されるのでこのディレクトリはSELinuxの管理下にあることがわかる。どのように管理されているかを確認するには ls -laZ のように Z オプションを付ける。
詳しいことまでは正確に説明できないところが、スキル不足(´;ω;`)ウゥゥ。

 

/var/lib/nextcloud_2012_0119_org(オリジナル)の確認
# ls -alZ
drwxr-xr-x. apache apache unconfined_u:object_r:var_lib_t:s0 .
drwxr-xr-x. root root system_u:object_r:var_lib_t:s0 ..
drwxrwx—. apache apache system_u:object_r:httpd_var_lib_t:s0 data
ls -alZ /home/nextcloudの確認
drwxr-xr-x. apache apache unconfined_u:object_r:home_root_t:s0 .
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 ..
drwxrwx—. apache apache unconfined_u:object_r:home_root_t:s0 data
1例をあげるとオリジナルと/home以下のコピーを比較すると上記赤字部分3カ所がオリジナルと異なっている。
chcon コマンドでディレクトリの属性を下記のように変更してみる。

# chcon -t var_lib_t /home/nextcloud

# chcon -R -t httpd_var_lib_t /home/nextcloud/data

# chcon -R -u system_u /home/nextcloud/data

上記以外でもchownerコマンドchmodeコマンドで各種属性をオリジナルと比較して、探り探り異なる部分を合わせこんでゆく。

問題なければ
/var/lib/nextcloud_2012_0119_org(オリジナル)のフォルダを削除する
#rm  -Rf   /var/lib/nextcloud_2012_0119_org
または念のため
/var/lib/nextcloud_2012_0119_org(オリジナル)のフォルダを / (root)以外に移動する#mv /var/lib/nextcloud_2012_0119_org /home/.

最終的には/(root)は100%⇒78% まで改善、トータル約52GBの/(root)パーティションの空き容量を20KB⇒約11GBに確保できた。nextcloudで使用可能なデータの空きは余裕の約280GBだ。

バックアップ用ハードディスクを容量の大きいものに入れ替える案

容量が大きくなた分、メンテナンスの頻度が減る。360GBのSSDに対し3~4TBのバックアップHDDは大きすぎる気もするが大は少を兼ねる。パーティションを切って別の用途に使う事も出るそうである。

サーバーは24時間稼働、ウエスタンデジタルのRedがおすすめ

WD Redは自宅のファイルサーバー用に数台使用している。常時稼働するNASを想定しているだけあってか、今の所1台も壊れていない。

コメント

タイトルとURLをコピーしました