Bashを使用して空き容量のあるディスクを動的に見つけて別々のパーティションを作成する方法

Bashを使用して空き容量のあるディスクを動的に見つけて別々のパーティションを作成する方法

私はディスクパーティショニングに初めて触れることから申し上げたいと思います。したがって、どの時点でも、目的の結果がワークステーションで不可能な場合に同様の結果が得られる正しい方法を教えてください。ありがとうございます!

質問

複数のRHELワークステーションを管理するためのbashスクリプトを作成したいと思います。ワークステーションごとにディスク数とディスクパーティションが異なる場合があります。

私が達成したいのは、4GiBワークステーションで見つかった適切なディスクに適切なサイズの新しい(別々の)パーティションを作成することです。スクリプトが別のパーティションを作成するための適切な場所を見つけることができない場合(ディスク不足のために割り当てられていない)、ストレージスペースはスクリプトを印刷して終了"Unable to create separate partition on disk: Insufficient space"します。

また、この作業中に論理ボリュームが破壊されることを心配する必要がありますか/dev/mapper

はい

ここに記載されているワークステーションパーティションの例は完全なリストではなく、RHELワークステーションネットワーク内の多くの構成の2つにすぎません。

Example 1:

# fdisk -l
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 

Device         Start       End   Sectors    Size Type
/dev/sda1       2048   1230847   1228800    600M EFI System
/dev/sda2    1230848   3327999   2097152      1G Linux filesystem
/dev/sda3    3328000 134215679 130887680   62.4G Linux LVM

物理ディスクが1つしかないこのワークステーションで、スクリプトが分割できる項目を自動的に見つけるようにしたいと思います4GiB。たとえば、スペースを/dev/sda3分割できる場合、4GiB最終パーティションは次のようになります。

# fdisk -l
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 

Device         Start         End   Sectors    Size Type
/dev/sda1       2048     1230847   1228800    600M EFI System
/dev/sda2    1230848     3327999   2097152      1G Linux filesystem
/dev/sda3    3328000   125827071 122499072   58.4G Linux LVM
/dev/sda4    125827072 134215679   8388608      4G Linux   # numbers here estimated based on calculation only

Example 2:

# fdisk -l
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 

Device         Start       End   Sectors    Size Type
/dev/sda1       2048   1230847   1228800    600M EFI System
/dev/sda2    1230848   3327999   2097152      1G Linux filesystem
/dev/sda3    3328000 134215679 130887680   62.4G Linux LVM


Disk /dev/sdb: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 

Device        Start      End  Sectors Size Type
/dev/sdb1      2048 20973567 20971520  10G Linux LVM
/dev/sdb2  20973568 67108830 46135263  22G Linux LVM

この場合、/dev/sdaいっぱいであると仮定すると、スクリプトは自動的にそれを検出して分割します/dev/sdb

# fdisk -l
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 

Device         Start       End   Sectors    Size Type
/dev/sda1       2048   1230847   1228800    600M EFI System
/dev/sda2    1230848   3327999   2097152      1G Linux filesystem
/dev/sda3    3328000 134215679 130887680   62.4G Linux LVM


Disk /dev/sdb: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 

Device        Start      End  Sectors Size Type
/dev/sdb1      2048 20973567 20971520  10G Linux LVM
/dev/sdb2  20973568 58722303 37748736  18G Linux LVM
/dev/sdb3  58722304 67106815  8384512   4G Linux LVM

これにご協力いただきありがとうございます。ありがとうございます!

関連情報