bash - 디스크가 분할되지 않았는지 테스트

bash - 디스크가 분할되지 않았는지 테스트

저는 현재 mhddfs를 사용하여 여유 디스크 공간을 모으는 DIY 네트워크 스토리지 작업을 하고 있습니다.

이제 제가 원하는 것은 예를 들어 핫스왑 베이가 있는 경우 파티션되지 않은 새 디스크를 삽입할 때 bash 스크립트를 사용하여 디스크를 자동으로 파티션하고 새 mhddfs 파티션을 마운트하는 것입니다.

서버를 끄고 새 디스크를 삽입한 후 서버를 다시 켜면 동일한 상황이 발생합니다.

그래서 질문은: bash 스크립트를 사용하여 파티션되지 않은 디스크를 어떻게 감지할 수 있습니까?

질문에는 잘못된 탐지가 있어서는 안 된다는 것도 포함됩니다. 예를 들어 암호화된 디스크를 삽입한 경우 자동으로 다시 파티션을 나누고 포맷하면 안 됩니다. 이 점이 질문의 주요 관심사입니다.

답변1

검사 및 분할을 수행하는 한 가지 옵션은 parted명령입니다. 시스템의 모든 디스크 블록 장치에 대한 파티션 정보를 "사람이 읽을 수 있는" 형식으로 얻으려면:

/sbin/parted -l

또는 "기계 판독 가능" 형식으로 다음을 사용합니다.

/sbin/parted -lm

디스크에 유효한 파티션 테이블이 있는지 확인하려면 의 출력을 구문 분석해야 합니다.

그런 다음 다음과 같은 것을 사용하십시오.

/sbin/parted <device> --script mkpart primary 1 -- -1

전체 디스크를 사용하여 단일 파티션을 만듭니다. mkpart 하위 명령의 구문은 메모리에서 가져온 것이며 이것이 올바른지 확인할 수 있는 사용 가능한 디스크가 있는 시스템이 없습니다.

답변2

제가 백업에 사용하는 방법은 다음과 같습니다.

if [ $(/sbin/sfdisk -d ${DEV} 2>&1) == "" ]; then echo "Device not partitioned"; fi

여기서 ${DEV}는 조사 중인 장치입니다(udev 스크립트에서 실행하는 것이 가장 좋습니다.)

답변3

나는 당신이 리눅스 커널에서 이 작업을 하고 있다고 가정합니다.

패키지 에서 fdisk또는 사용 :sfdiskutil-linux

fdisk -l /path/to/disk

또는:

sfdisk -l /path/to/disk

현재 파티션 테이블을 나열합니다.

Linux는 사용 가능한 파티션을 감지하므로 /dev/disk디렉토리를 살펴보는 것만으로도 필요에 충분할 수 있습니다.

답변4

에 게시된 답변이 정말 마음에 들었습니다.스택 오버플로이는 다음을 제안합니다.

parted --script

좋다:

parted --script /dev/sdb print

관련 정보