私は1つのVPS
アクセス権しか持っていませんSSH
。以下でホストされます。OVH。
これはVPS
Debian 9(拡張バージョン)です。 (LVM
パーティションがありません)
サイズ制限が問題になり、100Gディスクを追加注文しました。
ディスクのデフォルトサイズは25Gです。すでにいくつかのアイテムがインストールされており、すべてを再構成したくありません。
結果lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 25G 0 disk
└─sda1 8:1 0 25G 0 part /
sdb 8:16 0 100G 0 disk
/var
ボリュームの内容を拡張したいです/dev/sda1
。ボリュームが起動可能で、現在使用中です。
私のユースケースに推奨されるものは何ですか?
答え1
私はあなたが探しているものがそのフォルダ内のすべてのデータを維持しながら、マウントポイントを/var
ディスクの新しいパーティションに変更することだと思います。sdb
これは実行中のサーバーなので、特に使用されているコマンドとそのフラグについて最大限に説明します。
また、データの整合性のリスクがないように、サーバーを管理/スタンバイ/オフライン(現在の管理接続に加えて)モードにすることをお勧めします(少なくともデータベース接続やその他の不要なソケットを閉じる)。
新しいディスク/dev/sdb
パーティションの分割
sdb
まず、パーティションを作成して設定する必要があります。ここでは、これがあなたのサーバーで成長し続けると仮定して、ほぼすべての/var
容量をsdb
ここに割り当てて(明らかにあなたのサーバーのニーズに合わせて新しいパーティションのサイズを変更することができます)、そのままにします。必要に応じて将来の使用のためにスペースを割り当てます。
parted
パーティションテーブルの作成に使用されます。sdb
$ sudo parted /dev/sdb mklabel gpt
次に、ディスクにプライマリパーティションを作成し、シリンダでソートしてext4
フォーマットします。ディスクの先頭の空き容量に対応します1024MB
。これはMBRを書くのに十分です(ただし、必要に応じていくつかの潜在的な回復モードを許可します)。エンドアクセサリは、100%
利用可能なスペースの端まで拡張されます。
$ sudo parted -a cylinder /dev/sdb mkpart primary ext4 1024MB 100%
すべてが正しく作成されていることを確認します(この出力例はすぐに作成されましたが、出力には新しいパーティションが作成され、/ dev / sdbとしてリストされている場所に表示される両方のディスクが表示されます)。
$ sudo parted -l
Model: [MODEL]
Disk /dev/sda: 25GB
Sector size (logical/physical): [*/*]
Partition Table: [mklabel]
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 25GB 25GB primary ext4 lba
Model: [MODEL]
Disk /dev/sdb: 100GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size Type File system Flags
1 1049MB 100GB 100GB primary ext4
すべてが良く見えたら続けることができます。
/var
から にデータを同期しますsdb1
。
- 私は何をすべきですか?
- 新しい
/mnt
フォルダを作成してsdb1
そこにインストールします。 /var/*
データのコピーsdb1
- 一貫性を確認してください。
diff
diff_var.log
情報が一致しないことを確認してください。
- 新しい
まず、新しいsdb1
パーティションをインストールする必要があります。システムにすでに存在する可能性がありますが、/mnt
そうでない場合は、-p
最初のコマンドのフラグがそれを処理します。
$ sudo mkdir -p /mnt/sdb1
$ sudo mount /dev/sdb1 /mnt/sdb1
- 次にデータを
rsync
作成し/var/*
、データの一貫性を確認します。
このフラグは、一緒にグループ化されたさまざまなフラグ(ハードリンクフラグを除く)-a
へのショートカットであり、再帰的にそこにあるすべてを意味します。このフラグはコピーされるファイルのリストを表示します。このフォルダは次の場所に作成されます。rsync
-H
rsync
-v
var
/dev/sdb1
$ sudo rsync -av /var/* /mnt/sdb1
- 完了したら、
diff
再帰-r
フラグを使用して、2つの異なるパーティションにある2つのフォルダ間の一貫性を確認します。これは別の時間がかかる作業になります。また、出力をログファイルにリダイレクトすることをお勧めします。
$ sudo diff -r /var /mnt/sdb1 > ~/diff_var.log
diff_var.logをチェックすると、次のような行がある可能性があります。
# socket - no point in copying directly
File /var/*/[socket] is a socket while file /mnt/sdb1/var/*/[socket] is a socket
# Self-explanatory, log file update between `diff` and `rsync`*
diff -r /var/log/* /mnt/sdb1/var/log/* differs
199369d199368
< Dec 12 13:05:01 * * *
# Broken symlink
diff: /var/*/*/ABC No such file or directory
diff: /mnt/sdb1/var/*/*/ABC No such file or directory
sdb1
パーティションをマウント解除します。
$ sudo umount /mnt/sdb1
新しいアイテムを追加/etc/fstab
- 現在のバックアップ
/etc/fstab
$ sudo cp /etc/fstab /etc/fstab.back
- これはテストなので、関連する手順を完了することをお勧めします。
- UUIDを取得してフォーマットを
/dev/sdb1
再フォーマットする/etc/fstab
/etc/fstab
新しいエントリで新しいパーティションが正しくインストールされていることを確認します。
- UUIDを取得してフォーマットを
###Getting your UUID
$ sudo blkid -s UUID /dev/sdb1
/dev/sdb1: UUID="94c3f14d-508d-4621-9000-cbd4fc4c7445"
# var that holds a properly formatted line for /etc/fstab
$ my_uuid_sdb1=$(blkid -s UUID /dev/sdb1 | cut -d: -f2 | tr -d '"')
# echo it to make sure
$ echo $my_uuid_sdb1
UUID=94c3f14d-508d-4621-9000-cbd4fc4c7445
上記のコマンドの出力がシステムで良好に見える場合は、/etc/fstab
次に追加できます。
$ sudo echo "$my_uuid_sdb1 /mnt/sdb1 ext4 defaults 0 2" >> /etc/fstab
diff
これら2つのファイルを確認するためですfstab
。
# diff /etc/fstab /etc/fstab.back should only report one new line
$ sudo diff /etc/fstab /etc/fstab.back
33a34
< UUID=94c3f14d-508d-4621-9000-cbd4fc4c7445 /mnt/sdb1 ext4 defaults 0 2
テストしてみると、mount -a
新しいパーティションに次のように正常にインストールされたことを報告する必要があります。
$ sudo mount -av
/ : ignored
/mnt/sdb1 : successfully mounted
#checking with ls to see if we can see /var folder structure
$ sudo ls /mnt/sdb1
******* cache local log ***** run ***** tmp
backups lib lock mail opt spool www ***
再び削除
$ sudo umount /mnt/sdb1
/var
現在をバックアップ/var.back
し、マウントポイントを/dev/sdb1
次に変更します。/var
$ sudo mv /var /var.back
### remake /var dir in /
$ sudo mkdir /var
再編集して、/etc/fstab
行が正しく変更されていることを確認してください(/ etc / fstab全体を再確認するのが最善です)。
# Use a visual editor and change /mnt/sdb1 to /var in /etc/fstab
# or use awk with gsub and inplace, directly from terminal
$ sudo awk -i inplace '/mnt\sdb1/gsub(/mnt\/sdb1/,"var")' /etc/fstab
$ sudo grep var /etc/fstab
UUID=94c3f14d-508d-4621-9000-cbd4fc4c7445 /var ext4 defaults 0 2
まず、Mounted onを使用してマウントmount -av
ポイントリストを実行して確認します。df
sdb1
/var
$ sudo mount -av
$ sudo df -h /var
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 50.7G 6.9G 1.4G 14% /var
すべてが正常な場合は、サーバーを再起動してください。