gdisk/mkfsコマンドで2TB以上の大容量HDDをフォーマットする方法
前書き:何故HDDを2TBまでしか認識しないか
本記事では、gdisk/mkfsコマンドを用いて2TB超のHDDをフォーマットする方法を紹介します。
前提知識ですが、HDDは2TBの壁が存在します。HDDは、MBR(Master Boot Record)形式を用いて、パーティション(領域)をセクター単位で管理しています。通常のHDDは、セクターサイズが512Byteであり、パーティション内のセクター開始位置とセクター数の管理には4Byte(32bit)を使用します。この制約によって、「最大2TB(アクセスできるセクター数×セクターサイズ = 2の32乗×512)」までしか管理できません。
つまり、MBRにしか対応していないコマンド(例:fdisk)でHDDフォーマットを実行した場合、2TBまでしか認識しません。2TB以上のHDDを取り扱う場合は、gdiskコマンドを使用します。gdiskは、GPT(GUID Partition Table)形式でHDD領域を管理します。GPTは、セクター管理に8Byte(64bit)を使用できるため、最大8ZB(=2の64乗×512Byte)まで管理できます。一般的なHDDサイズ(2TB〜8TB)であれば、確実にフォーマットできます。
検証環境
Debian10環境とWestern DigitalのHDD(4TB、3.5インチ)を使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
_,met$$$$$gg. nao@debian ,g$$$$$$$$$$$$$$$P. ---------- ,g$$P" """Y$$.". OS: Debian GNU/Linux 10 (buster) x86_64 ,$$P' `$$$. Kernel: 4.19.67 ',$$P ,ggs. `$$b: Uptime: 1 hour, 44 mins `d$$' ,$P"' . $$$ Packages: 2282 (dpkg) $$P d$' , $$P Shell: fish 3.0.2 $$: $$. - ,d$$' Resolution: 2560x1080 $$; Y$b._ _,d$P' DE: Cinnamon 3.8.8 Y$$. `.`"Y$$$$P"' WM: Mutter (Muffin) `$$b "-.__ WM Theme: (Albatross) `Y$$ Theme: Blackbird [GTK2/3] `Y$$. Icons: hicolor [GTK2/3] `$$b. Terminal: gnome-terminal `Y$$b. CPU: AMD Ryzen 7 3800X 8- (16) @ 3.900GHz `"Y$b._ GPU: NVIDIA NVIDIA Corporation TU107 `""" Memory: 37627MiB / 64404Mi |
gdiskのインストール
以下の手順でgdiskコマンドをインストール可能です。また、HDDがどのPATH(/dev/sd*)で認識されているかを調べるために、hwinfoコマンドも一緒にインストールします。
1 2 |
$ sudo apt install gdisk $ sudo apt install hwinfo (注釈):ハードウェア情報を調べるコマンド |
フォーマット対象のHDDを調査する方法
フォーマット対象のPATH情報(/dev/sd*のいずれか)を明確にしなければ、OSが入ったSSDやHDDを誤って消去する可能性があります。そこで、hwinfoコマンドを用いて、HDDの型番情報から、フォーマット対象のHDD PATHを明確にします。
1 2 3 4 5 |
$ sudo hwinfo --disk --short disk: /dev/sdb WDC WD40EZRZ-00G /dev/sdc WDC WDS200T2B0B /dev/sda WDC WD40EZRZ-00G |
hwinfo出力結果のWDはWestern Digitalの略で、検証環境ではWD社のデバイスが3個認識されている事になります。TOSHIBAやSeagateのHDDも、会社名が出力されます。上記の情報(型番)だけで、フォーマット対象が明確にならなかった場合は、shortオプションを削除すれば詳細な情報が得られます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
$ sudo hwinfo --disk 47: IDE 600.0: 10600 Disk [Created at block.245] Unique ID: WZeP.L6meSe08MpF Parent ID: vTuk.bD2u07ABOQ0 SysFS ID: /class/block/sdb SysFS BusID: 6:0:0:0 SysFS Device Link: /devices/pci0000:00/0000:00:01.2/0000:01:00.0/0000:02:0a.0/0000:06:00.0/ata7/host6/target6:0:0/6:0:0:0 Hardware Class: disk Model: "WDC WD40EZRZ-00G" Vendor: "WDC" Device: "WD40EZRZ-00G" Revision: "0A80" Serial ID: "WD-WCC7K4KTAKFF" Driver: "ahci", "sd" Driver Modules: "ahci", "sd_mod" Device File: /dev/sdb Device Files: /dev/sdb, /dev/disk/by-path/pci-0000:06:00.0-ata-6, /dev/disk/by-id/wwn-0x50014ee2bc1287b7, /dev/disk/by-id/ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K4KTAKFF Device Number: block 8:16-8:31 Geometry (Logical): CHS 486401/255/63 Size: 7814037168 sectors a 512 bytes Capacity: 3726 GB (4000787030016 bytes) Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #29 (SATA controller) 48: IDE d00.0: 10600 Disk [Created at block.245] Unique ID: _kuT.+VX7mUETFg8 Parent ID: IluS.Zk47+4RfXI1 SysFS ID: /class/block/sdc SysFS BusID: 13:0:0:0 SysFS Device Link: /devices/pci0000:00/0000:00:08.3/0000:0b:00.0/ata14/host13/target13:0:0/13:0:0:0 Hardware Class: disk Model: "WDC WDS200T2B0B" Vendor: "WDC" Device: "WDS200T2B0B" Revision: "90WD" Serial ID: "192489800726" Driver: "ahci", "sd" Driver Modules: "ahci", "sd_mod" Device File: /dev/sdc Device Files: /dev/sdc, /dev/disk/by-id/wwn-0x5001b448b8e26e9a, /dev/disk/by-id/ata-WDC_WDS200T2B0B_192489800726, /dev/disk/by-path/pci-0000:0b:00.0-ata-6 Device Number: block 8:32-8:47 Geometry (Logical): CHS 243201/255/63 Size: 3907029168 sectors a 512 bytes Capacity: 1863 GB (2000398934016 bytes) Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #10 (SATA controller) 49: IDE 500.0: 10600 Disk [Created at block.245] Unique ID: 3OOL.Kn_944YJ_eE Parent ID: vTuk.bD2u07ABOQ0 SysFS ID: /class/block/sda SysFS BusID: 5:0:0:0 SysFS Device Link: /devices/pci0000:00/0000:00:01.2/0000:01:00.0/0000:02:0a.0/0000:06:00.0/ata6/host5/target5:0:0/5:0:0:0 Hardware Class: disk Model: "WDC WD40EZRZ-00G" Vendor: "WDC" Device: "WD40EZRZ-00G" Revision: "0A80" Serial ID: "WD-WCC7K4KTA98E" Driver: "ahci", "sd" Driver Modules: "ahci", "sd_mod" Device File: /dev/sda Device Files: /dev/sda, /dev/disk/by-id/ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K4KTA98E, /dev/disk/by-uuid/6cefaadb-8064-4177-be4d-4c96c50985ee, /dev/disk/by-id/wwn-0x50014ee2bc1263df, /dev/disk/by-path/pci-0000:06:00.0-ata-5 Device Number: block 8:0-8:15 Geometry (Logical): CHS 486401/255/63 Size: 7814037168 sectors a 512 bytes Capacity: 3726 GB (4000787030016 bytes) Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #29 (SATA controller) |
hwinfoコマンドではなく、fdiskコマンドでも詳細な情報を取得できます。以下のfdiskコマンドは、別環境の結果なので、出力例として読んでください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
$ sudo fdisk -l (省略) Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors Disk model: Tech Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors Disk model: Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0xed79b4be Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 1953525167 1953523120 931.5G 83 Linux Disk /dev/sdc: 119.2 GiB, 128035676160 bytes, 250069680 sectors Disk model: TS128GESD400K Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 33553920 bytes Disklabel type: dos Disk identifier: 0x3eaccbac Device Boot Start End Sectors Size Id Type /dev/sdc1 8192 532479 524288 256M c W95 FAT32 (LBA) /dev/sdc2 532480 250069679 249537200 119G 83 Linux |
gdiskコマンドによるパーティション作成
私の環境では、フォーマット対象のHDDは/dev/sdbです。gdiskコマンドを起動すると、GPT形式ではなくMBR形式でHDDが管理されているため、警告が出ます。今回のフォーマットでは、MBRをGPTに変換することが目的ですから、この警告は無視します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ sudo gdisk /dev/sdb GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present *************************************************************** Found invalid GPT and valid MBR; converting MBR to GPT format in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if you don't want to convert your MBR partitions to GPT format! *************************************************************** |
gdiskは、対話式で操作する必要があります。以降の手順では、
- d:既存パーティションの削除
- o:新しいGPT(GUID Partition Table)を作成
- n:新しいパーティションを作成
- p:現在のパーティションを確認
- w:ディスクに変更を書き込む
を順に実施します。既存パーティションは全て削除し、新しいパーティションは1個だけ作成します。選択肢は基本的にYesかDefault値で回答します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
$ sudo gdisk /dev/sdb Command (? for help): d 注釈):パーティションの消去 Using 1 Command (? for help): d No partitions (注釈):パーティションを全て削除済み Command (? for help): o (注釈):GPT作成 This option deletes all partitions and creates a new protective MBR. Proceed? (Y/N): y Command (? for help): n (注釈):新しいパーティションの作成 Partition number (1-128, default 1): (注釈):デフォルト値とするため、Enter First sector (34-7814037134, default = 2048) or {+-}size{KMGTP}: (注釈):デフォルト値とするため、Ente Last sector (2048-7814037134, default = 7814037134) or {+-}size{KMGTP}: (注釈):デフォルト値とするため、Enter Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): (注釈):デフォルト値とするため、Enter Changed type of partition to 'Linux filesystem' Command (? for help): p (注釈):パーティションの確認 Disk /dev/sdb: 7814037168 sectors, 3.6 TiB Model: WDC WD40EZRZ-00G Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): 7BABC8AE-DFD4-4249-9877-E00C4E8A169C Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 7814037134 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 7814037134 3.6 TiB 8300 Linux filesystem Command (? for help): w (注釈):上記手順をHDDに反映 Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y (注釈):最終確認 OK; writing new GUID partition table (GPT) to /dev/sdb. The operation has completed successfully. |
パーティションをext4形式でフォーマット
gdiskコマンドによって、/dev/sdb1パーティションが作成されています。このパーティションをmkfsコマンドによって、ext4ファイルシステムでフォーマットします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ sudo mkfs -t ext4 /dev/sdb1 mke2fs 1.44.5 (15-Dec-2018) /dev/sdb1 contains a ext4 file system last mounted on Sun Sep 29 13:59:01 2019 Proceed anyway? (y,N) y Creating filesystem with 976754385 4k blocks and 244195328 inodes Filesystem UUID: fecb3b9a-af4a-4a09-abdd-3fa633beaaa6 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done |
ここまでの手順で、フォーマットされたHDDが使用可能な状態になります。
ロシア人と国際結婚した地方エンジニア。
小学〜大学院、就職の全てが新潟。
大学の専攻は福祉工学だったのに、エンジニアとして就職。新卒入社した会社ではOS開発や半導体露光装置ソフトを開発。現在はサーバーサイドエンジニアとして修行中。HR/HM(メタル)とロシア妻が好き。サイトに関するお問い合わせやTwitterフォローは、お気軽にどうぞ。
2件のフィードバック
[…] gdisk/mkfsコマンドで2TB以上のHDDをフォーマットする方法 […]
[…] gdisk/mkfsコマンドで2TB以上の大容量HDDをフォーマットする方法 […]