このlosetup
コマンドを使用すると、通常のファイルを仮想ブロックデバイスに変換できます。その後、他のデバイスと同様にパーティションを分割してフォーマットできます。
Linuxでこの「デバイス」が4K論理セクタサイズを持っているように見せる方法はありますか?
答え1
fdisk
複数のスイッチがあります。
-b セクタサイズ
ディスクのセクタサイズを指定します。有効な値は 512、1024、2048、または 4096 です。 (最近のカーネルはセクタサイズを知っています。古いカーネルでのみこの値を使用するか、カーネルのアイデアをオーバーライドします。)util-linux-2.17以降、fdiskは論理セクタサイズと物理セクタサイズを区別します。このオプションは、2 つのセクタサイズをセクタサイズに変更します。
-Cリング
ディスクのシリンダ数を指定します。なぜ誰かがこれをしたいのか分からない。
-Hヘッダ
ディスクのヘッド数を指定します。 (もちろん、物理的な数字ではなくパーティション表に使用される数字です。)妥当な値は255、16です。
これは私が編集したものではありません(「なぜ誰かがそのようなことをしたいのかわからない」)。やや良い人には、当時は使用していなかった機能が含まれています。
答え2
はい、可能です。実行すると
losetup --help
このオプションが表示されます。
-b, --sector-size
direct-IO
ループブロックデバイスでもオプションを使用してテストすることをお勧めします。
ループデバイスの作成方法は次のとおりです。
losetup --sector-size 4096 --direct-io=on $loop_device $diskfile
しかし、おそらくあなたの場合はそれだけで--sector-size 4096
十分でしょう。
その後、次を使用してループデバイスを表示できますlosetup -l
。
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop4000 0 0 0 0 /mnt/fbx/FBX-24T/testspeed2 1 4096
/dev/loop3000 0 0 0 0 /mnt/fbx/FBX-24T/testspeed 1 4096
4Kブロックセクタに注意してください。
また、現在のセクタサイズを512から4096まで指定できますが、たとえば8Kセクタ(8192)は使用できず、losetup
4096より大きいセクタサイズを使用しようとするとコマンドは失敗します。
これがまさにdirect-IO
オプションの使用を推奨する理由です。 --direct-io=on
ループデバイスを作成するために使用されるデフォルトファイルの上に4Kセクタ形式のファイルシステムがある場合(losetup -P
またはlosetup --partscan
オプションを参照)、このdirect-IO
オプションを使用すると、IOをブロックデバイスに直接送信して、カーネルストアスタックジョブキューをバイパスします。
これは、ブロックデバイスと記録中のファイルシステムの整合性(整列)を維持するのに役立ちます。
また、CIFS共有でホストされているLUKSファイルからループデバイスを作成する場合(LUKS = Linux統合キー設定、Cryptsetup
ブロックデバイスと対応するホスティング間とも呼ばれます)などの場合、8〜10倍のパフォーマンスが向上します。間)ファイルシステム)
答え3
レベルは低くありません。フォーマット時に特定のブロックサイズを使用する必要があるといくつかのmkfsスケジューリングユーティリティに指示することは確かに可能です。mkfs.*
詳細については、特定のツールのマニュアルページを参照してください。
答え4
最新のlossupには、次の機能が必要です。https://github.com/karelzak/util-linux/commit/a1a41597bfd55e709024bd91aaf024159362679c