StatsBeginner: 初学者の統計学習ノート

統計学およびR、Pythonでのプログラミングの勉強の過程をメモっていくノート。たまにMacの話題。

Macのパーティションがおかしくなった場合の対処

Mac OS(最近はmacOSというらしいが)のディスクユーティリティでパーティションを変更しようとするとき、よくわからない現象に直面することがたまによくあります。
下記の記事のように、一部のボリュームが消してくても消せない(マイナスボタンがない)状態になったりします。
mac GUIで結合できないパーティションを結合する – MY ROBOTICS


今回、外付けHDDのパーティションをいじろうとしたらそれに陥ったので、ターミナルからdiskutilコマンドで操作してみたのですが、それでも変なことがおきました。
具体的には、

$ diskutil list

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *4.0 TB     disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2:                  Apple_HFS TM_MBP2016_Portable     1.0 TB     disk2s2
   3:                  Apple_HFS Untitled                699.9 GB   disk2s4
   4:                  Apple_HFS Strage_main             2.3 TB     disk2s5


というふうに、確認すると(diskutil listの出力結果はexternalのところだけ貼ってます)、disk2という外付けHDDの中にEFI(システム側で必要なやつ?)を入れて4つのパートがあって、足したら4TBになります。これのうち、disk2s5だけ残してdisk2s2とdisk2s4を削除し、結合して(EFIを含めて)4TB使えるようにしたかったわけです。要するにパーティションをやめて全部結合するということ。


そこで、

$ diskutil eraseVolume "Free Space" not disk2s2
$ diskutil eraseVolume "Free Space" not disk2s4


というふうにボリュームの消去をしてみたのですが、その結果どうなったかというと、

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *4.0 TB     disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2:                  Apple_HFS Strage_main             2.3 TB     disk2s2


こういうふうに、不要なボリュームは消えてくれました。ディスク全体としては4.0TBあって、残存するボリュームの合計が2.3TB+209.7MBであり、残りがFree Spaceになったのだと思います。
で、現在2.3TBになっているdisk2s2をリサイズしてマックスまで使えるようにしたかったのですが、ディスクユーティリティで見てみると、


f:id:midnightseminar:20200229171848p:plain


こんなふうに、Free Spaceは表示されなくて、全体で2.3TBしかないよということになってしまいました。
そこで、ネットでみた説明を参考にdiskutil resizeVolumeというコマンドをつかって、リサイズ後のサイズを「100%」にしてやってみたのですが、

$ diskutil resizeVolume disk2s2 100%
Resizing to full size (fit to fill)
Started partitioning on disk2s2 Strage_main
Error: -69743: The new size must be different than the existing size


こういう結果になりました。100%だともとのサイズと同一という意味であって、ディスクをマックスまで使うという意味じゃなかったんですねw
なので、具体的に数値で指定してやってみたのですが、たとえば3.9TBに設定したとしても、

$ diskutil resizeVolume /dev/disk2s2 3.9TB
Resizing to 3900000000000 bytes
Started partitioning on disk2s2 Strage_main
Error: -69519: The target disk is too small for this operation, or a gap is required in your partition map which is missing or too small, which is often caused by an attempt to grow a partition beyond the beginning of another partition or beyond the end of partition map usable space


となり、容量が足りませんと出ます。3.9TBにEFIの分を足しても超過するわけではないはずなのですが・・・。
結局、もう調べるのがめんどくさくなったので、
Macのディスクユーティリティーコマンドで外部ストレージをフォーマット - ytooyamaのブログ
を参考に、論理ボリュームではなく物理ディスク全体を消去することにしました。データが全部きえますが、別のディスクにコピーしてあるので後で戻します。

$ diskutil eraseDisk JHFS+ Untitled /dev/disk2


そしたらまぁ、


f:id:midnightseminar:20200229172118p:plain


こんなふうに、4TB使える状態にはなりました(画像はボリューム名をUntitledからStrage_mainに戻したあとのものです)。
Free Spaceと結合して論理ボリュームのサイズをでかくする方法は、後でわかったら追記します。