
この象徴性はすでによく知られています。なぜなら、 それが どんな 動物 な の かを詳細に説明する意味はないからです 。
LVMとの比較はありません。なぜなら、マッスルカーとジェットトラックを比較することは可能ですが、無意味だからです。
グラフィックとコミックも配信されませんでした。
たとえば、これは不完全なサクセスストーリーです。これは、呼び出し元のアップグレードを停止することしかできず、完了できないためです。
背景
ほとんどすべてのITファミリーには複数のPCやラップトップがあり、HTPCルーター、または何らかのNASが存在する可能性が高いです。 そのため、2台のPCがあり、大きな壁モニターが追加されました。この状況では、HTPCの誕生は時間の問題です。 彼が生まれたとき、彼はすぐに誇り高い名前-サーバーと呼ばれました。 後に、私のお気に入りのゲームのいくつかがLinux上でそれを行うことができることが判明しました-そして、サーバーはすぐにSteamアカウントを取得しました。
サーバーが16GBのメモリを受け取った数年が経ち、gitlabとプロジェクトを備えた仮想コンピューターが登場しました...
そして、アップグレードが非常に重要であり、3台のPCを一度にアップグレードするのは費用がかかりすぎることを理解するようになりました。 同時に、PCIEパススルーと仮想ゲームで既に成功した経験がありました。
適切なソリューションは、ゲーミングマシンを仮想マシンに段階的に移行することでした。 1人だけが移行しましたが、将来的にはゲストとは彼女を意味します。
3つのプロセッサ(i3-3220、i5-3470、i5- 3470K)のうち、VT-dは2番目のプロセッサのみをサポートし、i3ではなくサーバーに送られました。 ロープロファイルの1050Tiを購入して7970を交換し、古いハードウェアを部品で販売しました。
サーバーは、最新のUEFIファームウェア、Ubuntu 16.04、および使用可能な最大のSSD-Crucial M4、256 GBをルートプールの下に受け取りました。 このマニュアルに従ってインストールが実行され、そこからインストールスクリプトがライブシステムに蓄積されました。 次に、ダウンロードに成功すると、 virt-manager
、 libvirt-bin
、 ovmf
およびxubuntu-desktop
がインストールされました。 もちろん、VT-xとVT-dが含まれていました。
ちなみに、システムのバイナリ部分をログ、キャッシュ、その他のハムスターから分離することは、実験システムの生体解剖のプロセスで複数回役立ち、initrdからでもアクセスできる単純なzfs rollback
作業状態を戻すことができます(ただし、 /root
別のデータセットを使用する場合-パラメーターを使用しますkernel init=/bin/sh
(緊急ブート用); shは、bashとは異なり、 /root
マウントポイントでガベージを作成しません)。
ダウンロードで問題が発生した場合、何が起こったのか推測できないため、 /etc/default/grub
HIDDEN_TIMEOUT
に関連するすべてをHIDDEN_TIMEOUT
し、0以外のタイムアウトを明示的に設定します(10を持っています)、コメントをGRUB_TERMINAL=console
を追加し、 quiet splash
を削除してくださいGRUB_CMDLINE
から。
エラー43およびすべてすべて
- 初期設定
ホストとゲストのUEFIは、ビデオカードのスムーズな転送と動作の保証であることが判明しましたが、このためには、ビデオカードに完全にUEFI互換のファームウェアが必要です。 私はこれで幸運でした、そして、古い参照7970と新しい1050Tiは互換性がありました。 UEFIゲストを作成するには、ovmfパッケージが必要です。また、virt-managerを使用してゲストを作成する場合は、ウィザードの最後のページで、UEFIをマイクロコードとして、Q35をチップセットとして選択して選択する必要があります。 私のシステムでは、これらの手順を実行せずに、ゲストシステムに音のフェードとスタッターの奇妙な問題がありました。 - デバイス転送
デバイスを転送するには、特定のIDvfio-pci.ids=10de:1c82,10de:0fb9,8086:1e31
(ビデオカード自体が転送され、そのサウンドが鳴ります)の特別なドライバー-vfio-pciまたはpci-stub(すでに古くなっています)を使用するようカーネルに指示する必要がありますおよび4ポートUSB3コントローラー)およびiommuintel_iommu=on
使用を許可します(他のパラメーターはAMDにintel_iommu=on
ますが、それがないために嘘をつきません)。 また、ビデオカードを転送するには、nvidiaが転送され、専用ドライバーがインストールされていないため、ビデオドライバーによる使用を明示的に禁止する必要があります。この場合、modprobe.blacklist=nouveau nouveau.modeset=0
ます。 これらのパラメーターはすべて、ファイル/etc/default/grub
GRUB_CMDLINE
行にGRUB_CMDLINE
ます。 ゲストへの転送に備えてデバイスを追加する前に、update-grub
を実行して再起動することを忘れないでください。 - nVidia、または「個人的なものは何もない、ただのビジネス」。
残念なことに、この人生では何も簡単にすぐには起こりません。悪名高いエラー43が私を待っていましたcpu=host
のトリックcpu=host
役に立ちましたが、助けにはなりませんでした。 幸いなことに、virsh edit <guestname>
を使用するのに十分であることが判明し、<features>/<hyperv>
に<vendor_id state='on' value='ASUS'/>
という行を追加します。 しかし、順番に、リポジトリーからのlibvirt(バックポートを含む)は非常に悪く、このパラメーターを理解しませんでした。 より新しいバージョンをビルドしてインストールしようとする試みが何度か失敗した後、私はppaに頼り、 Jacob Zimmermannは適切なパッケージを見つけました。 安定したバージョンを見つけたので、転送中のビジネスバグが絶え間なく変化するため、ゲストのビデオカードのドライバーを更新しないことをお勧めします。
ZFSを使用する
- Lxc
ここではすべてが非常に簡単です-データセットを作成し(たとえば、zfs create rpool/lxc
)、lxc init
実行し、ZFSストレージのタイプを選択し、プールの作成を拒否し、データセットの使用に同意し、少し前に作成したデータセットの名前を入力します 現在、彼らはgitlab、samba-dc(キー--usentvfsを使用して、4.3より古いsambaでは起動しません)、いくつかの小さなプロジェクトに住んでいます。 - 重複排除、圧縮およびブロック。
ゲストにブロックデバイスを提供するには、zvolを使用します。誤って削除するのは難しく、個々の画像を作成するだけです。 ただし、zvolには注意が必要な機能が1つあります。スパースでない場合(作成時に-s
キー)、画像は元の画像と同じくらいのスペースを占有します。
ZFSを使用する場合、ディスクスペースを節約する方法は2つあります。圧縮と重複排除です。 そして、圧縮ですべてが明確な場合、重複排除をより詳細に検討する必要があります。
重複排除のオーバーヘッドは、実際のシステムのメモリでzdb -D <poolname>
バイトの範囲であり(詳細についてはzdb -D <poolname>
を参照)、DDT(重複排除テーブル)のサイズは一意のブロックの数に直接依存するため、メモリ全体。 そして、これは、小さなブロックサイズで重複排除を使用することは、単に利益を生まないことを意味します(おそらく、dedup_ratioを持つ仮想マシンファームは、はるかに大きなユニットであり、RAMの容量が大きいことを除いて)。 さらに、小さなブロックサイズ(これは主にzvolに適用されます)では、zle以外の圧縮を使用することはできません。
言うまでもなく、zvolブロックサイズは、その上にあるFSのクラスターサイズと一致する必要があり、ブロックサイズに合わせて調整する必要があります(現代のユーティリティは1MBに長く調整されていますが、これは十分すぎる)。
大きいブロックを使用すると、圧縮、重複排除、メモリオーバーヘッドに好影響を与え、圧縮によりゲストファイルシステムの大きいブロックによるオーバーヘッドが最小限に抑えられることがわかります。
したがって、コマンドzfs create -V <size> -s -b 64K <zfs path>
ですべてのzvolを作成し、必要に応じて-o dedup=on
および-o compression=lz4
します。 - 64KBが私たちの選択です。
ゲストにこのクラスターサイズのFSを起動して操作することを教えることは残っています。 Linuxの場合、たとえばext4をこのようなクラスターサイズで使用することはできません。単にマウントすることはできません。 ただし、マウントパラメーターのストライドとストライプ幅を操作することにより、目的の動作を実現できます。
NTFSの場合、すべてが同時にトリッキーでシンプルです。Windowsはサービスパーティションを作成します。その内容はごくまれに変更されるため、クラスターのサイズを無視できます(ブートパーティションのサイズも変更できません-bootmgrもntldrもクラスターサイズをあまり理解しません) 4KB)。 未割り当ての場所を選択した後、[作成]ではなく[作成]をクリックすると、インストーラーが必要なすべてのパーティションを作成およびフォーマットし、ゲストシステムがインストールされるパーティションのディスク番号と番号が表示されます。
次に、ちょっとした黒魔術が必要です。
-
五gram星を描きます。線の各十字線に、一度燃やした黒いろうそくを1つ取り付けることを忘れません -
cmd
kinvalより低くないランクでdremoraを呼び出します(Shift-F10
押しShift-F10
) -
diskpart
を起動し、さらにその中で -
select disk < >
-
select partition < >
-
format FS=NTFS UNIT=64K QUICK
-
assign LETTER=S
- ディスクパートを離れる
- cmdで
mkdir s:\windows
実行しmkdir s:\windows
。
-
インストールウィザードに戻り、ディスク構成を更新し、作成されたもの(マジックが実行されたもの)から最大のパーティションを選択し、通常どおりインストールを続行します。
, 64, Windows , , - . ? , Windows-: , , , .
Steamの重複排除、またはすべてが始まった場所
最も簡単な方法は、smbまたはnfsボールを取得して、それらにSteamライブラリを作成することでした。 通常のファイルは、エクスポートされたライブラリとLinuxクライアントライブラリの両方を含めて、不必要なジェスチャなしで簡単かつ自然に重複排除されます。 いつものように、最も明白なソリューションは機能していることが判明しましたが、間違っています。 このモードのSMBは、ファイルがSSD上にあるにもかかわらず、ラップトップのハードドライブの速度で移動します。 NFS(およびWindows 8.1は4ではなくNFS v3をサポート)は少し速く移動し、何らかの「グリーン」デスクトップディスクのように感じましたが、快適なゲームにはまだ少なすぎました。 さらに、M $のすべてのオペレーティングシステムは、ログオン時に自動的に接続されるネットワークドライブを失うことを好み、各時点でライブラリの場所へのSteamはすぐに疲れます。
適切なソリューションはiSCSIでした。 targetcli
がtargetcli
にインストールされ、 このマニュアルに従って構成され、blockioの使用に合わせて/dev/zvols/<zfs path>
の形式で調整されました。 set attributes emulate_3pc=1,emulate_tpu=1,emulate_caw=1,emulate_tpws=1,emulate_tas=1
正しく機能させるには、Windows 8以降(iSCSIイニシエーターのset attributes emulate_3pc=1,emulate_tpu=1,emulate_caw=1,emulate_tpws=1,emulate_tas=1
サポートが実装されている8以降)を使用する必要があり、ブロックデバイスごとにset attributes emulate_3pc=1,emulate_tpu=1,emulate_caw=1,emulate_tpws=1,emulate_tas=1
ます。 すべてが正しく行われていれば、ファイルとフォーマットを削除してスペースを解放し、zvolのサイズを小さくする必要があります。
これで、ライブラリ用にエクスポートされたボリューム内の同じファイルは1回だけスペースを占有しますが、Linux用のSteamライブラリは依然として別の場所を占有します。 オプション-o dedup=on -o recordsize=64K
使用して、このライブラリの個別のデータセットを作成しましょう。 zvolのパーティションが1 MBの境界に沿って配置され、クラスターサイズが64 KBに設定されている場合、重複排除が同じブロックを見つけることができるように、同じ粒度でホスト上のファイルを共有する必要があるのは論理的です。
結果
- 自宅にある16GBのメモリは、8GBのゲスト、ホスト上のfirefox、コンテナなどには十分ではありません-時々、激しいディスクアクティビティを伴う奇妙なスローダウンが発生します。
- 重複排除されたストレージは、個別のプールとして最適に実行されます。
-
zfs set logbias=throughput <pool>
設定すると、特に重複排除を使用する場合にパフォーマンスに大きな影響があります。 それだけでなく、これにより追加のログへの書き込み/ログの消去サイクルが不要になり、ドライブの書き込みキャッシュの洗浄も停止します。 - ギガビットネットワークでは、SSDのzvolはローカルドライブよりも著しく遅くなりますが、ハードドライブよりもはるかに高速です
- 1TBで960EVOについて考えました
結論の代わりに
さて、私の小さな実験は間違いなく成功しましたが、途中で困難が生じました。 さらに、Zen2、32-64GBのメモリ、NVME SSDにアップグレードし、2台目のPCをサーバーに転送したいのですが...これはまったく別のソーサリーになります。