schedule2021-04-15

AWS EC2のMacインスタンスで容量が足らずにXCodeがインストールできないときの解決方法

開発用にAWS EC2でMacインスタンスを借りました。 セットアップの際にXCodeのインストールで躓いたので解消方法をメモしておきます。

Amazon EC2 Mac Instanceの利用方法はこちらの記事を参考にしました。

XCodeをインストールしようとするとこのように十分な空き容量がない旨のメッセージが出てインストールができない。

xcode

Mac App Storeからだと必要以上に容量を求められるらしいので、developer.apple.comから直接インストーラーをダウンロードしてみましたが、こちらもダメでした。

xip

インスタンスを作成する際に200GBのボリュームを指定しています。 しかし、ディスクの空き容量を確認すると/dev/disk2s4s1 60Giと小さく、割り当てたはずのボリュームが認識していないようです。

% df -h
Filesystem       Size   Used  Avail Capacity iused      ifree %iused  Mounted on
/dev/disk2s4s1   60Gi   14Gi   22Gi    40%  568975  626528225    0%   /
devfs           191Ki  191Ki    0Bi   100%     662          0  100%   /dev
/dev/disk2s6     60Gi   20Ki   22Gi     1%       0  627097200    0%   /System/Volumes/VM
/dev/disk2s2     60Gi  278Mi   22Gi     2%     725  627096475    0%   /System/Volumes/Preboot
/dev/disk2s5     60Gi  244Ki   22Gi     1%      14  627097186    0%   /System/Volumes/Update
/dev/disk2s1     60Gi   23Gi   22Gi    52%  475239  626621961    0%   /System/Volumes/Data
map auto_home     0Bi    0Bi    0Bi   100%       0          0  100%   /System/Volumes/Data/home
/dev/disk3s2    240Mi  240Mi    0Bi   100%     356 4294966923    0%   /Volumes/Google Chrome

Resize the APFS drive to use all available storage

こちらの記事の手順でAPFS(Apple File System)の割り当てを変更して全てのボリュームを利用できるようにしていきます。 Resize the APFS drive to use all available storageの項からの手順です。

以下の4つのステップで進めます。

  1. 使っているAPFSコンテナを特定する
  2. (オプション)インスタンスのスナップショットを作成する
  3. ディスクの修復をする
  4. APFSコンテナのリサイズをする

1. 使っているAPFSコンテナを特定する

diskutil list physical external

このコマンドでディスクの中でも物理の外付けディスクを確認できる。

% diskutil list physical external
/dev/disk0 (external, physical):
   #:       TYPE NAME             SIZE     IDENTIFIER
   0: GUID_partition_scheme      *214.7 GB   disk0
   1:        EFI ⁨EFI⁩              209.7 MB   disk0s1
   2: Apple_APFS ⁨Container disk2⁩   64.2 GB   disk0s2 <- これ

disk0s2がAPFSです。64.2 GBしか認識していないことがわかる。

/dev/disk0をリサイズします。

2. (オプション)インスタンスのスナップショットを作成する

ディスクシステムの設定を変える前にスナップショットやAMIを作成することをお勧めします。

snapshot

3. ディスクの修復をする

% diskutil repairDisk <target disk>

# ex,
% sudo diskutil repairDisk /dev/disk0        

リサイズする前にdiskutil repairDisk <target disk>コマンドを実行してパーティションを修復します。

% sudo diskutil repairDisk /dev/disk0        
Repairing the partition map might erase disk0s1, proceed? (y/N) y
Started partition map repair on disk0
Checking prerequisites
Checking the partition list
Adjusting partition map to fit whole disk as required
Did grow entire partition map
Checking for an EFI system partition
Checking the EFI system partition's size
Checking the EFI system partition's file system
Checking the EFI system partition's folder content
Checking all HFS data partition loader spaces
Checking booter partitions
Reviewing boot support loaders
Checking Core Storage Physical Volume partitions
The partition map appears to be OK
Finished partition map repair on disk0

4. APFSコンテナのリサイズをする

すべての準備が整ったので、APFSコンテナのサイズ変更プロセスを開始できます。 このコマンドを入力するだけです。

% sudo diskutil apfs resizeContainer disk0s2 0

このコマンドで、システムは使用可能なすべてのストレージを使えるようにします。 0の代わりに特定の値を設定して利用するサイズを指定できます。

% sudo diskutil apfs resizeContainer disk0s2 0
Started APFS operation
Aligning grow delta to 150,323,855,360 bytes and targeting a new physical store size of 214,538,608,640 bytes
Determined the maximum size for the targeted physical store of this APFS Container to be 214,537,580,544 bytes
Resizing APFS Container designated by APFS Container Reference disk2
The specific APFS Physical Store being resized is disk0s2
Verifying storage system
Using live mode
Performing fsck_apfs -n -x -l /dev/disk0s2
Checking the container superblock
Checking the EFI jumpstart record
Checking the space manager
Checking the space manager free queue trees
Checking the object map
Checking volume
Checking the APFS volume superblock
The volume Macintosh HD - Data was formatted by newfs_apfs (945.275.7) and last modified by apfs_kext (1677.60.23)
Checking the object map
Checking the snapshot metadata tree
Checking the snapshot metadata
Checking the extent ref tree
Checking the fsroot tree
Checking volume
Checking the APFS volume superblock
The volume Preboot was formatted by diskmanagementd (945.275.7) and last modified by apfs_kext (1677.60.23)
Checking the object map
Checking the snapshot metadata tree
Checking the snapshot metadata
Checking the extent ref tree
Checking the fsroot tree
Checking volume
Checking the APFS volume superblock
The volume Recovery was formatted by diskmanagementd (945.275.7) and last modified by apfs_kext (1677.60.23)
Checking the object map
Checking the snapshot metadata tree
Checking the snapshot metadata
Checking the extent ref tree
Checking the fsroot tree
Checking volume
Checking the APFS volume superblock
The volume Macintosh HD was formatted by storagekitd (1677.81.1) and last modified by apfs_kext (1677.81.1)
Checking the object map
Checking the snapshot metadata tree
Checking the snapshot metadata
Checking snapshot 1 of 1 (com.apple.os.update-35C699ADD439C653A3B09EBD8A30FBD366881244EB7C82207A2E135362FCCB7F)
Checking the extent ref tree
Checking the fsroot tree
Checking the file extent tree
Checking volume
Checking the APFS volume superblock
The volume Update was formatted by com.apple.Mobile (1677.81.1) and last modified by apfs_kext (1677.60.23)
Checking the object map
Checking the snapshot metadata tree
Checking the snapshot metadata
Checking the extent ref tree
Checking the fsroot tree
Checking volume
Checking the APFS volume superblock
The volume VM was formatted by com.apple.Mobile (1677.81.1) and last modified by apfs_kext (1677.60.23)
Checking the object map
Checking the snapshot metadata tree
Checking the snapshot metadata
Checking the extent ref tree
Checking the fsroot tree
Verifying allocated space
The volume /dev/disk0s2 appears to be OK
Storage system check exit code is 0
Growing APFS Physical Store disk0s2 from 64,214,753,280 to 214,538,608,640 bytes
Modifying partition map
Growing APFS data structures
Finished APFS operation

サイズの確認

サイズが変更できたか確認します。

% diskutil list physical external
/dev/disk0 (external, physical):
   #:                  TYPE NAME               SIZE       IDENTIFIER
   0: GUID_partition_scheme                   *214.7 GB   disk0
   1:                   EFI ⁨EFI⁩                209.7 MB   disk0s1
   2:            Apple_APFS ⁨Container disk2⁩    214.5 GB   disk0s2

APFSコンテナが64.2 GBから214.5GBに変わっていました。

% df -h
Filesystem       Size   Used  Avail Capacity iused      ifree %iused  Mounted on
/dev/disk2s4s1  200Gi   14Gi   68Gi    18%  568975 2094534625    0%   /
devfs           195Ki  195Ki    0Bi   100%     674          0  100%   /dev
/dev/disk2s6    200Gi   48Gi   68Gi    42%      48 2095103552    0%   /System/Volumes/VM
/dev/disk2s2    200Gi  278Mi   68Gi     1%     725 2095102875    0%   /System/Volumes/Preboot
/dev/disk2s5    200Gi  244Ki   68Gi     1%      14 2095103586    0%   /System/Volumes/Update
/dev/disk2s1    200Gi   69Gi   68Gi    51% 1766297 2093337303    0%   /System/Volumes/Data
map auto_home     0Bi    0Bi    0Bi   100%       0          0  100%   /System/Volumes/Data/home
/dev/disk3s2    240Mi  240Mi    0Bi   100%     356 4294966923    0%   /Volumes/Google Chrome
/dev/disk0s1    197Mi  5.5Ki  197Mi     1%       0          0  100%   /private/var/tmp/MPOOL4FS
/dev/disk4s1    130Mi  110Mi   21Mi    85%     693 4294966586    0%   /Volumes/Visual Studio for Mac Installer

dfコマンドでもSizeが変わっていることが確認できます。 (後日とったのでUsedなど細かい数字は一致しません)

XCodeのインストール

ストレージが増えたことでMac App StoreからXCodeがインストール出来ました。

以上。