まんぼう日記

takataka's diary

Linuxで2TB超のHDDを使う

先日久しぶりに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を使う」の方が正確です (^^)