データを失うことなく基本パーティションを拡張

データを失うことなく基本パーティションを拡張

私は1つのVPSアクセス権しか持っていませんSSH。以下でホストされます。OVH

これはVPSDebian 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

  1. 私は何をすべきですか?
    • 新しい/mntフォルダを作成してsdb1そこにインストールします。
    • /var/*データのコピーsdb1
    • 一貫性を確認してください。diff
    • diff_var.log情報が一致しないことを確認してください。

まず、新しいsdb1パーティションをインストールする必要があります。システムにすでに存在する可能性がありますが、/mntそうでない場合は、-p最初のコマンドのフラグがそれを処理します。

$ sudo mkdir -p /mnt/sdb1
$ sudo mount /dev/sdb1 /mnt/sdb1

  1. 次にデータをrsync作成し/var/*、データの一貫性を確認します。

このフラグは、一緒にグループ化されたさまざまなフラグ(ハードリンクフラグを除く)-aへのショートカットであり、再帰的にそこにあるすべてを意味します。このフラグはコピーされるファイルのリストを表示します。このフォルダは次の場所に作成されます。rsync-Hrsync-vvar/dev/sdb1

$ sudo rsync -av /var/* /mnt/sdb1

  1. 完了したら、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


  1. sdb1パーティションをマウント解除します。
$ sudo umount /mnt/sdb1

新しいアイテムを追加/etc/fstab

  1. 現在のバックアップ/etc/fstab
$ sudo cp /etc/fstab /etc/fstab.back
  1. これはテストなので、関連する手順を完了することをお勧めします。
    • UUIDを取得してフォーマットを/dev/sdb1再フォーマットする/etc/fstab
    • /etc/fstab新しいエントリで新しいパーティションが正しくインストールされていることを確認します。
###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ポイントリストを実行して確認します。dfsdb1/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

すべてが正常な場合は、サーバーを再起動してください。

関連情報