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をできるだけ並行して実行することです。

1つずつ実行できますが、並列性を使用してその機能を理解し、すべての同様の将来のプロジェクトでこれをすばやく実行したいと思います。

私は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 でこの 2 つを実行します。

もちろん、複数のデバイスに入力する際に​​問題があります。

知っている人はいますか?

答え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]ます。 2番目のコマンドは で実行され、 と との間に他の文字がないため、単一文字として解釈され、それ自体で処理されます。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}

関連情報