Linux: 2TB以上あるUSBハードディスクを認識させる方法


私の自宅のUSB ハードディスク・・・無駄に、6TB もありまして・・・ あぁ・・Linuxの外付けハードディスクとして活用しよう。。USBハードディスクなんで、挿せばなんとかなる・・・と思いきや・・全く認識していない・・。

ということで、Linux上の6TBのディスクとして認識させる為の経緯を下記に記載します。しんどかった。。

ちなみに、細かい話しはよくわからんのですが、Linuxの現在のファイルシステムでは、2TB以上のディスクを認識できないらしく、新たに、2Tを超えるようなHDDを扱えるようGPT ( GUID Partition Table ) と呼ばれる方式が策定されたとのことです。知らなかった。

じゃあ、いままでやってた、fdisk とかは利用できないの?ってはい、出来ません!(断言)

2TB 以上のHDDを認識させる為に、新たに、parted というユティリティを利用するようです。

早速ですが、その証跡を書きます。

parted -l で確認

[root@server01~]#  parted -l
モデル: BUFFALO HD-QLSU2/R5 1 (scsi)
ディスク /dev/sda: 6001GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了    サイズ  ファイルシステム  名前                  フラグ
 1    20.5kB  210MB   210MB   fat32             EFI System Partition  boot
 2    211MB   6001GB  6001GB                    Usb HD

parted /dev/sda

[root@server01~]# parted /dev/sda
GNU Parted 2.1
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) help                                                             
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  check NUMBER                  ファイルシステムの簡単なチェックする
  cp [転送元デバイス] 転送元NUMBER 転送先NUMBER
                    ファイルシステムを他のパーティションにコピーする
  help [コマンド]               ヘルプ表示。コマンド指定でそのヘルプを表示
  mklabel,mktable ラベルの種類  新しいラベル(パーティションテーブル)を作る
  mkfs NUMBER ファイルシステムの種類
                    指定した種類のファイルシステムを作る
  mkpart パーティションの種類 [ファイルシステムの種類] 開始 終了
                    パーティションを作る
  mkpartfs パーティションの種類 ファイルシステムの種類 開始 終了
                    パーティションとファイルシステムを作る
  move NUMBER 開始 終了         パーティションを移動する
  name NUMBER 名前              パーティションに名前をつける
  print [devices|free|list,all|NUMBER]
                     パーティションテーブルや、利用可能なデバイス、空き領域、
                     見つかった全てのパーティション、あるいは特定のパーティションについて表示する
  quit                          プログラムを終了する
  rescue 開始 終了              開始、終了で指定した範囲付近にあるパーティションを復活させる
  resize NUMBER 開始 終了       パーティションとその中のファイルシステムをリサイズする
  rm NUMBER                     パーティションを削除する
  select デバイス               操作するデバイスを選択
  set NUMBER フラグ 状態        ファイルシステムのフラグと状態を設定する
  toggle [NUMBER [FLAG]]        パーティションのフラグの状態を反転する
  unit UNIT                     デフォルトの単位を UNIT にする
  version                       GNU Parted のバージョンと著作権情報を表示

ラベルを設定します

[root@server01~]#  parted /dev/sda                                                                                                      
GNU Parted 2.1
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) mklabel gpt                                                                                                                   
警告: いま存在している /dev/sda のディスクラベルは破壊され、このディスクの全データが失われます。続行しますか?
はい(Y)/Yes/いいえ(N)/No? Y          

パーティションが消えていることを確認

[root@server01~]# parted -l
モデル: BUFFALO HD-QLSU2/R5 1 (scsi)
ディスク /dev/sda: 6001GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

[root@server01~]# parted
GNU Parted 2.1
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) unit MB                                                          
(parted) print                                                            
モデル: BUFFALO HD-QLSU2/R5 1 (scsi)
ディスク /dev/sda: 6001042MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

パーティションの作成

(parted) unit GB                                                                                                                       
(parted) print                                                            
モデル: BUFFALO HD-QLSU2/R5 1 (scsi)
ディスク /dev/sda: 6001GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

(parted) mkpart                                                                                                                        
パーティションの名前?  []? usbhdd                                         
ファイルシステムの種類?  [ext2]? ext4                                                                                                  
開始? 0                                                                   
終了? 6000                                                                
(parted) p                                                                
モデル: BUFFALO HD-QLSU2/R5 1 (scsi)
ディスク /dev/sda: 6001GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了    サイズ  ファイルシステム  名前    フラグ
 1    0.00GB  6000GB  6000GB                    usbhdd

パーティションが生成されているか確認する(ファイルシステムが生成されていないことも確認)

[root@server01~]# parted -l
モデル: BUFFALO HD-QLSU2/R5 1 (scsi)
ディスク /dev/sda: 6001GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了    サイズ  ファイルシステム  名前    フラグ
 1    1049kB  6000GB  6000GB                    usbhdd

ext4 でフォーマット開始

[root@server01~]# mkfs -t ext4 /dev/sda                                                                                                 
mke2fs 1.41.12 (17-May-2010)
/dev/sda is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
366280704 inodes, 1465098240 blocks
73254912 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
44712 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

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

再度領域を確認

[root@server01~]# parted -l
モデル: BUFFALO HD-QLSU2/R5 1 (scsi)
ディスク /dev/sda: 6001GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: loop

番号  開始   終了    サイズ  ファイルシステム  フラグ
 1    0.00B  6001GB  6001GB  ext4

マウント領域を作り、マウントします

[root@server01data]# mkdir -p /usr/local/data; chmod -Rf 775 /usr/local/data
[root@server01data]# mount -t ext4 /dev/sda /usr/local/data/

マウントされたか確認します

できているっぽいです

[root@server01~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg_nas01-lv_root   50G   12G   36G  25% /
tmpfs                         497M  232K  497M   1% /dev/shm
/dev/sdb1                     485M   33M  427M   8% /boot
/dev/mapper/vg_nas01-lv_home   59G  182M   56G   1% /home
/dev/sda                      5.4T  186M  5.1T   1% /usr/local/data

このままですと、再起動した際、マウントが外れてしまうので、/etc/fstab に設定を入力する必要があります

バルクIDを求めます(UUID?)

[root@server01~]# blkid /dev/sda                                                                                                       
/dev/sda: UUID="e38f3397-6259-4627-a956-a7a7018ef5b7" TYPE="ext4"

取得したuuidを、/etc/fstab に設定します

[root@server01~]# echo 'UUID=e38f3397-6259-4627-a956-a7a7018ef5b7 /usr/local/data                   ext4    defaults        1 2' >> /etc/fstab

[root@server01~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sun May 11 17:53:18 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_nas01-lv_root /                       ext4    defaults        1 1
UUID=e950f35e-7c89-42b9-8eea-a47479a215e6 /boot                   ext4    defaults        1 2
/dev/mapper/vg_nas01-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg_nas01-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sdb1               /data                   ext3    defaults        1 2
UUID=e38f3397-6259-4627-a956-a7a7018ef5b7 /usr/local/data                   ext4    defaults        1 2

上記作業で、OSを再起動したとしても自動的にマウントするようになります。ぜひお試しあれ!!