Bash를 사용하여 여유 공간이 있는 디스크를 동적으로 찾아 별도의 파티션을 만드는 방법

Bash를 사용하여 여유 공간이 있는 디스크를 동적으로 찾아 별도의 파티션을 만드는 방법

저는 디스크 파티셔닝을 처음 접한다는 점부터 말씀드리고 싶습니다. 따라서 어느 시점에서든 제가 원하는 결과가 워크스테이션에서 불가능할 경우 비슷한 결과를 얻을 수 있는 올바른 방법을 알려주세요. 감사해요!

질문

여러 RHEL 워크스테이션을 관리하기 위해 bash 스크립트를 작성하고 싶습니다. 워크스테이션마다 디스크 수와 디스크 파티션이 다를 수 있습니다.

내가 달성하고 싶은 것은 4GiB워크스테이션에서 발견된 적절한 디스크에 적절한 크기의 새(별도) 파티션을 생성하는 것입니다. 스크립트가 별도의 파티션을 생성할 적절한 위치를 찾을 수 없는 경우(디스크 부족으로 인해 할당되지 않음) 저장 공간) 그러면 스크립트가 인쇄 "Unable to create separate partition on disk: Insufficient space"되고 종료됩니다.

또한 이 작업을 수행하는 동안 논리 볼륨이 파괴되는 것을 걱정해야 합니까 /dev/mapper?

여기에 설명된 예제 워크스테이션 파티션은 전체 목록이 아니며 RHEL 워크스테이션 네트워크에 있는 많은 구성 중 두 가지일 뿐입니다.

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

이에 대한 도움을 주시면 대단히 감사하겠습니다. 감사합니다!

관련 정보