題:
在Mojave中調整APFS分區的大小
Adrian
2018-12-13 09:21:15 UTC
view on stackexchange narkive permalink

我正在嘗試調整一個太小而不適合我的分區的大小。這是 diskutil列表的輸出:

 〜> diskutil列表
/ dev / disk0(內部):
#:TYPE NAME SIZE IDIFIFIER
0:GUID_partition_scheme 500.3 GB磁盤0
1:EFI EFI 314.6 MB磁盤
2:Apple_APFS容器磁盤1 400.0 GB磁盤0s2
3:Apple_APFS容器磁盤2 100.0 GB磁盤0s3

/ dev / disk1(合成):
#:TYPE NAME SIZE IDIFIFIER
0:APFS容器方案-+400.0 GB磁盤1
                                物理存儲磁盤0s2
1:APFS卷Macintosh HD 234.4 GB disk1s1
2:APFS卷預啟動23.6 MB disk1s2
3:APFS卷恢復518.1 MB磁盤
4:APFS卷VM 6.4 GB磁盤1s4

/ dev / disk2(合成):
#:TYPE NAME SIZE IDIFIFIER
0:APFS容器方案-+100.0 GB磁盤2
                                物理存儲磁盤0s3
1:APFS卷Mojave Beta 90.2 GB disk2s1
2:APFS卷預啟動46.3 MB disk2s2
3:APFS卷恢復512.3 MB disk2s3
4:APFS卷VM 3.2 GB disk2s4
 

我查看了此MacObserver帖子,並嘗試了此操作

  sudo diskutil apfs resize容器磁盤0s3 150G
 

我也偷看了這篇文章,同樣是: diskutil 文檔。

控制台輸出如下:

開始APFS操作 將增量增量調整為49,999,994,880字節,並針對新的物理存儲大小為149,999,996,928字節 確定此APFS容器的目標物理存儲的最大大小為100,000,002,048字節 錯誤:-69519:目標磁盤太小,無法進行此操作,或者您的分區圖中缺少間隙或間隙太小,這通常是由於嘗試將分區擴展到另一個分區的開頭或之後而引起的。分區圖可用空間的結尾

我知道另一個驅動器上有50個演出,但是我如何從 Macintosh HD 回收並將其分配給 Mojave Beta 驅動器?感謝您的閱讀。我歡迎您的建議。

Update

就S和G而言,我嘗試將大硬盤縮小,然後查看會發生什麼情況

當前狀態:

 將APFS物理存儲disk0s2從399,963,168,768縮減為349,999,996,928字節
縮小APFS數據結構
[-0%.. 10%.. 20%.. 30%.. 40%..................... 。] 45.0%
 

我現在

Update 2

我沒有炸毀硬盤,但是沒有用...嗯,它確實起作用了...在嘗試之後,這是 diskutil list 現在的樣子:

 〜> diskutil列表
/ dev / disk0(內部):
   #:TYPE NAME SIZE IDIFIFIER
   0:GUID_partition_scheme 500.3 GB磁盤0
   1:EFI EFI 314.6 MB磁盤
   2:Apple_APFS容器磁盤1 350.0 GB磁盤0s2
   3:Apple_APFS容器磁盤2 100.0 GB磁盤0s3

/ dev / disk1(合成):
   #:TYPE NAME SIZE IDIFIFIER
   0:APFS容器方案-+350.0 GB磁盤1
                                 物理存儲磁盤0s2
   1:APFS卷Macintosh HD 234.4 GB disk1s1
2:APFS卷預啟動23.6 MB disk1s2
   3:APFS卷恢復518.1 MB磁盤
   4:APFS卷VM 6.4 GB磁盤1s4

/ dev / disk2(合成):
   #:TYPE NAME SIZE IDIFIFIER
   0:APFS容器方案-+100.0 GB磁盤2
                                 物理存儲磁盤0s3
   1:APFS卷Mojave Beta 90.3 GB disk2s1
   2:APFS卷預啟動46.3 MB disk2s2
   3:APFS卷恢復512.3 MB disk2s3
   4:APFS卷VM 3.2 GB disk2s4
 

因此,縮小大分區,然後嘗試使小分區變大。不知道其他50場演出去了哪裡,但它在那兒。我查看了Disk Utility應用程序,它顯示了350GB分區,100GB分區和50GB可用空間。

如果Apple監視此操作,請簡化分區大小的調整。這是一個巨大的PITA,不應該。

三 答案:
David Anderson
2018-12-14 11:43:29 UTC
view on stackexchange narkive permalink

Apple不提供執行所需操作的方法。有一些第三方工具可以移動分區,但是上次我檢查時,它們不適用於APFS容器分區。

分區連續存儲在驅動器上。這意味著您不能只向分區添加任何可用空間。可用空間必須直接存在於分區下方。讓我向您展示一個與您的情況類似的示例。

首先是命令 diskutil list disk1 的輸出。下面的驅動器是一個稀疏磁盤映像。我創建了圖像以幫助說明我的答案。映像分區非常接近您的 disk0

  Marlin:driveinfo davidanderson $ diskutil列表disk1
/ dev / disk1(磁盤映像):
   #:TYPE NAME SIZE IDIFIFIER
   0:GUID_partition_scheme +500.3 GB磁盤1
   1:EFI EFI 314.6 MB磁盤1s1
   2:Apple_APFS容器磁盤3 400.0 GB磁盤1s2
   3:Apple_APFS容器磁盤4 100.0 GB磁盤1s3
 

這是 sudo gpt -r show / dev / disk1 的輸出。此命令顯示在GUID分區表(GPT)中存儲的值。在這種情況下,單位是512字節的塊。

  Marlin:driveinfo davidanderson $ gpt -r show / dev / disk1
      起始大小索引內容
          0 1 PMBR
          1 1 Pri GPT接頭
          2 32 Pri GPT表
         34 6
         40 614448 1 GPT零件-C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     614488 781250000 2 GPT零件-7C3457EF-0000-11AA-AA11-00306543ECAC
  781864488 195283952 3 GPT零件-7C3457EF-0000-11AA-AA11-00306543ECAC
  977148440 5
  977148445 32秒GPT表
  977148477 1秒GPT接頭
 

由於 disk0 是啟動驅動器,因此,如果未禁用 sudo 和系統完整性保護(SIP),則不能使用 gpt 命令。 gpt 命令的替代方法是稱為 driveinfo的第三方工具。如果使用此工具,則無需禁用SIP或使用 sudo 。以下是此命令的輸出。在這裡,單位是字節。

  Marlin:driveinfo davidanderson $ ./driveinfo -rd disk1
  代碼大小類型標識符安裝名稱
  ---- --------------- -------------- ---------- ------- ----
                    512 PMBR
                    512 Pri GPT接頭
                 16,384 Pri GPT表
                  3,072自由空間
            314,597,376 EFI磁盤1s1沒有EFI
        400,000,000,000 Apple_APFS磁盤1s2否
         99,985,383,424 Apple_APFS disk1s3否
                  2,560個可用空間
                 16,384秒GPT表
                    512秒GPT標頭
 

接下來,我將在下面輸入命令以創建50 GB的可用空間。這類似於您所做的。

  sudo diskutil apfs resizeContainer disk0s2 350G
 

結果如下所示。

  Marlin:driveinfo davidanderson $ diskutil列表disk1
/ dev / disk1(磁盤映像):
   #:TYPE NAME SIZE IDIFIFIER
   0:GUID_partition_scheme +500.3 GB磁盤1
   1:EFI EFI 314.6 MB磁盤1s1
   2:Apple_APFS容器磁盤3 350.0 GB磁盤1s2
   3:Apple_APFS容器磁盤4 100.0 GB磁盤1s3
Marlin:driveinfo davidanderson $ sudo gpt -r show disk1
      起始大小索引內容
          0 1 PMBR
          1 1 Pri GPT接頭
          2 32 Pri GPT表
         34 6
         40 614448 1 GPT零件-C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     614488 683593744 2 GPT零件-7C3457EF-0000-11AA-AA11-00306543ECAC
  684208232 97656256
  781864488 195283952 3 GPT零件-7C3457EF-0000-11AA-AA11-00306543ECAC
  977148440 5
  977148445 32秒GPT表
  977148477 1秒GPT接頭

馬林魚:driveinfo davidanderson $ ./driveinfo -rd disk1
  代碼大小類型標識符安裝名稱
  ---- --------------- -------------- ---------- ------- ----
                    512 PMBR
                    512 Pri GPT接頭
                 16,384 Pri GPT表
                  3,072自由空間
            314,597,376 EFI磁盤1s1沒有EFI
        349,999,996,928 Apple_APFS disk1s2否
         50,000,003,072可用空間
         99,985,383,424 Apple_APFS disk1s3否
                  2,560個可用空間
                 16,384秒GPT表
                    512秒GPT標頭
 

disk1s2 之後立即創建了50 GB的可用空間。為了將這個可用空間添加到 disk1s3 ,該空間必須在 disk1s3 之後立即出現。

因此,要將50 GB的可用空間添加到 disk0s3 ,您必須首先將該分區向上移動50 GB。我不認為當前存在可以移動APFS容器的軟件。因此,您不能將空間從一個APFS容器移動到另一個APFS容器。

替代解決方案可以包括:

  • 將內容 disk0s3 複製到 disk0s2 。有關克隆內容的一種方法,請參見Geoff Nixon的答案
  • 安裝莫哈韋沙漠的新副本 在 disk0s2 中,然後使用Migration Assistant應用程序進行複制 來自 disk0s3 的重要數據。 我應該警告你我沒有 了解遷移助手是否可以與兩個APFS一起使用 容器分區位於同一驅動器上。
  • 通過使用Time Machine或其他方法將
  • disk0s3 備份到另一個驅動器。然後,您可以嘗試還原到 disk0s2

實施上述任何解決方案將使您可以刪除 disk0s3 並調整大小 disk0s2 以包含兩個分區最初佔用的空間。

附錄

通常,用戶需要了解驅動器的分區。特別是那些可用空間。 diskutil list disk0 命令以升序顯示分區以及每個分區的大小。但是,此命令不顯示可用空間。 Disk Utility應用程序偶爾會顯示可用空間,但該值通常不正確,並且不會顯示相對於其他分區的可用空間。

那麼,空閒空間在哪裡顯示?以下是確定可用空間的幾種方法。

  1. sudo gpt -r show / dev / disk0 命令將顯示每個分區使用的邏輯扇區塊。該命令還將以邏輯扇區塊為單位顯示每個分區之間的可用空間。在OS X時代,您可以在啟動驅動器上運行此命令。從macOS開始,必須禁用系統完整性保護(SIP)來執行此操作。
  2. 使用 diskutil info -plist disk0s#命令檢索分區號起始和大小字節值。您需要為驅動器上的每個分區重複該命令。接下來,您可以編譯與 gpt -r show / dev / disk0 命令的輸出相似的表。基本上,可用空間是未分配給分區,受保護的主引導記錄(PMBR)和GUID分區表(GPT)的任何空間。
  3. 編寫一個BASH腳本,該腳本將自動執行2號方式。可以從此站點下載免費腳本。假設您的下載進入默認的 Downloads 文件夾,則可以通過輸入以下命令獲得可用空間。注意:您執行not需要輸入 sudo 或禁用SIP。

     〜/ Downloads / driveinfo-1.0.1 / driveinfo -r disk0
     
  4. ol>

    關於使用APFS容器分區的注意事項

    在同一驅動器上具有兩個APFS容器分區是不正常的。這樣做會破壞創建APFS的主要原理之一。如果需要兩個不同的APFS卷,則應在同一APFS容器分區中創建每個卷。如果要安裝兩個或多個不同版本的High Sierra和/或Mojave,也是如此。

    如果要刪除APFS卷,則可用空間會自動返回到APFS容器。您不需要輸入 sudo diskutil apfs resizeContainer disk0s#0 命令。如果刪除包含macOS版本的捲,則需要執行一些其他清理操作。問題的可接受答案中概述了必要的清理步驟:從APFS容器中刪除macOS?

感謝您的詳細解釋。我希望通過利用現在免費的50G將小型驅動器從100G提升到150G。您提供的命令將350G磁盤的大小調整為400G。我嘗試了`sudo diskutil apfs resizeContainer disk0s3 0`,但是它說空間不足。我想如果今天晚上我不明白的話,我將對整個驅動進行核對並重新開始:)
@Adrian:我編輯了我的問題,目的是為了更好地解釋為什麼您的方法不起作用。
Geoff Nixon
2018-12-19 14:50:51 UTC
view on stackexchange narkive permalink

我沒有關注很多先前的討論。看來您有足夠的空間來合併。

  1. first物理分區上取回50G。
    diskutil ap resizeContainer disk0s2 0

  2. 將要保留的邏輯分區從第二個APFS容器恢復到第一個容器上的其他邏輯分區。
    asr restore --source / dev / disk2s1 --target / dev / disk1

    如果需要進行碎片整理,則可能需要一些時間。 (如果這給您帶來了麻煩(在反轉過程中),則您可能需要在第二個容器上對預引導,VM和恢復分區進行核對( ap deleteVolume )。假設您可以接受,而且我已經有一段時間沒有真正看到它了。)

  3. 安裝新的“ Mojave Beta”邏輯分區,現在在第一個容器中的分區。確保它看起來正確。

  4. 擺脫第二個APFS容器:
    diskutil ap deleteContainer disk0s3 ;然後完全刪除物理分區: diskutil DeleteVolume free free disk0s3

  5. 最後,再次在第一個(唯一的)APFS容器上回收剩餘磁盤:
    diskutil ap resizeContainer disk0s2 0

  6. ol>

    不?我想念什麼嗎?

Mojave Beta是否仍可啟動?
應該,儘管您可能需要使用`systemsetup -setstartupdisk`來切換卷“角色”(通過“系統偏好設置”更改啟動磁盤可能會碰碰運氣)。參見https://eclecticlight.co/2018/08/30/booting-the-mac-bless-and-what-makes-a-volume-bootable/
tekblackbelt
2019-03-09 01:16:10 UTC
view on stackexchange narkive permalink

僅供參考,您必須指定容器(在您的情況下為“ disk2”,因此命令應為:

例如,增加Mojave Beta磁盤(disk2)的大小:

  sudo diskutil apfs resizeContainer disk2 150G
 

不確定是否必須縮小另一個音量。

還應該驗證您的Time Capsule設置,以確保您沒有太多的歷史記錄(以限制空間)。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...