OS X 10.7.4 암호화 용 코어 스토리지, ZFS 용 ZEVO
예
목표 : 하나의 물리 디스크, 5 개의 볼륨. 암호화되지 않은 5 개 중 하나, 암호로 암호화 된 1 개, 다른 암호로 암호화 된 3 개.
출발점:
- / dev / disk2 – 물리 디스크
- / dev / disk2s2 – 보호 할 JHFS + 볼륨
- / dev / disk2s3 – 암호화 및 ZFS와 함께 재사용하기 위해 제거 할 슬라이스입니다.
힌트
이후 HFS +는 모든 메타 데이터 업데이트를위한 하나의 글로벌 잠금을 가지고합니다 (I 걸쳐 개최 / O)은 디스크 대기 시간에 매우 민감하다 . 따라서 단일 디스크에서 ZFS와 JHFS +의 혼합이 가능 하지만 대부분의 경우 파일 시스템 혼합은 권장 되지 않습니다.
이 예제는 또한 압축과 하위 파일 시스템을 사용합니다.
명령 요약
diskutil coreStorage create pusscats /dev/disk2s3
diskutil coreStorage createVolume 370260EF-D772-4739-BAF6-F4CD6F49A60D jhfs+ Billski 50% -passphrase
diskutil coreStorage createVolume 370260EF-D772-4739-BAF6-F4CD6F49A60D jhfs+ Pickle 100% -passphrase
diskutil unmount disk3 && diskutil unmount disk4
sudo zpool create -O casesensitivity=insensitive -O normalization=formD Billski /dev/disk3
sudo zpool create -O casesensitivity=insensitive -O normalization=formD -O compression=on Pickle /dev/disk4
zfs create Pickle/button
zfs create Pickle/button/nose
sudo chown gjp22 /Volumes/Billski
sudo chown gjp22 /Volumes/Pickle
zpool export Billski && zpool export Pickle
diskutil unmount /Volumes/slice\ two
터미널의 출력
sh-3.2$ diskutil list disk2
/dev/disk2
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *8.0 GB disk2
1: EFI 209.7 MB disk2s1
2: Apple_HFS slice two 1.5 GB disk2s2
3: Apple_HFS slice three 6.0 GB disk2s3
sh-3.2$ diskutil coreStorage create pusscats /dev/disk2s3
Started CoreStorage operation
Unmounting disk2s3
Touching partition type on disk2s3
Adding disk2s3 to Logical Volume Group
Creating Core Storage Logical Volume Group
Switching disk2s3 to Core Storage
Waiting for Logical Volume Group to appear
Discovered new Logical Volume Group "370260EF-D772-4739-BAF6-F4CD6F49A60D"
Core Storage LVG UUID: 370260EF-D772-4739-BAF6-F4CD6F49A60D
Finished CoreStorage operation
sh-3.2$ diskutil coreStorage createVolume 370260EF-D772-4739-BAF6-F4CD6F49A60D jhfs+ Billski 50% -passphrase
Passphrase for new volume:
Confirm new passphrase:
Started CoreStorage operation
Waiting for Logical Volume to appear
Formatting file system for Logical Volume
Initialized /dev/rdisk3 as a 3 GB HFS Plus volume with a 8192k journal
Mounting disk
Core Storage LV UUID: 22CF33F0-9EB1-424C-AFFA-FFA45A75A828
Core Storage disk: disk3
Finished CoreStorage operation
sh-3.2$ diskutil coreStorage createVolume 370260EF-D772-4739-BAF6-F4CD6F49A60D jhfs+ Pickle 100% -passphrase
Passphrase for new volume:
Confirm new passphrase:
Started CoreStorage operation
Waiting for Logical Volume to appear
Formatting file system for Logical Volume
Initialized /dev/rdisk4 as a 3 GB HFS Plus volume with a 8192k journal
Mounting disk
Core Storage LV UUID: 500E7D8F-27A3-4704-BF9F-5AE5D6BB6982
Core Storage disk: disk4
Finished CoreStorage operation
sh-3.2$ diskutil unmount disk3 && diskutil unmount disk4
Volume Billski on disk3 unmounted
Volume Pickle on disk4 unmounted
sh-3.2$ sudo zpool create -O casesensitivity=insensitive -O normalization=formD Billski /dev/disk3
Password:
sh-3.2$ sudo zpool create -O casesensitivity=insensitive -O normalization=formD -O compression=on Pickle /dev/disk4
sh-3.2$ zfs create Pickle/button
cannot mount '/Volumes/Pickle/button': failed to create mountpoint
filesystem successfully created, but not mounted
sh-3.2$ zfs create Pickle/button/nose
cannot mount '/Volumes/Pickle/button/nose': failed to create mountpoint
filesystem successfully created, but not mounted
sh-3.2$ sudo chown gjp22 /Volumes/Billski
sh-3.2$ sudo chown gjp22 /Volumes/Pickle
sh-3.2$ zpool export Billski && zpool export Pickle
sh-3.2$ diskutil unmount /Volumes/slice\ two
Volume slice two on disk2s2 unmounted
sh-3.2$ clear
이때 모든 물리 디스크 볼륨이 마운트 해제 된 상태에서 디스크 연결을 끊을 수 있습니다. 다시 연결하면 하위 파일 시스템을 사용할 수 있어야합니다.
sh-3.2$ zfs list
NAME USED AVAIL REFER MOUNTPOINT
Billski 1.04Mi 2.37Gi 684Ki /Volumes/Billski
Pickle 1.87Mi 2.37Gi 472Ki /Volumes/Pickle
Pickle/button 808Ki 2.37Gi 412Ki /Volumes/Pickle/button
Pickle/button/nose 396Ki 2.37Gi 396Ki /Volumes/Pickle/button/nose
sh-3.2$ clear
sh-3.2$ mount | grep /dev/
/dev/disk1 on / (hfs, local, journaled)
/dev/disk0s2 on /Volumes/11E53 (hfs, local, journaled)
/dev/disk2s2 on /Volumes/slice two (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk4 on /Volumes/Billski (zfs, local, journaled)
/dev/disk6 on /Volumes/Pickle (zfs, local, journaled)
/dev/disk6s1 on /Volumes/Pickle/button (zfs, local, journaled)
/dev/disk6s1s1 on /Volumes/Pickle/button/nose (zfs, local, journaled)
sh-3.2$ clear
sh-3.2$ ls -l /Volumes
total 40
drwxr-xr-x@ 32 root wheel 1156 3 Jun 09:08 11E53
lrwxr-xr-x 1 root admin 1 4 Jun 15:17 11E53-2012-06-03 -> /
drwxr-xr-x 5 root wheel 5 4 Jun 22:27 Billski
drwxr-xr-x 6 root wheel 6 4 Jun 22:33 Pickle
drwxrwxr-x 7 gjp22 staff 306 4 Jun 21:41 slice two
sh-3.2$ clear
sh-3.2$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *160.0 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS 11E53 25.0 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
4: Apple_CoreStorage 25.0 GB disk0s4
5: Apple_Boot Recovery HD 650.0 MB disk0s5
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: Apple_HFS 11E53-2012-06-03 *24.7 GB disk1
/dev/disk2
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *8.0 GB disk2
1: EFI 209.7 MB disk2s1
2: Apple_HFS slice two 1.5 GB disk2s2
3: Apple_CoreStorage 6.0 GB disk2s3
4: Apple_Boot Boot OS X 134.2 MB disk2s4
/dev/disk3
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *2.9 GB disk3
1: EFI 209.7 MB disk3s1
2: ZFS 2.6 GB disk3s2
/dev/disk4
#: TYPE NAME SIZE IDENTIFIER
0: zfs_pool_proxy Billski *2.6 GB disk4
/dev/disk5
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *2.9 GB disk5
1: EFI 209.7 MB disk5s1
2: ZFS 2.6 GB disk5s2
/dev/disk6
#: TYPE NAME SIZE IDENTIFIER
0: zfs_pool_proxy Pickle *2.6 GB disk6
1: zfs_filesystem_proxy button 2.5 GB disk6s1
2: zfs_filesystem_proxy nose 2.5 GB disk6s1s1
sh-3.2$ clear
sh-3.2$ diskutil coreStorage list
CoreStorage logical volume groups (2 found)
|
+-- Logical Volume Group ED97CA61-2077-45CE-9CBB-8AA0A7600CB5
| =========================================================
| Name: b
| Sequence: 1
| Free Space: 0 B (0 B)
| |
| +-< Physical Volume 5C79B2B6-CE01-4F02-9222-2AD898791AC5
| | ----------------------------------------------------
| | Index: 0
| | Disk: disk0s4
| | Status: Online
| | Size: 24999997440 B (25.0 GB)
| |
| +-> Logical Volume Family 7A9C5B98-287F-4F6B-9F9C-9641EFBC16E1
| ----------------------------------------------------------
| Sequence: 11
| Encryption Status: Unlocked
| Encryption Type: AES-XTS
| Encryption Context: Present
| Conversion Status: Complete
| Has Encrypted Extents: Yes
| Conversion Direction: -none-
| |
| +-> Logical Volume 3A130C9E-63AE-4F00-A1C3-E750B1570381
| ---------------------------------------------------
| Disk: disk1
| Status: Online
| Sequence: 5
| Size (Total): 24681226240 B (24.7 GB)
| Size (Converted): -none-
| Revertible: Yes (unlock and decryption required)
| LV Name: 11E53-2012-06-03
| Volume Name: 11E53-2012-06-03
| Content Hint: Apple_HFS
|
+-- Logical Volume Group 370260EF-D772-4739-BAF6-F4CD6F49A60D
=========================================================
Name: pusscats
Sequence: 1
Free Space: 0 B (0 B)
|
+-< Physical Volume F64F6909-25BF-4638-8647-CD058D60968B
| ----------------------------------------------------
| Index: 0
| Disk: disk2s3
| Status: Online
| Size: 6020829184 B (6.0 GB)
|
+-> Logical Volume Family 4D42970B-FAB7-4EFE-B120-2057A9A7A7E5
| ----------------------------------------------------------
| Sequence: 2
| Encryption Status: Unlocked
| Encryption Type: AES-XTS
| Encryption Context: Present
| Conversion Status: NoConversion
| Has Encrypted Extents: Yes
| Conversion Direction: -none-
| |
| +-> Logical Volume 22CF33F0-9EB1-424C-AFFA-FFA45A75A828
| ---------------------------------------------------
| Disk: disk3
| Status: Online
| Sequence: 2
| Size (Total): 2934915072 B (2.9 GB)
| Size (Converted): -none-
| Revertible: No
| LV Name: Billski
| Content Hint: Apple_HFS
|
+-> Logical Volume Family 3A009EF4-4B3D-4BC8-8B47-EFE88B2BA12A
----------------------------------------------------------
Sequence: 2
Encryption Status: Unlocked
Encryption Type: AES-XTS
Encryption Context: Present
Conversion Status: NoConversion
Has Encrypted Extents: Yes
Conversion Direction: -none-
|
+-> Logical Volume 500E7D8F-27A3-4704-BF9F-5AE5D6BB6982
---------------------------------------------------
Disk: disk5
Status: Online
Sequence: 2
Size (Total): 2934910976 B (2.9 GB)
Size (Converted): -none-
Revertible: No
LV Name: Pickle
Content Hint: Apple_HFS
sh-3.2$ clear
sh-3.2$ zpool status
pool: Billski
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
Billski ONLINE 0 0 0
GPTE_7CBD336C-568A-41AE-8E61-291CBD8EF783 ONLINE 0 0 0 at disk3s2
errors: No known data errors
pool: Pickle
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
Pickle ONLINE 0 0 0
GPTE_25BF8159-FB8D-4589-B52A-184F6675176E ONLINE 0 0 0 at disk5s2
errors: No known data errors
sh-3.2$
Finder의 최종 결과
알려진 문제
CoreStorage 세계에서는 최종 결과에 Apple_HFS
대한 내용 힌트 가 사실이 아닙니다 ZFS
. 나는 애플에게 더 적합한 힌트를 요구했다.
잠금 해제시 시스템은 암호 힌트를 거부하는 것처럼 보일 수 있습니다 (내용 힌트 불일치로 인해). 거절이 나타나면 :
- 기다림
- 잠금 해제 된 볼륨 (및 모든 하위 파일 시스템)이 마운트되어야합니다
- 비밀번호 대화에서 빠져 나옵니다.
원하는 경우 키 체인 액세스를 사용하여 코어 스토리지 논리 볼륨의 UUID에 대한 암호를 키 체인에 추가하십시오.
Mountain Lion은 더 이상 diskutil eraseDisk
코어 스토리지 논리 볼륨에 파티션 맵 배치를 지원하지 않습니다.
gpes3e-gjp4:~ gjp22$ diskutil list /dev/disk4 && diskutil list /dev/disk5
/dev/disk4
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *8.0 GB disk4
1: EFI 209.7 MB disk4s1
2: Apple_CoreStorage test 7.7 GB disk4s2
3: Apple_Boot Boot OS X 134.2 MB disk4s3
/dev/disk5
#: TYPE NAME SIZE IDENTIFIER
0: Apple_HFS test *7.3 GB disk5
gpes3e-gjp4:~ gjp22$ diskutil unmount /dev/disk5
Volume test on disk5 unmounted
gpes3e-gjp4:~ gjp22$ sudo zpool create -O casesensitivity=insensitive -O normalization=formD Billski /dev/disk5
Unable to begin erase operation: Placing a partition map on a Core Storage logical volume is not supported (-69671)
diskutil eraseDisk failed, exit status 1
gpes3e-gjp4:~ gjp22$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.8.5
BuildVersion: 12F37
gpes3e-gjp4:~ gjp22$
– 경고에 대한 mgrosman에게 감사 합니다 .
수리
컨텐츠 힌트 Apple_HFS
및 fsck_cs 의 버그와 주로 작동하는 Apple의 Core Storage 설계를 고려하십시오 .
- 대체 유형 (
ZFS
, zfs_pool_proxy
등)을 '강제' 하는 것이 어려운 경우 수리에 영향을 zfs_filesystem_proxy
줄 수있는 능력이 있는지 여부를 모르겠습니다 fsck_cs
.
조심해서 진행해라.