sg_format 300개 이상의 병렬 드라이버와 함께 사용

sg_format 300개 이상의 병렬 드라이버와 함께 사용

나는 얼마 전에 소프트웨어 병렬성에 대해 배웠습니다.https://forums.servethehome.com/index.php?threads/mdadm-create-raid-0-quick-format.41161/#post-389210

이제 내 목표는 예전과 거의 같지만, 다른 방식으로 해보고 싶다.

내가 가지고 있는 설정은 다음과 같습니다.

단일 포트 SAS2 HBA를 갖춘 Dell SFF 데스크탑

총 14개의 NetApp SAS3 디스크 쉘프

Disk Shelf당 24개의 960GB 12G SAS SSD 설치

드라이브는 520 섹터 크기를 실행합니다.

목표는 모든 드라이브에서 sg_format --format -e /dev/sgXX를 가급적 병렬로 실행하는 것입니다.

하나씩 수행할 수 있지만 병렬성을 사용하여 그 기능을 이해하고 모든 유사한 향후 프로젝트에서 이 작업을 더 빨리 수행하고 싶습니다.

저는 Ubuntu 23.10을 사용하고 있으며 Universe 저장소를 추가하고 apt update와 apt install을 병렬로 사용했습니다. 이제 Parallel이 sg3-utils 및 smartmontools와 함께 설치됩니다.

내 HBA는 128개의 장치를 처리할 수 있습니다. 여기서 장치 1(또는 0)은 HBA 자체이므로 체인에서 총 5개의 Disk Shelf가 실행됩니다. 즉, 120개의 드라이브가 연결되어 있다는 의미입니다. /dev/sg2에서 시작하여 /dev/sg126에서 끝납니다.

내가 사용하는 명령은 다음과 같습니다:parallel sg_format --format -e ::: /dev/sg[2-126]

실행할 때 터미널이 몇 초 동안 정지되는데, 이는 예상되는 현상입니다.

그러나 실제로는 /dev/sg2 및 /dev/sg6만 실행 중입니다. 아래 이미지를 참조하세요. sg2 및 sg6 실행 형식의 이미지만

모든 드라이브는 동일하지만 그 중 2개만 실제로 포맷을 시작하려고 합니다. 오류나 시작되지 않는 이유가 없습니다.

드라이브를 "수동"으로 부팅하려고 했기 때문에 sg_format 명령만 사용하면 모든 드라이브가 제대로 부팅되었습니다.

명령을 실행하면

병렬 sg_format --format -e ::: /dev/sg[2-10]

/dev/sg2에서 sg_format을 실행한 다음 /dev/sg0에서 이 두 가지만 실행합니다.

물론 여러 장치에 입력하는 데 문제가 있습니다.

아는 사람 있나요?

답변1

이는 /dev/sg[2-126]범위를 사용하고 있기 때문입니다. 안타깝게도 범위는 여러 자릿수를 처리할 수 없습니다. 그들은특징범위이며 126문자가 아닙니다. 따라서 가질 수는 있지만 "0에서 1까지의 문자, 그 다음에는 0의 문자"를 의미하기 때문에 [0-9]가질 수 없습니다 . [0-10]따라서 귀하의 것은 실제로 "2와 1 사이의 숫자"를 의미합니다. 이는 2가 1 뒤에오고 특정 숫자 sum [2-126]이기 때문에 의미가 없습니다 . 그렇기 때문에 합계 만 일치시킵니다 .26sg2sg6

따라서 첫 번째 명령 은 및 에서 실행 parallel sg_format --format -e ::: /dev/sg[2-126]됩니다 . 두 번째 명령은 에서 실행되며 와 및 사이에 다른 문자가 없으므로 단일 문자로 해석되고 그 자체로 처리됩니다.sg2sg6parallel sg_format --format -e ::: /dev/sg[2-10]/dev/sg2/dev/sg0[2-1]2210

당신이 원하는 것은 사용하는 것입니다버팀대 확장대신에:

parallel sg_format --format -e ::: /dev/sg{2..126}

또는 한 번에 최대한 많은 작업을 실행하려면 다음을 사용하세요.

parallel -j0 sg_format --format -e ::: /dev/sg{2..126}

관련 정보