質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

3回答

1262閲覧

LINUXサーバ内でDBに割り当てているディスクを交換する場合

takashiro7300

総合スコア12

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2022/04/18 08:05

LINUXサーバで「df -h」をすると、

Filesystem Size Used Avail Use% Mounted on /dev/sda3 27G 14G 13G 52% / tmpfs 16G 8.0K 16G 1% /dev/shm /dev/sda1 488M 70M 393M 16% /boot /dev/sdb1 296G 248G 33G 89% /var/lib/pgsql/9.5

上記のようになっており、PostgreSQLが入っているsdb1の容量がギリギリなので、
サイズの大きいディスクに交換しようと思っています。

「/dev/sda3」の配下にアプリケーションのモジュール等が格納されています。

サーバの都合上、AWSのように単純にsdb1の容量を増やすという事が出来なく、
①新しく400GBのディスクを増設し、マウントする。
②新しいディスクに中身をコピーする。
③既存の300GBの「/dev/sdb1」をアンマウントし、取り外す。
という流れになる想定です。

この場合、①と③は行った事があるのですが、
②の操作は経験がありません。

何か参考になるページなど、ありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takashiro7300

2022/04/20 05:47

ちなみに OSは、Red Hat Enterprise Linux Server release 6.8 (Santiago) PostgreSQLは、psql (PostgreSQL) 9.5.5 でした。 ①新しく400GBのディスクを増設し、マウントする。 ②新しいディスクに中身をコピーする。 ③既存の300GBの「/dev/sdb1」をアンマウントし、取り外す。 をもう少し具体的に書き出してみました。 大まかに、 【1】新ディスクをマウントする 【2】データをコピーする 【3】既存ディスクをアンマウントする 【4】新規ディスクをアンマウントする 【5】新規ディスクを「/var/lib/pgsql/9.5」としてマウントし直す このような流れになると思っております。 下記に、どこか認識誤り、もっとスマートな方法等ありますでしょうか。 【1】新ディスクをマウントする ①、for i in $(find /sys/class/scsi_host -name 'scan') $(find /sys/devices -name 'scan') ;do echo "- - -" > $i ; done ②、追加したディスクを確認する fdisk -l ③、fdisk /dev/sdc ④、パーティションの更新情報を認識させる。 partprobe ⑤、パーティションをフォーマットする。 mkfs -t ext4 /dev/sdc1 ⑥、マウントするディレクトリを作成する。 mkdir /var/lib/pgsql/9.5_new ⑦、追加したディスクの UUID を確認する。 blkid ⑧、再起動後も自動的にマウントするように設定する。 vi /etc/fstab ⑨、作成したディレクトリにマウントする。 mount /dev/sdc1 /var/lib/pgsql/9.5_new 【2】データをコピーする cp -a /var/lib/pgsql/9.5/backups /var/lib/pgsql/9.5_new cp -a /var/lib/pgsql/9.5/data /var/lib/pgsql/9.5_new cp -a /var/lib/pgsql/9.5/db_backup /var/lib/pgsql/9.5_new cp -a /var/lib/pgsql/9.5/lost+found /var/lib/pgsql/9.5_new cp -a /var/lib/pgsql/9.5/pgstartup.log /var/lib/pgsql/9.5_new この時点で、 /var/lib/pgsql/9.5 と /var/lib/pgsql/9.5_new は中身が同じになる。 【3】既存ディスクをアンマウントする ①、認識を外す対象デバイスを確認します。 lsblk ②、自動マウント設定している場合は「/etc/fstab」の該当箇所を除去します。 vi /etc/fstab ③、マウントを解除します。 umount /var/lib/pgsql/9.5 ④、デバイスIDを確認する ll /sys/class/scsi_device/*/device/block/ ⑤、デバイスの認識を外します。 # echo 1 > /sys/class/scsi_device/X:X:X:X/device/delete (「X:X:X:X」の部分は、4の手順で確認した物) ⑥、デバイスが外れたことを確認します。 lsblk この時点で /var/lib/pgsql/9.5 ls -l すると、ファイルもフォルダも何もない状態。 【4】新規ディスクをアンマウントする (手順は【3】と同じ) この時点で /var/lib/pgsql/9.5_new ls -l すると、ファイルもフォルダも何もない状態。 【5】新規ディスクを「/var/lib/pgsql/9.5」としてマウントし直す (手順は【1】と同じ)
guest

回答3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2022/04/19 04:11

dd だとブロックデバイスまるごとコピーなので、パーティションサイズ、ファイルシステムサイズがそのままです。
nukasa

2022/04/19 04:14

それは、どのOSの話でしょうか。私は、SolarisとLinuxでパーティション間のデータコピーに使っていましたが。
TaichiYanagiya

2022/04/19 04:55

あ、パーティション単位で、ってことですね。失礼しました。 でも、ファイルシステムサイズがそのままになりませんか?
nukasa

2022/04/19 05:05

なりません。
guest

0

こちらの手順でいかかでしょうか?
https://tech-mmmm.blogspot.com/2020/03/lvmlinuxlvm_25.html
物理拡張
論理拡張

投稿2022/04/20 23:55

okakemetal

総合スコア261

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

①新しく400GBのディスクを増設し、マウントする。
②新しいディスクに中身をコピーする。
③既存の300GBの「/dev/sdb1」をアンマウントし、取り外す。

②は、新しいストレージを仮のディレクトリにマウントし、postgresql を停止した状態で、cp, rsync, tar などで、通常のファイル、ディレクトリをコピーすればいいです。
例えば、新しいストレージのマウントポイントが /mnt とすると、rsync -alv --sparse /var/lib/pgsql/9.5/ /mnt/ など。

注意点として、シンボリックリンク、スパースファイルがあれば、そのまま保持するようにします。
また、RHEL 系で SELinux が有効であれば、そのコンテキスト情報も保持してコピーするか、新しいストレージを /var/lib/pgsql/9.5/ にマウントした後に restorecon でコンテキスト情報を付け直します。

投稿2022/04/19 13:06

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問