問題タブ [block-device]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - ホストの混合セットアップでホストのディスクサイズを正しく見つける
私は大きな番号でサイズを見つけようとしています。さまざまな種類のFS配置を備えたさまざまなLinuxマシンの 1.プレーンなJBODセットアップ(sfdisk -sを解析できます)2。ハードウェアRAIDセットアップ(再びfdisk -sを解析できます)3。ソフトウェアRAIDセットアップ(fdiskは合計サイズにエラーを与えるようで、論理デバイスとRAIDデバイス)
sw-raidを実際の論理ドライブで分離する他の方法は「blkid」を使用することです。しかし、正しいディスクサイズを取得することは複雑になります。'linux_raid_member'を取得し、sfdiskリストからそれを省略し、それらを別々にtogethjerに追加します
基本的に私はホスト上に次のものを持っており、それが存在し、私がそれについて知らない場合は、より簡単な解決策が必要です。
linux - Linux でハードディスク エラーを作成する
修正不可能なエラーが発生した場合に、作成中のアプリケーションが正しく動作することをテストできるように、Linux ボックスでハード ドライブ エラーを作成したいと考えています。
ドライブに不良セクタを作成するハードディスク製造元のアプリケーションがありますが、これは Windows のみであり、Linux プラットフォームを使用しているため、ディスクの抜き差しが頻繁に必要になります。
この以前の投稿を見ました:読み取りエラーのある障害のあるブロック デバイスをシミュレートしますか? 利用可能なdmsetupがないため、これを使用できません。
ファイルにランダムなデータを書き込むことにより、dd を使用してファイルを破損できることはわかっていますが、読み取り可能ではなく破損したファイルである不良セクタを作成したいと考えています。
どんなヒントでも大歓迎です
ありがとう!
bash - たとえば「fdisk」で示されるように、ブロックデバイスのファイルシステムの16進IDを取得します
特定のパーティションのファイルシステムの16進IDを判別する簡単な方法はありますか?たとえば、ファイルシステムIDが83の「Linux」タイプの/ dev / sda1パーティションがあります(たとえば、fdiskで示されています)。fdisk / sfdiskの出力を解析せずに、bashスクリプトからこの番号を取得する必要があります。
linux - ブロックデバイスとしてSATAHDDを使用する
私はLinuxカーネルにまったく慣れていないので、おそらく物事を混乱させます。しかし、どんなアドバイスも私を助けます;)
PCIeSATAカードを介してSATAHDDを接続していて、ブロックデバイスで使用read
して好きにしようとしています。write
また、データ電源の停電をHDDに保存したいのですが、キャッシュされません。そして最後に、各Linuxスタック層でどれだけの時間を失うかを分析する必要があります。しかし、一度に一歩。
現時点ではopen
、*O_DIRECT*を使用してデバイスを試してみます。しかし、デバイスがどこにあるのかよくわかりません。として表示され/dev/sdd
、1つのパーティションを作成しまし/dev/sdd1
た。
open
とread
パーティションで/dev/sdd1
動作します。write
* O_DIRECT *で失敗します(ただし、適切なブロックサイズがあると確信しています)open
read
とwrite
呼ばれる/dev/sdd
は完全に失敗します。/dev/
ブロックレイヤー上のデバイスを表す別のファイルはありますか?- 私の間違いと間違った仮定は何ですか?
これは私の現在のテストコードです
編集:私はパワーアーキテクチャで3.2カーネルを使用しています-これが重要な場合。
ファビアン、お時間をありがとうございました
linux - O_DIRECTを使用したHDDからのread()は22で失敗します(EINVAL、無効な引数)
read()
SATAHDDからベーシックを作りたい/dev/sdd
。Awrite()
は機能しているようです。また、フラグなしで動作しread()
ます。ブロックサイズに合わせる必要があることを読みました。だから私はこれを使ってブロックサイズを取得しました:write()
O_DIRECT
ご覧のとおり、私にはルートがあります。HDDはPCIeSATAカードを介して接続されてlspci -vv
おり、基本的なahci(drivers/ata/ahci.c
)ドライバーを使用していることがわかります。私は64ビットのPowerArchitectureで3.2.0Linuxカーネルを使用しています。
これが私のコードです:
出力は次のとおりです。
編集:Brett Haleの回答で提案されているように、ソースを更新しました。残念ながら、まだエラーが発生します。ブロックサイズを見つける私の方法は大丈夫ですか?私は正しい位置合わせをしましたか?
読んでくれてありがとう、
ファビアン
linux - Linux のマウンティング ブロック デバイス ドライバ モジュールが機能しなくなった
Ubuntu でブロック デバイス ドライバ モジュールと挿入モジュールを作成します。そして、「mkfs」コマンドを使用して、そのモジュールをファイル システムとしてマウントします。ただし、mkfs
コマンドは次のメッセージで機能しませんでした:
スーパーブロックとファイルシステムのアカウンティング情報の書き込み
linux - Linux で DRBD を使用してブロック レベルのキャッシュを設定する
2 つのノードで DRBD アクティブ/アクティブ構成をセットアップしたいと考えています。私のアプリケーションは、DRBD デバイスで直接 I/O を実行します。DRBD 内でキャッシュを有効にするオプションは見たことがありません。
DRBD とディスク モジュールの間にキャッシュを設定できる Linux モジュールはありますか? DRBD モジュールより上のキャッシュは、ノードによって古いデータが読み取られる可能性があります。
linux-kernel - Linux のブロック IO デバイスでのメモリ マッピング
私は Linux でデバイス ドライバーの開発を行っていました。Linux でのデバイス ドライバーのメモリ マッピングに遭遇しました。
RAMディスクブロックデバイスドライバー(RAMから仮想ディスクを作成する)を開発しようとしていました。しかし、ここでメモリ マッピングを使用する方法がわかりませんでした (試してみるためだけに)。
ブロックデバイスはメモリマッピングを使用していたと思います。
誰かがこれに光を当てることができますか?
また、remap_pfn_range を使用してユーザー空間にメモリをマップすると、どのように機能しますか? ユーザーが単にリージョンに何かを書き込むと、デバイス内に自動的に反映されるのでしょうか、それとも I/O 用に登録されたリクエスト関数が呼び出されるのでしょうか?
linux-kernel - ブロック デバイスの登録解除時に blk_cleanup_queue() が返されない
2.6.43.2-6.fc15 でホットプラグ可能な PCI メモリ デバイス用のブロック デバイス ドライバを作成しています (そのため、LDD3 は多くの機能に関して古くなっています)。ブロック デバイス de を取得するのに問題があります。 -登録がスムーズに進みます。デバイスが削除されたら、gendisk と request_queue を破棄しますが、ハングしblk_cleanup_queue()
ます。おそらく、その前に実行するのを怠ったキュー関連のプロセスがいくつかありますが、参照用に使用しているカーネルツリーの他のブロックドライバーとの大きな一貫した違いは見られません ( memstick
、cciss
、など)。キューと gendisk を整理する前に、どのような手順を実行する必要がありますか?
.open
、.release
、および添付の を実装.ioctl
していますが、リクエストが発生したとき、またはブロックデバイスの登録を解除するときに、キューを整理する方法が正確にはわかりません。block_ops
mydev_request(struct request_queue *q)
blk_init_queue(mydev_request, &mydev->lock)