GELI 암호화를 사용하는 ZFS 이미지에 3개의 물리적 드라이브가 있는 FreeBSD 11 시스템이 있습니다. 이 모든 것은 기본적으로 내가 기계를 처음 만들 때 FreeBSD 설치 프로그램에 의해 마법처럼 설정되었기 때문에 그것에 대한 입력이나 세부 사항에 대한 지식이 거의 없었습니다.
SMART가 드라이브 중 하나에서 일부 오류를 보고하기 시작했습니다. 아직 죽지는 않았지만 미러에 새 드라이브를 추가한 다음 실제로 실패하기 전에 이전 드라이브를 제거하고 싶습니다. 인터넷 검색을 통해 대부분의 작업을 완료하는 방법을 알 수 있을 것 같지만, 잘못한 일이나 누락된 부분이 없는지 확인하기 위해 모든 작업을 실행하고 싶습니다. 그리고 좀 더 구체적으로 교환 부분에 대해서는 잘 모르겠습니다(암호화되어 있기도 합니다).
현재 세 개의 드라이브(ada0, ada1, ada2)는 각각 다음과 같습니다 gpart show
.
=> 40 1953525088 ada0 GPT (932G)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 50331648 2 freebsd-swap (24G)
50333696 1903190016 3 freebsd-zfs (908G)
1953523712 1416 - free - (708K)
zpool status
:
pool: zroot
state: ONLINE
scan: scrub repaired 0 in 2h7m with 0 errors on Mon Feb 20 14:43:08 2017
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada0p3.eli ONLINE 0 0 0
ada1p3.eli ONLINE 0 0 0
ada2p3.eli ONLINE 0 0 0
/etc/fstab:
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/swap.eli none swap sw 0 0
swapinfo
:
Device 1K-blocks Used Avail Capacity
/dev/mirror/swap.eli 25165820 142220 25023600 1%
gmirror status
:
Name Status Components
mirror/swap COMPLETE ada0p2 (ACTIVE)
ada1p2 (ACTIVE)
ada2p2 (ACTIVE)
그래서 저는 다음과 같이 하겠다고 생각했습니다.
(1) 새 드라이브를 물리적으로 설치합니다.
(2) SMART 검사를 하거나 임의의 데이터로 채울 수도 있습니다.
(3) gpart destroy
, gpart create
및 , 기본적으로 다른 드라이브 표시(boot, free, swap, zfs, free)와 동일한 레이아웃을 gpart add
만듭니다 . gpart show
한 가지 차이점은 고장난 드라이브를 점진적으로 교체하면서 자연스럽게 풀에 더 많은 공간이 생기도록 의도적으로 더 큰 드라이브를 구입했다는 것입니다. 그래서 freebsd-zfs 파티션을 기존 드라이브에 있는 파티션보다 더 크게 만들었습니다. 비록 현재의 모든 작은 드라이브를 모두 교체할 때까지는 대부분의 파티션을 사용할 수 없을 것입니다(맞죠?). 향후 드라이브의 드라이브 크기가 약간 다를 수 있다는 점을 고려하여 마지막에 중요한 여유 공간을 남겨두어야 합니다(맞죠?).
(4) geli init
freebsd-zfs 파티션. 구체적인 문제는 다음과 같습니다.이제 세 개의 물리적 드라이브 모두 동일한 GELI 비밀번호를 가지고 있습니다. 머신이 부팅되면 각 드라이브에 비밀번호를 입력하는 대신 비밀번호만 입력하라는 메시지가 표시됩니다. 나는 이것을 좋아한다. 새 드라이브에 동일한 비밀번호를 다시 사용하면 이런 일이 마술처럼 발생합니까? 아니면 FreeBSD 부팅 프로세스에 이 새 드라이브에 대해 내가 입력하는 비밀번호도 시도해야 한다고 알려야 합니까?
(5) geli attach
freebsd-zfs 파티션으로 이동합니다.
(6) zpool attach
다음과 같이 새로운 암호화된 파티션을 생성합니다.zpool attach zroot ada0p3.eli ada3p3.eli
gpart bootcode
(7) 이제 FreeBSD가 새 드라이브에서 실행하라고 지시할 것 같습니다 . 이 방법.
(8) 재동기화가 완료될 때까지 기다립니다.
(9) 기존 드라이브를 물리적으로 제거합니다. 재부팅 후에는 zpool에서도 제거됩니다.
내...그게 내가 하는 일인 것 같은데? 그런데 위에서 말했듯이 스왑에 대해서는 전혀 확신이 없습니다. 마술처럼 /dev/mirror/swap.eli의 일부가 됩니까? 어떻게든 추가해야 하나요? 마찬가지로 기존 드라이브의 스왑 공간도 마술처럼 사라지나요? 어떻게든 제거해야 하나요?
도움을 주셔서 미리 감사드립니다.
답변1
나중에 참조할 수 있도록 내 질문에 답합니다.
(1) 전반적으로 내 계획은 잘 진행됐다.
(2) 스왑의 경우 새 스왑 파티션을 추가하고 gmirror insert
이전 스왑 파티션을 삭제했습니다 gmirror remove
.
(3) 보조 비밀번호 문제 관련: 새 디스크에 동일한 비밀번호를 사용했고 (더 이상 아무 것도 하지 않고) 부팅 시 비밀번호를 한 번만 입력하면 되었습니다.