Ändern Sie die Größe der APFS-Partition in Mojave

Ich versuche, die Größe einer Partition zu ändern, die für meine Anforderungen zu klein ist. Hier ist die Ausgabe von diskutil list:

~> diskutil list
/dev/disk0 (internal):
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:      GUID_partition_scheme                         500.3 GB   disk0
1:                        EFI EFI                     314.6 MB   disk0s1
2:                 Apple_APFS Container disk1         400.0 GB   disk0s2
3:                 Apple_APFS Container disk2         100.0 GB   disk0s3

/dev/disk1 (synthesized):
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:      APFS Container Scheme -                      +400.0 GB   disk1
                                Physical Store disk0s2
1:                APFS Volume Macintosh HD            234.4 GB   disk1s1
2:                APFS Volume Preboot                 23.6 MB    disk1s2
3:                APFS Volume Recovery                518.1 MB   disk1s3
4:                APFS Volume VM                      6.4 GB     disk1s4

/dev/disk2 (synthesized):
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:      APFS Container Scheme -                      +100.0 GB   disk2
                                Physical Store disk0s3
1:                APFS Volume Mojave Beta             90.2 GB    disk2s1
2:                APFS Volume Preboot                 46.3 MB    disk2s2
3:                APFS Volume Recovery                512.3 MB   disk2s3
4:                APFS Volume VM                      3.2 GB     disk2s4

Ich habe mir diesen MacObserver-Beitrag angesehen und Folgendes versucht:

    sudo diskutil apfs resizeContainer disk0s3 150G

Ich habe auch einen Blick auf diesen Beitrag geworfen, auch bezüglich: diskutilDokumentation.

Die Konsolenausgabe sieht wie folgt aus:

APFS-Vorgang gestartet. Ausrichten des Vergrößerungsdeltas auf 49.999.994.880 Bytes und Anstreben einer neuen physischen Speichergröße von 149.999.996.928 Bytes. Die maximale Größe für den physischen Zielspeicher dieses APFS-Containers wurde auf 100.000.002.048 Bytes festgelegt. Fehler: -69519: Der Zieldatenträger ist für diesen Vorgang zu klein , oder es ist eine Lücke in Ihrer Partitionszuordnung erforderlich, die fehlt oder zu klein ist, was häufig durch den Versuch verursacht wird, eine Partition über den Anfang einer anderen Partition oder über das Ende des nutzbaren Speicherplatzes der Partitionszuordnung hinaus zu vergrößern

Ich weiß, dass ich 50 Gigs auf dem anderen Laufwerk herumliegen habe, aber wie kann ich Macintosh HDes vom zurückfordern und dem Mojave BetaLaufwerk geben? Vielen Dank fürs Lesen. Ich freue mich über Ihre Vorschläge.

Aktualisieren

Nur für S und G habe ich versucht, das große Laufwerk kleiner zu machen und zu sehen, was passiert .

Aktueller Status:

Shrinking APFS Physical Store disk0s2 from 399,963,168,768 to 349,999,996,928 bytes
Shrinking APFS data structures
[ - 0%..10%..20%..30%..40%............................... ] 45.0%

Ich gerade

Aktualisierung 2

Ich habe meine Festplatte nicht gesprengt, aber es hat nicht funktioniert ... nun, es hat irgendwie funktioniert ... so sieht es diskutil listjetzt nach diesem Versuch aus:

 ~> diskutil list
/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         350.0 GB   disk0s2
   3:                 Apple_APFS Container disk2         100.0 GB   disk0s3

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +350.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            234.4 GB   disk1s1
   2:                APFS Volume Preboot                 23.6 MB    disk1s2
   3:                APFS Volume Recovery                518.1 MB   disk1s3
   4:                APFS Volume VM                      6.4 GB     disk1s4

/dev/disk2 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +100.0 GB   disk2
                                 Physical Store disk0s3
   1:                APFS Volume Mojave Beta             90.3 GB    disk2s1
   2:                APFS Volume Preboot                 46.3 MB    disk2s2
   3:                APFS Volume Recovery                512.3 MB   disk2s3
   4:                APFS Volume VM                      3.2 GB     disk2s4

Also die große verkleinern und dann versuchen, die kleine Partition größer zu machen. Keine verdammte Ahnung, wo die anderen 50 Gigs geblieben sind, aber es ist irgendwo da drin. Ich habe mir die Festplatten-Dienstprogramm-App angesehen und sie zeigt eine 350-GB-Partition, eine 100-GB-Partition und 50 GB freien Speicherplatz.

Wenn Apple dies überwacht, machen Sie es bitte einfacher, die Größe von Partitionen zu ändern. Dies ist eine riesige PITA und es sollte nicht sein.

Antworten (3)

Apple bietet keine Möglichkeit, das zu tun, was Sie tun möchten. Es gibt Tools von Drittanbietern, die eine Partition verschieben können, aber als ich das letzte Mal nachgesehen habe, funktionieren sie nicht mit APFS-Containerpartitionen.

Partitionen werden zusammenhängend auf einem Laufwerk gespeichert. Das bedeutet, dass Sie einer Partition nicht einfach freien Speicherplatz hinzufügen können. Der freie Speicherplatz muss direkt unterhalb der Partition vorhanden sein. Lassen Sie mich Ihnen ein Beispiel zeigen, das Ihrer Situation ähnelt.

Zuerst ist die Ausgabe des Befehls diskutil list disk1. Das folgende Laufwerk ist ein Sparse-Disk-Image. Ich habe das Bild erstellt, um meine Antwort zu veranschaulichen. Das Image ist ziemlich nahe an Ihrer partitioniert disk0.

Marlin:driveinfo davidanderson$ diskutil list disk1
/dev/disk1 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        +500.3 GB   disk1
   1:                        EFI EFI                     314.6 MB   disk1s1
   2:                 Apple_APFS Container disk3         400.0 GB   disk1s2
   3:                 Apple_APFS Container disk4         100.0 GB   disk1s3

Hier ist die Ausgabe von sudo gpt -r show /dev/disk1. Dieser Befehl zeigt den Wertespeicher in der GUID-Partitionstabelle (GPT) an. In diesem Fall sind die Einheiten Blöcke von 512 Bytes.

Marlin:driveinfo davidanderson$ gpt -r show /dev/disk1
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     614448      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     614488  781250000      2  GPT part - 7C3457EF-0000-11AA-AA11-00306543ECAC
  781864488  195283952      3  GPT part - 7C3457EF-0000-11AA-AA11-00306543ECAC
  977148440          5         
  977148445         32         Sec GPT table
  977148477          1         Sec GPT header

Da disk0es sich um Ihr Startlaufwerk handelt, können Sie den gptBefehl nicht verwenden, ohne dass der sudoSystemintegritätsschutz (SIP) deaktiviert ist. Eine Alternative zum gptBefehl ist ein Drittanbieter-Tool namens driveinfo . Wenn Sie dieses Tool verwenden, müssen Sie SIP nicht deaktivieren oder eine sudo. Unten ist die Ausgabe dieses Befehls. Hier sind die Einheiten in Byte.

Marlin:driveinfo davidanderson$ ./driveinfo -rd disk1
  Code       Size             Type       Identifier  Mounted  Name
  ----  ---------------  --------------  ----------  -------  ----
                    512  PMBR                                     
                    512  Pri GPT header                           
                 16,384  Pri GPT table                            
                  3,072  Free Space                               
            314,597,376  EFI              disk1s1      No     EFI 
        400,000,000,000  Apple_APFS       disk1s2      No         
         99,985,383,424  Apple_APFS       disk1s3      No         
                  2,560  Free Space                               
                 16,384  Sec GPT table                            
                    512  Sec GPT header                           

Als Nächstes gebe ich den folgenden Befehl ein, um 50 GB freien Speicherplatz zu erstellen. Dies ist ähnlich wie das, was Sie getan haben.

sudo diskutil apfs resizeContainer disk0s2 350G

Die Ergebnisse sind unten gezeigt.

Marlin:driveinfo davidanderson$ diskutil list disk1
/dev/disk1 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        +500.3 GB   disk1
   1:                        EFI EFI                     314.6 MB   disk1s1
   2:                 Apple_APFS Container disk3         350.0 GB   disk1s2
   3:                 Apple_APFS Container disk4         100.0 GB   disk1s3

Marlin:driveinfo davidanderson$ sudo gpt -r show disk1
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     614448      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     614488  683593744      2  GPT part - 7C3457EF-0000-11AA-AA11-00306543ECAC
  684208232   97656256         
  781864488  195283952      3  GPT part - 7C3457EF-0000-11AA-AA11-00306543ECAC
  977148440          5         
  977148445         32         Sec GPT table
  977148477          1         Sec GPT header

Marlin:driveinfo davidanderson$ ./driveinfo -rd disk1
  Code       Size             Type       Identifier  Mounted  Name
  ----  ---------------  --------------  ----------  -------  ----
                    512  PMBR                                     
                    512  Pri GPT header                           
                 16,384  Pri GPT table                            
                  3,072  Free Space                               
            314,597,376  EFI              disk1s1      No     EFI 
        349,999,996,928  Apple_APFS       disk1s2      No         
         50,000,003,072  Free Space                               
         99,985,383,424  Apple_APFS       disk1s3      No         
                  2,560  Free Space                               
                 16,384  Sec GPT table                            
                    512  Sec GPT header                

Die 50 GB freier Speicherplatz wurden unmittelbar danach erstellt disk1s2. Um diesen freien Platz hinzuzufügen disk1s3, müsste der Platz unmittelbar danach vorkommen disk1s3.

Um also die 50 GB freien Speicherplatz hinzuzufügen, disk0s3müssten Sie diese Partition zuerst um 50 GB nach oben verschieben. Ich glaube nicht, dass es derzeit Software gibt, die einen APFS-Container verschieben kann. Daher können Sie keinen Speicherplatz von einem APFS-Container in einen anderen APFS-Container verschieben.

Alternative Lösungen könnten sein:

  • Klonen Sie den Inhalt disk0s3in disk0s2. Siehe die Antwort von Geoff Nixon für eine solche Möglichkeit, den Inhalt zu klonen.
  • Installieren Sie eine neue Kopie von Mojave in disk0s2und verwenden Sie dann den Migrationsassistenten, um wichtige Daten von zu kopieren disk0s3. Ich sollte Sie warnen, dass ich nicht weiß, ob der Migrationsassistent mit zwei APFS-Containerpartitionen auf demselben Laufwerk funktioniert.
  • Sichern Sie disk0s3mithilfe von Time Machine oder auf andere Weise auf einem anderen Laufwerk. Sie könnten dann versuchen, die Datei wiederherzustellendisk0s2

Wenn Sie eine der oben genannten Lösungen implementieren, können Sie den ursprünglich von beiden Partitionen belegten Speicherplatz entfernen disk0s3und in der Größe ändern disk0s2.

Anhang

Häufig muss ein Benutzer die Partitionierung eines Laufwerks kennen. Insbesondere wo der freie Platz ist. Der diskutil list disk0Befehl zeigt die Partitionen in aufsteigender Reihenfolge und die Größe jeder Partition an. Dieser Befehl zeigt jedoch keinen freien Speicherplatz an. Das Festplatten-Dienstprogramm zeigt gelegentlich freien Speicherplatz an, aber der Wert ist oft falsch und zeigt nicht, wo sich der freie Speicherplatz in Bezug auf die anderen Partitionen befindet

Wo wird also der freie Speicherplatz angezeigt? Hier sind einige Möglichkeiten, um festzustellen, wo sich der freie Speicherplatz befindet.

  1. Der sudo gpt -r show /dev/disk0Befehl zeigt die logischen Sektorblöcke an, die von jeder Partition verwendet werden. Der Befehl zeigt auch den freien Speicherplatz zwischen den einzelnen Partitionen in logischen Sektorblockeinheiten an. In den Tagen von OS X konnten Sie diesen Befehl auf den Startlaufwerken ausführen. Ab macOS muss dazu der Systemintegritätsschutz (SIP) deaktiviert werden.
  2. Verwenden Sie den Befehl, um die Start- und Größenbytewerte diskutil info -plist disk0s#der Partitionsnummer abzurufen . #Sie müssen den Befehl für jede Partition auf einem Laufwerk wiederholen. Als Nächstes können Sie eine Tabelle kompilieren, die der Ausgabe des gpt -r show /dev/disk0Befehls ähnelt. Grundsätzlich ist freier Speicherplatz jeder Speicherplatz, der keiner Partition, dem Protected Master Boot Record (PMBR) und den GUID-Partitionstabellen (GPT) zugeordnet ist.
  3. Schreiben Sie ein BASH-Skript, das Weg Nummer 2 automatisieren würde. Ein kostenloses Skript kann von dieser Seite heruntergeladen werden . Angenommen, Ihre Downloads gelangen in den Standardordner Downloads, können Sie den freien Speicherplatz erhalten, indem Sie den unten gezeigten Befehl eingeben. Hinweis: Sie müssen SIP nicht eingeben sudooder deaktivieren.

    ~/Downloads/driveinfo-1.0.1/driveinfo -r disk0
    

Ein Hinweis zur Verwendung von APFS-Containerpartitionen

Es ist nicht normal, zwei APFS-Containerpartitionen auf demselben Laufwerk zu haben. Dadurch wird einer der Hauptgründe für die Schaffung des APFS zunichte gemacht. Wenn Sie zwei verschiedene APFS-Volumes benötigen, sollten Sie jedes Volume in derselben APFS-Containerpartition erstellen. Dies gilt auch, wenn Sie zwei oder mehr verschiedene Versionen von High Sierra und/oder Mojave installiert haben möchten.

Wenn Sie ein APFS-Volume entfernen möchten, wird der freie Speicherplatz automatisch an den APFS-Container zurückgegeben. Sie sollten keinen Befehl eingeben müssen sudo diskutil apfs resizeContainer disk0s# 0. Wenn Sie ein Volume löschen, das eine Version von macOS enthält, müssen einige zusätzliche Aufräumarbeiten durchgeführt werden. Die notwendigen Bereinigungsschritte sind in der akzeptierten Antwort auf die Frage: macOS aus einem APFS-Container entfernen?

Vielen Dank für eine so ausführliche Erklärung. Ich hatte gehofft, meine kleine Festplatte von 100 G auf 150 G zu bringen, indem ich 50 G verwende, die jetzt kostenlos sind. Der Befehl, den Sie gegeben haben, ändert die Größe der 350-G-Festplatte auf 400 G. Ich habe es versucht sudo diskutil apfs resizeContainer disk0s3 0, aber es wird angezeigt, dass nicht genügend Speicherplatz vorhanden ist. Ich denke, ich werde die ganze Fahrt atomisieren und von vorne anfangen, wenn ich es heute Abend nicht herausfinden kann :)
@ Adrian: Ich habe meine Frage bearbeitet, um besser zu erklären, warum Ihr Ansatz nicht funktioniert.

Ich verfolge nicht viel von der vorherigen Diskussion. Es sieht so aus, als hätten Sie genug Platz, um sich zu konsolidieren.

  1. Holen Sie sich Ihre 50G auf der ersten physischen Partition zurück.
    diskutil ap resizeContainer disk0s2 0

  2. Stellen Sie die logische Partition, die Sie behalten möchten, aus dem zweiten APFS-Container in einer zusätzlichen logischen Partition im ersten Container wieder her.
    asr restore --source /dev/disk2s1 --target /dev/disk1.

    Dies kann einige Zeit dauern, wenn eine Defragmentierung erforderlich ist. (Wenn Ihnen das (während der Inversion) Probleme bereitet, müssen Sie möglicherweisediskutil ap deleteVolume die Preboot-, VM- und Wiederherstellungspartitionen auf dem zweiten Container nukleieren ( ). Ich gehe davon aus, dass das für Sie in Ordnung ist, und ich habe nicht wirklich gesehen, dass dies ein Problem ist für einige Zeit.)

  3. Hängen Sie Ihre neue logische Partition „Mojave Beta“ ein, die Sie jetzt auf dem ersten Container erstellen . Stellen Sie sicher, dass es richtig aussieht.

  4. Entfernen Sie den zweiten APFS-Container:
    diskutil ap deleteContainer disk0s3; Entfernen Sie dann die physische Partition vollständig: diskutil eraseVolume free free disk0s3.

  5. Und schließlich fordern Sie den Rest der Festplatte auf dem ersten (einzigen) APFS-Container noch einmal zurück:
    diskutil ap resizeContainer disk0s2 0.

NEIN? Übersehe ich etwas?

Wäre Mojave Beta noch bootfähig?
Es sollte sein, obwohl Sie möglicherweise verwenden müssen, systemsetup -setstartupdiskum die "Rollen" des Volumes zu wechseln (es kann ein Hit-and-Miss sein, wenn Sie das Startvolume über die Systemeinstellungen ändern). Siehe eclecticlight.co/2018/08/30/…

Zu Ihrer Information, Sie müssen den Container angeben (in Ihrem Fall "disk2", also sollte der Befehl lauten:

Um beispielsweise die Größe der Mojave Beta-Festplatte (Festplatte2) zu erhöhen:

sudo diskutil apfs resizeContainer disk2 150G

Nicht sicher, ob Sie ein weiteres Volume verkleinern müssen oder nicht.

Auch Ihre Time Capsule-Einstellungen sollten überprüft werden, um sicherzustellen, dass Sie nicht zu viel Verlauf haben (um den Speicherplatz zu begrenzen).