高速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ボリュームをホストするsda1
LUKSコンテナを提供します。sda2
root
ssd
ext4
/
/dev/sda3
/dev/mapper/luks-...
/dev/mapper/ssd-root
/
- HDDが開いていて、
/dev/sdb
ボリュームグループ( - > - > - > )でLVMボリュームをホストするLUKSコンテナを提供します。dump
dump
/home
/dev/sdb1
/dev/mapper/luks-...
/dev/mapper/dump-dump
/home
/
約7.5GBの暗号化(!)キャッシュを提供するためのスペースを確保するために、ファイルシステムのサイズを変更します/home
。- LVM、LUKS、パーティションテーブル、およびファイルシステムは異なるブロックサイズを使用します(たとえば、私のLVMボリュームにはそれぞれ4 MBの範囲が含まれており、私のext4ファイルシステム、LUKS、およびパーティションは各ゾーンあたり512バイトのブロック/セクタです) )。ソートする寸法を選択します。
- 一貫性を確保するために、手動で入力した数字をもう一度確認してください。論理ボリュームより大きいファイルシステム、物理ボリュームより大きい論理ボリューム、LUKSコンテナより大きい物理ボリューム、または論理ボリュームより大きいLUKSコンテナで終わっていることを再確認してください。容量。パーティションよりも大きい。
lsblk
設定を思い出させるために使用されます。 LiveCDで再起動し、新しいターミナルセッションを開きます。 ...へのすべての呼び出しを避けるには、sudo
rootに切り替えます。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
ファイルシステムのサイズを小さくします。
resize2fs
まず、ファイルシステムのチェックを強制します。ファイルシステムのサイズを/
20GBに調整します。sudo fsck -f /dev/mapper/ssd-root sudo resize2fs -p /dev/mapper/ssd-root 20g
このプロセスには時間がかかります。 「ファイルシステムはXYZブロック長です」という出力と各ブロックのサイズ(私の場合は5242880 4kブロック)を確認してください。
ファイルシステムサポート論理ボリュームのサイズを無効にして縮小します。
- パラメータの
-L
デフォルト値はメガバイト単位です。sudo lvchange -an /dev/mapper/ssd-root sudo lvreduce -L 20480 /dev/mapper/ssd-root
論理ボリュームをサポートする物理ボリュームのサイズを小さくします。
LUKSとLVMはわずかなオーバーヘッドを引き起こすため、物理ボリュームは論理ボリュームよりわずかに大きく維持する必要があります。 2つの範囲を追加しました。
sudo pvresize --setphysicalvolumesize 20488 /dev/mapper/$SDA3UUID
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でした。大きい含まれている物理ボリュームとファイルシステムよりも(ソートする方法)パーティションのサイズを縮小し、キャッシュ用の新しいパーティションを作成します。
論理ボリュームとコンテナを無効にして起動します。
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
暗号化されたキャッシュをホストするために、新しいパーティションに新しいLUKSコンテナを作成します。
sudo cryptsetup luksFormat /dev/sda4 SDA4UUID=luks-`sudo cryptsetup luksUUID /dev/sda4`
HDD用のLUKSコンテナを開き、
/home
最終的に新しいデバイスでホストするボリュームグループを展開します。sudo cryptsetup open /dev/sdb1 $SDB1UUID
lvs
これで、ボリュームグループがdump
有効になっているとマークする必要があります。sudo cryptsetup open /dev/sda4 $SDA4UUID sudo vgextend dump /dev/mapper/$SDA4UUID
キャッシュのメタデータとキャッシュ自体の論理ボリュームを作成します。
メタデータボリュームはキャッシュ自体のサイズの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
管理対象論理ボリュームにキャッシュを追加します
/home
。sudo lvconvert --type cache --cachepool dump/lv_cache dump/dump
出力は、「論理ボリュームダンプ/ダンプがキャッシュされました」と似ている必要があります。
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
祈り、元のシステムで再起動します。
再起動後、次のようにキャッシュに関する統計を取得できます。
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
これでわかります。
答え2
lvmcache(7)
私はこの仕事のための良い記事を使いますdm-cache
。
https://rwmj.wordpress.com/2014/05/22/using-lvms-new-cache-feature/
著者によると、これには単一のボリュームグループを使用する必要があります。したがって、ボリュームグループをマージする必要があります。これを行うためにvgmerge(8)が使用される次のリンクを参照してください。
ある場合は、デバイスマネージャの説明に従ってキャッシュが暗号化されないと思いますLVM
。LUKS
https://help.ubuntu.com/community/EncryptedFilesystemHowto。暗号化されたデータがキャッシュされていると思いLUKS
ます。LVM
LVM
上記の場合、サイズ変更に関する良い参考資料は次のとおりですLUKS
。https://help.ubuntu.com/community/ResizeEncryptedPartitions。人々はそれに反対方向に適応することができなければなりません。
プロセスを確認したり、テスト/検証された回復プロセスを使用して完全な回復を実行したい場合は、テストシステムを設定することをお勧めします。