それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

LUKSなディスクを追加するコマンド

luks のディスクを作る

LUKSのディスクを作るときに、鍵ファイルや、スペア鍵、パスフレーズを設定するのがめんどうだったの手順をできる限り、簡素化して、スクリプトにまとめた

## デバイスを措定
DEV=/dev/sde  

## 鍵ファイルを用意
SPARE=/boot/keys/spare.keybin
KEY=/boot/keys/disk.keybin 
SECTOR=512
## パスフレーズを用意
PASS=$(cat /enc/pass |  openssl enc -d  -pbkdf2 -base64 -aes256)

## 鍵を3つ登録
##  --sector-size 注意する
sudo cryptsetup luksFormat --key-file=$KEY --sector-size=$SECTOR $DEV
sudo cryptsetup luksAddKey --key-file=$KEY --new-keyfile=$SPARE $DEV
sudo cryptsetup luksAddKey --key-file=$KEY $DEV < <(echo -n $PASS)

## テスト
sudo cryptsetup luksOpen --test-passphrase $DEV < <(echo -n "$PASS")
sudo cryptsetup luksOpen --test-passphrase --key-file=$KEY $DEV
sudo cryptsetup luksOpen --test-passphrase --key-file=$SPARE $DEV

## luks のIDを表示
sudo cryptsetup luksUUID $DEV

# Extract the model number and serial number using grep
hdparm_output=$(sudo hdparm -I "$DEV" )
model_number=$(echo "$hdparm_output" | grep -oP "Model Number: \K.*" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
serial_number=$(echo "$hdparm_output" | grep -oP "Serial Number: \K.*" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
echo $model_number
echo $serial_number

## crypttab に登録
MAP_NAME=crypt-disk10

printf "%s UUID=%s %s luks,keyslot=0 # %s/%s %s \n" \
 $MAP_NAME $(sudo cryptsetup luksUUID $DEV) $KEY "$model_number" "$serial_number" $(date -I)

/etc/crypttab に書いたらテスト

暗号ディスクを展開する。

sudo cryptdisks_start crypt-disk10        
sudo cryptdisks_stop crypt-disk10        
sudo cryptdisks_start crypt-disk10        

既存のディスクを入れ替える。

既存のLVMに、組み込んで

sudo pvcreate /dev/mapper/crypt-disk10      
sudo vgextend data /dev/mapper/crypt-disk10   

既存のLVMのデータを移動させる

sudo pvmove /dev/mapper/crypt-disk05 /dev/mapper/crypt-disk10      
sudo vgreduce data /dev/mapper/crypt-disk05
sudo pvremove /dev/mapper/crypt-disk05
## もし、容量拡大ディスクなら resizeも必要。容量縮小なら、shrink する。
sudo resize2fs /dev/mapper/NAME

数TBあると時間かかるので、あとはのんびりと。

過去記事に書いた内容を整理整頓した。