Tạo phân vùng mới trong không gian chưa phân bổ với Diskutil


14

Tôi đã xóa phân vùng đầu tiên trên HD bên ngoài để bây giờ nó có 100GB dung lượng trống ở đầu phân vùng. Tôi muốn lấy lại không gian đó, nhưng Disk Utility không cho phép tôi tạo một phân vùng mới ở đó (nó chỉ không làm gì khi tôi nhấp vào 'Áp dụng'). Có cách nào để thực hiện điều này với diskutil? Tôi chỉ tìm cách thay đổi (hoặc xóa hoặc tách, v.v.) các phân vùng hiện có bằng cách nhập đĩa2s2 làm ID thiết bị, nhưng không gian trống không có ID thiết bị đó.

Đầu ra:

$ diskutil list disk2
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk2
   1:                        EFI                         209.7 MB   disk2s1
   2:                  Apple_HFS Shared                  199.3 GB   disk2s2
   3:                 Apple_Boot Recovery HD             784.2 MB   disk2s3
   4:          Apple_CoreStorage                         500.0 GB   disk2s4
   5:                 Apple_Boot Boot OS X               134.2 MB   disk2s5
   6:          Apple_CoreStorage                         699.6 GB   disk2s6
   7:                 Apple_Boot Boot OS X               134.2 MB   disk2s7
$ sudo gpt -r show disk2
Password:
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6         
          40      409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409640   195575768         
   195985408   389353696      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
   585339104     1531680      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
   586870784   976562504      4  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  1563433288      262144      5  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  1563695432  1366319552      6  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  2930014984      262144      7  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  2930277128           7         
  2930277135          32         Sec GPT table
  2930277167           1         Sec GPT header
$ sudo fdisk /dev/disk2
Disk: /dev/disk2    geometry: -5415437/4/63 [-1364690128 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 - -1364690129] <Unknown ID>
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
$ sudo pdisk --list /dev/disk2
pdisk: No valid block 1 on '/dev/disk2'

1
Trên Terminal, bạn có thể xin vui lòng chạy các lệnh này và thêm đầu ra cho câu hỏi của bạn: diskutil list disk2, sudo gpt -r show disk2, sudo fdisk /dev/disk2sudo pdisk --list /dev/disk2? Không rõ tại sao Disk Utility không hoạt động, có thể có vấn đề với (một trong) bảng phân vùng. Ngoài ra, bạn đã thử chạy "sửa chữa" trên cả đĩa cứng và phân vùng trên nó chưa?
pmdj

Gist này hiển thị tất cả dữ liệu bạn yêu cầu: gist.github.com/211c2bd5bc00a2f87b4c
MrMage

Bạn có thể khởi động từ một HD bên ngoài? Nếu có, tôi có một câu trả lời.
duci9y

Không thử, nhưng tôi nghĩ vậy (ít nhất là nó đã hoạt động trong quá khứ).
MrMage

Câu trả lời:


18

(Trước khi tiếp tục, vui lòng đảm bảo rằng đĩa đang nghi vấn vẫn là đĩa2, bạn có bản sao lưu dữ liệu của mình, v.v. - có nghĩa là, những thay đổi ở đây không đặc biệt nguy hiểm. Đọc qua toàn bộ hướng dẫn trước khi làm bất cứ điều gì để đảm bảo bạn hiểu tất cả các bước.)

OK, các bảng phân vùng của bạn trông ổn (GPT hợp lệ và MBR bảo vệ chính xác), vì vậy tôi không biết tại sao Disk Utility lại làm bạn thất bại trong trường hợp này, nhưng bạn sẽ có thể tạo phân vùng trong không gian trống bằng gptlệnh tiện ích -line. GPT của bạn trông như thế này:

       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6         
          40      409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409640   195575768         
   195985408   389353696      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
   585339104     1531680      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
   586870784   976562504      4  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  1563433288      262144      5  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  1563695432  1366319552      6  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  2930014984      262144      7  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  2930277128           7         
  2930277135          32         Sec GPT table
  2930277167           1         Sec GPT header

Dung lượng trống được chỉ định bởi dòng này (các số là các cung 512 byte, do đó, chỉ dưới 100 GB dung lượng trống:

      409640   195575768         

Apple yêu cầu không gian trống 128MiB (262144) sau một phân vùng, vì vậy phân vùng mới có thể là 195575768-262144 = 195313624 sector. Ngắt kết nối tất cả các ổ đĩa trên đĩa bằng cách sử dụng:

diskutil unmountDisk disk2

Sau đó, lệnh này sẽ tạo phân vùng HFS + trong không gian trống:

sudo gpt add -b 409640 -s 195313624 -t hfs disk2

Điều đó chỉ tạo phân vùng, không phải hệ thống tập tin. Để kiểm tra xem nó đã hoạt động tốt chưa, bây giờ bạn sẽ thấy disk2s8nếu bạn chạy diskutil list disk2. Nếu đây thực sự là trường hợp, bạn có thể định dạng phân vùng như vậy:

sudo newfs_hfs -v "Volume Name" -J /dev/rdisk2s8

Nếu đĩa2s8 không xuất hiện, bạn sẽ cần khởi động lại trước khi định dạng. Thay vì chạy, newfs_hfsbạn cũng có thể xóa phân vùng trong Disk Utility.

Tiện ích gpt không sắp xếp lại các số phân vùng nhưng đây không phải là vấn đề trong thực tế. Nếu bạn thực hiện bất kỳ thay đổi nào nữa với tiện ích đĩa, điều đó có thể sẽ khắc phục việc đặt hàng.


Vâng, điều này dường như đã làm việc. Nhưng Disk Utility hiện hiển thị bố cục phân vùng lộn xộn: i50.tinypic.com/2qxc3r6.jpg (không gian trống ở trên cùng mở rộng thêm một chút - chế độ xem phân vùng hiện có thanh cuộn).
MrMage

Hmm, điều đó có thể được gây ra bởi việc đánh số và có thể là bất cứ điều gì gây ra lỗi Disk Utility khác ở vị trí đầu tiên. Trên thực tế, nếu mọi thứ khác hoạt động, bạn có thể tiếp tục ở trạng thái này. Nếu không, bạn có thể thử đánh số lại các phân vùng. Sử dụng tiêu chuẩn gptnày là tẻ nhạt và có phần dễ bị lỗi / rủi ro, vì cách tích hợp duy nhất là xóa và tạo lại mỗi phân vùng. Tôi thực sự có một số bản vá chống lại gptviệc thêm số lần lặp và gõ các lệnh thay đổi - Tôi có thể dọn dẹp chúng và xuất bản chúng nếu bạn thấy ổn với việc xây dựng lại gpttừ nguồn trong XCode ...
pmdj

Tôi không có vấn đề xây dựng gtptừ nguồn, nhưng mã có được kiểm tra tốt không? Tôi không muốn làm hỏng bảng phân vùng của mình. Ngoài ra, có cách nào để sao lưu nó?
MrMage

Để thêm phân vùng, đó là gpt thêm.
pduey

1
@AeroCross Chính sách của họ được xuất bản tại đây, developer.apple.com/l Library / mac / technotes / tn2166 / _index.html # / // trong thực tế, nó được sử dụng làm phân vùng khởi động nếu bạn sử dụng RAID hoặc Core Storage (Fusion Drive và / hoặc File Vault) hoặc phần mềm tương tự.
pmdj
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.