既存のluks設定にdm-cacheを追加するには?

既存のluks設定にdm-cacheを追加するには?

高速SSDと大型HDDという2つの物理デバイスがあります。 SSDはVGにあり、ssd最終的にマウントポイントとして機能し/、HDDはVGにあり、dumpマウントポイントとして機能します/home。どちらもLUKSで暗号化されており、どちらもext4形式です。 SSDの40GBをHDD用キャッシュで簡単に確保できますが、再フォーマットしなくてもLV設定を変更できるかどうか疑問に思います。

ルートファイルシステムのサイズを小さくしてからLVのサイズを小さくし、キャッシュとメタデータ用の2つの新しいLVを追加し、新しく作成されたキャッシュプールを接続してHDDを提供することは可能ですか?暗号化されていないデータがキャッシュに漏れないように設定する方法を教えてください。

ベストアンサー1

今私の質問に答えるのに十分な情報を抽出しました。他の人が従うべきステップは次のとおりです。

一般的な注意:既存のファイルシステムとその基本デバイスを変更すると、データが破損または失われる可能性があります。事前に計画してデータをバックアップしてください:-)

以下の手順に従って、私が起動したファイルシステムのレイアウトの一部が設定に合わない可能性があるため、適切に調整してください。

  • 私はFedora 21を使用しています。
  • SSDは開いており、/dev/sda/boot()、スワップ()、およびフォーマットされたボリュームグループ(-> -> ->)でLVMボリュームをホストするsda1LUKSコンテナを提供します。sda2rootssdext4//dev/sda3/dev/mapper/luks-.../dev/mapper/ssd-root/
  • HDDが開いていて、/dev/sdbボリュームグループ( - > - > - > )でLVMボリュームをホストするLUKSコンテナを提供します。dumpdump/home/dev/sdb1/dev/mapper/luks-.../dev/mapper/dump-dump/home
  • /約7.5GBの暗号化(!)キャッシュを提供するためのスペースを確保するために、ファイルシステムのサイズを変更します/home
  • LVM、LUKS、パーティションテーブル、およびファイルシステムは異なるブロックサイズを使用します(たとえば、私のLVMボリュームにはそれぞれ4 MBの範囲が含まれており、私のext4ファイルシステム、LUKS、およびパーティションは各ゾーンあたり512バイトのブロック/セクタです) )。ソートする寸法を選択します。
  • 一貫性を確保するために、手動で入力した数字をもう一度確認してください。論理ボリュームより大きいファイルシステム、物理ボリュームより大きい論理ボリューム、LUKSコンテナより大きい物理ボリューム、または論理ボリュームより大きいLUKSコンテナで終わっていることを再確認してください。容量。パーティションよりも大きい。

  1. lsblk設定を思い出させるために使用されます。 LiveCDで再起動し、新しいターミナルセッションを開きます。 ...へのすべての呼び出しを避けるには、sudorootに切り替えます。

  2. LUKS コンテナの Fedora 一般名が複数回必要です。まず変数に入れてください

    SDA3UUID=luks-`sudo cryptsetup luksUUID /dev/sda3`
    SDB1UUID=luks-`sudo cryptsetup luksUUID /dev/sdb1`
    

    $SDA3UUID次に、デバイスのUUIDを保存します/$SDB1UUIDはい/home

    LUKSを使用してデバイスを開きます/。 LVMはコンテナ内のボリュームを検索し、それを有効にします(/dev/mapper/ssd-root私の場合のように)。

    sudo cryptsetup open /dev/sda3 $SDA3UUID
    
  3. ファイルシステムのサイズを小さくします。

    resize2fsまず、ファイルシステムのチェックを強制します。ファイルシステムのサイズを/20GBに調整します。

    sudo fsck -f /dev/mapper/ssd-root
    sudo resize2fs -p /dev/mapper/ssd-root 20g
    

    このプロセスには時間がかかります。 「ファイルシステムはXYZブロック長です」という出力と各ブロックのサイズ(私の場合は5242880 4kブロック)を確認してください。

  4. ファイルシステムサポート論理ボリュームのサイズを無効にして縮小します。

    - パラメータの-Lデフォルト値はメガバイト単位です。

    sudo lvchange -an /dev/mapper/ssd-root
    sudo lvreduce -L 20480 /dev/mapper/ssd-root
    
  5. 論理ボリュームをサポートする物理ボリュームのサイズを小さくします。

    LUKSとLVMはわずかなオーバーヘッドを引き起こすため、物理ボリュームは論理ボリュームよりわずかに大きく維持する必要があります。 2つの範囲を追加しました。

    sudo pvresize --setphysicalvolumesize 20488 /dev/mapper/$SDA3UUID
    
  6. LUKSコンテナのサイズを小さくします。

    - パラメータは-bブロックとして提供されます。次のように使用しpvdisplayて計算します。合計物理エクステント数* エクステントサイズ* 1024**2 / 512(例えばpython -c "print 5121*4*1024**2/512"

    sudo cryptsetup resize -b 41951232 $SDA3UUID
    

    sudo cryptsetup status $SDA3UUIDコンテナの新しい次元について学ぶために使用されます。私の場合、コンテナサイズは2MBでした。大きい含まれている物理ボリュームとファイルシステムよりも(ソートする方法)

  7. パーティションのサイズを縮小し、キャッシュ用の新しいパーティションを作成します。

    論理ボリュームとコンテナを無効にして起動します。

    sudo cryptsetup luksClose $SDA3UUID
    sudo fdisk /dev/sda
    

    元のパーティションを削除しますsda3。古いパーティションと同じセクタ(!)にあり、サイズが「+XYZ」(私の場合は「+41951232」)の新しいパーティションを作成します。また、デバイスを埋める新しいパーティションを作成します(私の場合は7.5 GB)。パーティションテーブルをディスクに書き込んで終了しますfdisk

    ファイルシステムがまだ存在することを確認してください。

    sudo cryptsetup open /dev/sda3 $SDA3UUID
    

    lvs論理ボリュームを表示する必要があります。

    sudo fsck -f /dev/mapper/ssd-root
    
  8. 暗号化されたキャッシュをホストするために、新しいパーティションに新しいLUKSコンテナを作成します。

    sudo cryptsetup luksFormat /dev/sda4
    SDA4UUID=luks-`sudo cryptsetup luksUUID /dev/sda4`
    
  9. HDD用のLUKSコンテナを開き、/home最終的に新しいデバイスでホストするボリュームグループを展開します。

    sudo cryptsetup open /dev/sdb1 $SDB1UUID
    

    lvsこれで、ボリュームグループがdump有効になっているとマークする必要があります。

    sudo cryptsetup open /dev/sda4 $SDA4UUID
    sudo vgextend dump /dev/mapper/$SDA4UUID
    
  10. キャッシュのメタデータとキャッシュ自体の論理ボリュームを作成します。

    メタデータボリュームはキャッシュ自体のサイズの0.1%でなければなりませんが、少なくとも8 MB以上でなければなりません。少しオーバーヘッドがあることをもう一度参照してください。だから私は物理ボリュームの残りのサイズの99%であるキャッシュサイズを選択しました。

    sudo lvcreate -L 20M -n lv_cache_meta dump /dev/mapper/$SDA4UUID
    sudo lvcreate -l 99%FREE -n lv_cache dump /dev/mapper/$SDA4UUID
    sudo lvconvert --type cache-pool --poolmetadata dump/lv_cache_meta dump/lv_cache
    
  11. 管理対象論理ボリュームにキャッシュを追加します/home

    sudo lvconvert --type cache --cachepool dump/lv_cache dump/dump
    

    出力は、「論理ボリュームダンプ/ダンプがキャッシュされました」と似ている必要があります。

  12. crypttab起動中に新しいLUKSコンテナを開くように更新されました。

    mkdir root
    sudo mount /dev/mapper/ssd-root root
    sudo su
    UUID=`cryptsetup luksUUID /dev/sda4`
    echo "luks-$UUID UUID=$UUID none" >> root/etc/crypttab
    exit
    sudo umount root
    
  13. 祈り、元のシステムで再起動します。

    再起動後、次のようにキャッシュに関する統計を取得できます。

    lvs --rows -o +devices,cache_total_blocks,cache_used_blocks,cache_dirty_blocks,cache_read_hits,cache_read_misses,cache_write_hits,cache_write_misses dump
    

これでわかります。

おすすめ記事