Linux におけるマッパーの正式名称は「デバイス マッパー」で、論理デバイスから物理デバイスへのマッピング機構であり、この機構の下でユーザーは自分のニーズに応じてストレージ リソースを簡単に管理できます。 3 つの重要な概念: マップされたデバイス、ターゲット デバイスなど。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
1. Linux のマッパーとは何ですか?
マッパーの正式名は「デバイス マッパー」 です。は、Linux 2.6 カーネルで提供される論理デバイスから物理デバイスへのマッピング メカニズムであり、このメカニズムにより、ユーザーは自分のニーズに応じてストレージ リソースを簡単に管理できます。
LVM2 (Linux Volume Manager 2 バージョン)、EVMS (Enterprise Volume Management System)、dmraid (Device Mapper Raid Tool) など、Linux で現在一般的な論理ボリューム マネージャーはすべてこれに基づいています。メカニズムによって実装されます。
デバイス マッパーの重要な機能は、ターゲット ドライバーによって記述されたマッピング関係と IO 処理ルールに基づいて、論理デバイス マップされたデバイスから対応するターゲット デバイスに IO リクエストを転送することです。
デバイス マッパーは、ブロック デバイス ドライバーとしてカーネルに登録され、マッピングされたデバイス、マッピング テーブル、ターゲット デバイスという 3 つの重要なオブジェクト概念が含まれています。
デバイス マッパーはユーザー空間では比較的シンプルで、主にデバイス マッパー ライブラリと dmsetup ツールが含まれます。
デバイス マッパー ライブラリは、デバイス マッパー論理デバイスを作成および削除するために ioctl とユーザー空間に必要な操作をカプセル化したものです。
dmsetup は、ユーザーが直接使用できるコマンドを提供するコマンドです。デバイスマッパーデバイスの作成と削除、ラインツール。
機能:
複数の物理デバイスを 1 つの論理デバイスに結合できます。通常のマージを実行したり、raid0 と同様のストライピングを実装したりできます。また、To シールドを使用することもできますハードディスク内の不良セクタを除去するには、LVM スナップショットを取得してデータベースをバックアップしたり、機能をテストするためにゼロ デバイス ファイルを使用して非常に大規模なデバイスをシミュレートしたりすることもできます。
デバイス マッパーは、lvm と multipating の基礎となるテクノロジーです。
#2. インストール パッケージ:
device-mapper
device-mapper-multipath
3. 動作原理:
マッピング テーブル (物理デバイスの各セクターと論理デバイスの対応関係) を使用して論理デバイスを作成します。 。テーブルの内容は次のとおりです。 論理デバイスの開始セクタ:
は通常 0 です。 論理デバイスのセクタ番号のタイプ (
linear 線形、連続結合、
ストライプ ストライプ ;
エラーシールド不良セクタ;
スナップショットスナップショット;
ゼロゼロデバイス)
4. ディスクセクターの計算:
1 セクター = 512 バイト b 1kb = 1024b セクター サイズ kb = セクター数512/1024 たとえば、10G ディスクの場合、セクター数は次のようになります。 : 10000000kb=セクター数
512/1024=20000000セクター
#blockdev --getsize /dev/sda6 查看设备扇区数量 #echo “0 ‘blockdev --getsize /dev/sda6’ linear /dev/sda6 0” | dmsetup create mydeviceテーブルを通じて論理デバイス0を作成すると、この論理デバイスはセクター0から始まり208782セクターを持つことを意味します。線形とは連続することを意味します。 dev/sda6 0 は、/dev/sda6 の 0 番目のセクターから論理デバイスとして開始することを意味します。デバイスが残りのスペースを論理デバイスとして使用する場合、セクターは 0 から始まりません。次のブート スクリプトを記述した後、再起動した後にのみ有効になります。
5. リニア タイプのデバイスの特性:
複数の物理パーティションの連続したセクター結合して論理デバイスを形成します。 0 20000 Linear /dev/sda1 0 20000 60000 Linear /dev/sdb1 0 注: 論理デバイスは sda1 からセクター 0 からセクター 20000 まで取得され、論理デバイスはセクター 20000 からセクター 20000 まで取得されます。 sdb1 のセクター 0、60,000 セクターが取得され、論理デバイスには 80,000 セクターがあります。コマンド
#echo “0 20000 linear /dev/sda1 0\n20000 60000 linear /dev/sdb1 0” | dmsetup create mydevice
6.ストライプ ストライピングを実装します:
chunksize 1024 ストライプ 2 256 でディスク 0 に順番に書き込みます。 /dev/sda1 0 /dev/sdb1 0 注:
論理デバイスはセクター 0 からセクター 1024 まで始まり、タイプはストライプ、デバイスは 2 つ、チャンクサイズは /dev/sda1 および /dev/sdb1 の 0 から 256kb 各セクターが始まりますセクター数は 512 です (セクター数はチャンクサイズの倍数である必要があることに注意してください) コマンド実装
#echo “0 1024 striped 2 256 /dev/sda1 0 /dev/sdb1 0” | dmsetup create mydevice
7.error:
削除合成論理デバイスを介したエラー セクター 0 80 Linear /dev/sda1 0 80 100 error 181 200 Linear /dev/sdb1 0#echo “0 80 linear /dev/sda1 0\n80 100 error\n181 200 linear /dev/sdb1 0” | dmsetup create mydevice
8.snapshot 論理ボリューム スナップショット機能を実装するコマンド:
スナップショットを作成すると、3 つのデバイスが表示されます (元のデバイス、スナップショット デバイス、カウ デバイス)。データが変更されていない場合は、元のデバイスからデータを読み取り、変更されたデータ ストレージに書き込みます牛の領域では、スナップショット デバイスが元のデバイスのデータを保存します。#echo ―0 1000 snapshot /dev/sda1 /dev/vg0/realdev P 16 ‖ | dmsetup create mydevice从0扇区到1000扇区为/dev/sda1创建快照,名字为realdev,P表示下次启动仍然生效,16为chunksize
9.zero ゼロ デバイスの特性:
は /dev/zero に似ていますが、ブロック デバイスであるため書き込むことができません. 一般的にテスト目的で使用され、テスト用に大規模なファイル システムを作成します。たとえば、テストでは ext3#export HUGESIZE=$[100 * (2**40)/512] 100T的扇区数量 2**40为2的40次方 #echo "0 $HUGESIZE zero" | dmsetup create zerodev 生成的文件在/dev/mapper/zerodev ext3每个分区最大支持2TB
10 でフォーマットされた 10T デバイスが作成されます。 多路径功能,用来提供线路冗余,监控每条链路,当链路失败时自动切换链路,而且自动恢复运行,防止单点故障。生成的设备名 /dev/dm-X 类型: multipath列出多路径设备,后台需要开启multipathd服务,优先级大小为0-1024 实验步骤: 存储端配置双网卡,配置/dev/sda6为iscsi设备 服务器端安装device-mapper-multipath包,连接iscsi设备 11.FC存储: 存储端建立raid设备,raid建立与HBA卡WWN号的映射关系(连接哪个HBA卡则使用哪块磁盘设备) WWN为HBA卡的授权名称,用来区分一个或一组网络连接,表示网络上的一个连接 相关推荐:《Linux视频教程》
当两路径优先级相等:
负载均衡 当两路径优先级不等: 冗余#vi /etc/multipath.conf 注释掉 blacklist { devnode "*" 不同厂商的配置是不一样的 } 取消注释 default{ udev_dir .. .. path_grouping_policy failover(根据失效域来判断执行策略) }
#systemctl enable multipathd
#systemctl restart multipathd 之后生成的设备位置在/dev/mpath/下,可制作文件系统,挂载
#multipath –ll 查询设备状态
以上がLinuxのマッパーとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。