先日久しぶりに18km走を1日2本やりまして,筋肉痛でへろへろなたかたかです.
Ubuntu 14.04 を動かしてる PC に 4TB の HDD を増設したんですが,容量が2TB超なせいで思いのほか手間取ってしまいました.ちうわけでメモ.
まず,HDDを増設してブートし,/dev/disk/by-id を眺めると
lrwxrwxrwx 1 root root 9 12月 3 12:59 ata-WDC_WD4001FAEX-00MJRA0_WD-WCC130238751 -> ../../sdb
となっていて,増設したHDDのデバイスファイルが /dev/sdb であることがわかります.
というわけで,何も考えずに fdisk を起動してみると...
$ sudo fdisk /dev/sdb デバイスは正常な DOS パーティションテーブルも、Sun, SGI や OSF ディスクラベルも 含んでいません 新たに DOS ディスクラベルをディスク識別子 0x1fa1d9fc で作成します。 あなたが書き込みを決定するまで、変更はメモリ内だけに残します。 その後はもちろん以前の内容は修復不可能になります。 警告: パーティションテーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって 正常になります WARNING: The size of this disk is 4.0 TB (4000787030016 bytes). DOS partition table format can not be used on drives for volumes larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID partition table format (GPT). コマンド (m でヘルプ):
警告されちゃいました.GNU parted を使ってパーティションテーブルの形式を GPT にせよ,だそうで.
ふむふむ,と parted を起動して
$ sudo parted /dev/sdb GNU Parted 2.3 /dev/sdb を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) p モデル: ATA WDC WD4001FAEX-0 (scsi) ディスク /dev/sdb: 4001GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt
4TBまるごとを primary パーティションとしようすると...
(parted)mkpart primary 0 4001GB 警告: 操作の結果できるパーティションはアライメントが正しくないためにパフォーマンスがでません。
とか言われちゃいました.どないしたらええんかなと調べて,こんな記事を発見:
http://ymotongpoo.hatenablog.com/entry/20090930/1254290749
mkpart の「開始」と「終了」を % 使って書くと,アライメントを適当に調整してくれるみたいです.
(parted) mkpart primary ファイルシステムの種類? [ext2]? ext4 開始? 0% 終了? 100% (parted) p モデル: ATA WDC WD4001FAEX-0 (scsi) ディスク /dev/sdb: 4001GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 1049kB 4001GB 4001GB ext4 primary
こんな感じで,よきにはからってくれました.
(parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
お次は mkfs です.ファイルシステムは ext4 でいくことにします.
$ sudo mkfs.ext4 /dev/sdb1 mke2fs 1.42.9 (4-Feb-2014) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 244195328 inodes, 976754176 blocks 48837708 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 29809 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group 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 (32768 blocks): done Writing superblocks and filesystem accounting information: done
あとは,/etc/fstab に書いて mount するだけ.デバイスファイル名のかわりに UUID で /etc/fstab を書くために,/dev/sdb1 のUUID を調べます.blkid コマンドを使えばok.
$ sudo blkid /dev/sdb1: UUID="ほげ" TYPE="ext4"
blkidは,sudoなしで実行すると何も出力してくれないので注意.上記のUUIDを使って /etc/fstab に
UUID=ほげ /hoge ext4 rw 0 0
みたいな行を追加し,マウントポイントを作成して手動でマウントしてみます.
$ sudo mkdir /hoge $ sudo mount /hoge $ mount /dev/sdb1 on /hoge type ext4 (rw)
ちゃんとマウントできてます.これでおっけー.
余談
ちょうど昨日の授業でB(バイト)とか2進接頭辞とかの話をしたとこやったんで,余談.df コマンドで容量を表示させてみました.
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sdb1 3.6T 69M 3.4T 1% /data $ df -H Filesystem Size Used Avail Use% Mounted on /dev/sdb1 4.0T 72M 3.8T 1% /data
-H やと1000を乗数とするのでカタログスペック通り4TB.でも,-h で1024を乗数として見ると 3.6TB.後者は 3.6TiB っていう方がよいのですが,このdf コマンドはまだ2進接頭辞に対応してないみたいですな.
2進接頭辞 - Wikipedia SI接頭辞 - Wikipedia
というわけで,ほんまはこの記事のタイトルは「Linuxで2TiB超のHDDを使う」の方が正確です (^^)