
저는 현재 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
또는 사용 :sfdisk
util-linux
fdisk -l /path/to/disk
또는:
sfdisk -l /path/to/disk
현재 파티션 테이블을 나열합니다.
Linux는 사용 가능한 파티션을 감지하므로 /dev/disk
디렉토리를 살펴보는 것만으로도 필요에 충분할 수 있습니다.