Linux

Luks解密後分區未顯示

  • June 4, 2019

每次我解密我的 luks 驅動器時,分區都不會顯示:

cryptsetup -v luksOpen /dev/md0 md0_crypt

lsblk
sdb                             8:16   0   3,7T  0 disk  
└─sdb1                          8:17   0   3,7T  0 part  
 └─md0                         9:0    0   7,3T  0 raid5 
   └─md0_crypt               253:11   0   7,3T  0 crypt 
sdc                             8:32   0   3,7T  0 disk  
└─sdc1                          8:33   0   3,7T  0 part  
 └─md0                         9:0    0   7,3T  0 raid5 
   └─md0_crypt               253:11   0   7,3T  0 crypt 
sdd                             8:48   0   3,7T  0 disk  
└─sdd1                          8:49   0   3,7T  0 part  
 └─md0                         9:0    0   7,3T  0 raid5 
   └─md0_crypt               253:11   0   7,3T  0 crypt 

當我執行 partprobe

partprobe
lsblk
sdb                                 8:16   0   3,7T  0 disk  
└─sdb1                              8:17   0   3,7T  0 part  
 └─md0                             9:0    0   7,3T  0 raid5 
   └─md0_crypt                   253:11   0   7,3T  0 crypt 
     └─md0_crypt1                253:12   0   7,3T  0 part  
sdc                                 8:32   0   3,7T  0 disk  
└─sdc1                              8:33   0   3,7T  0 part  
 └─md0                             9:0    0   7,3T  0 raid5 
   └─md0_crypt                   253:11   0   7,3T  0 crypt 
     └─md0_crypt1                253:12   0   7,3T  0 part  
sdd                                 8:48   0   3,7T  0 disk  
└─sdd1                              8:49   0   3,7T  0 part  
 └─md0                             9:0    0   7,3T  0 raid5 
   └─md0_crypt                   253:11   0   7,3T  0 crypt 
     └─md0_crypt1                253:12   0   7,3T  0 part

磁碟:

Disk /dev/mapper/md0_crypt: 7,3 TiB, 8001299677184 bytes, 15627538432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disklabel type: gpt
Disk identifier: A599A15F-07DA-B340-ADDC-AA56AE2E9249

Device                      Start         End     Sectors  Size Type
/dev/mapper/md0_crypt-part1  2048 15627536383 15627534336  7,3T Linux

我想在每次啟動時掛載 md0_crypt1 分區。但無需每次都執行 partprobe 。

我錯過了什麼?

對 LUKS/LVM 設備進行分區是不常見的,因此大多數標準工具都沒有涵蓋這一點。事實上,將分區隱藏在 Device Mapper 設備上是一項功能,因為使用邏輯卷作為支持設備的虛擬機通常會對這些分區進行分區,但不希望它們的分區顯示在主機上。

我想在每次啟動時掛載 md0_crypt1 分區。但無需每次都執行 partprobe 。

你幾乎被它困住了。一旦你將它依偎在你的初始化腳本中,你甚至不會注意到差異……(換句話說:自動化它)


在嘗試低於此點的任何操作之前進行備份。

也可以從沒有安裝任何內容的 LiveCD 執行此操作。

選項1)

您可以完全刪除多餘的分區表(將所有數據移動 2048 秒,即第一個也是唯一一個分區的偏移量)。高度危險的dd命令:

dd status=progress bs=1M if=/dev/mapper/md0_crypt1 of=/dev/mapper/md0_crypt

注意:像這樣 dd’ing 必須確保不會覆蓋尚未讀取的數據,因此這不會在另一個方向上起作用。

選項 2)

將分區表轉換為 LVM 也可能是可行的(並且不需要重新定位任何數據),但是 LVM 現在更喜歡更大的元數據區域,並且還喜歡歸零和擦除簽名。所以你必須小心避免這些,並確保第一個 PE 從 1M 開始,而不是 2M 或其他更大的預設值。

[ replace /dev/loop0 with /dev/mapper/md0_crypt ]
# vgcreate --dataalignment 1M --metadatasize 128K vgname /dev/loop0
[ this step will wipe GPT signature ]
# pvs -o +pe_start /dev/loop0
 PV         VG     Fmt  Attr PSize    PFree 1st PE 
 /dev/loop0 foobar lvm2 a--  1020.00m    0    1.00m
                                            ^^^^^^^
[ 1st PE must be 1.00m (2048s) otherwise abort mission! ]
# lvcreate --wipesignatures n --zero n -l100%FREE -n lvname vgname
# file -sL /dev/vgname/lvname
/dev/vgname/lvname: Linux rev 1.0 ext4 filesystem data [...]
[ if there's no filesystem, something went wrong ]

它可以完成,但不應該在沒有完整備份的情況下嘗試。

引用自:https://unix.stackexchange.com/questions/522852