あと、今までHDDのセクターサイズとか意識せずにパーティショニングとかしていたので、セクターサイズに合ったパーティショニングができているかきちんと確認する意味も込めてやってみた。
HDDのつなぎ変え
あらかじめ使っていたHDDを外して、新しいHDDにつなぎ替えるときは、fstabで外すHDDの設定をコメントアウトしておく。# vim /etc/fstab ... # UUID=xxxx... ←#をつけて、コメントアウトしておく。 ...
もしコメントアウトし忘れると、OSがGUIモードで立ち上がらない。この時は、rootでログインして、fstabを編集、rebootでOSを立ち上げることになる。ことになるというか、忘れていたので、CUIでfstabを編集することになった。
OSをシャットダウンして、新たに追加したいHDDを繋いで、PCを起動する。新しく繋いだHDDのデバイスファイル名を確認する。デバイスファイルに存在していて、mountで表示されないのが新しく繋いだHDDのデバイスファイル名ということになる。以下の例では、sdeが新しいHDD。
$ ls -l /dev/ | grep sd ... brw-rw---- 1 root disk 8, 48 12月 22 22:06 sdd brw-rw---- 1 root disk 8, 49 12月 22 22:06 sdd1 brw-rw---- 1 root disk 8, 64 12月 22 22:06 sde ...
マウントされているデバイスを確認。
$ mount | grep sd ... /dev/sdd1 on /home/username/Disk/3TB-5 type xfs (rw,relatime,attr2,inode64,noquota) /dev/sdb1 on /home/username/Disk/3TB-1 type xfs (rw,relatime,attr2,inode64,noquota) ...
以下で、フォーマットすることになるので、フォーマットすべきHDDのデバイスファイル名を間違えないこと。
HDDのセクターサイズを確認する
メーカーの製品情報からセクターサイズ(ブロックサイズ)を確認する。今回パーティショニングするST3000DM001のセクターサイズは4096byteであった。新しいHDDでは4KiBセクタ( Advanced Format Technology, AFT)がメジャーだと思う。 古いHDDについては、メーカサイト等で調べる。/sys/block/sdX/queue/physical_block_sizeから調べる方法もあるが、この値は当てにならないという情報も。参考程度に、メモしておく。
物理ブロックサイズを調べる。ST3000DM001の場合、正しい値が返ってきた。
$ cat /sys/block/sdX/queue/physical_block_size 4096
HDDをパーティショニングする
4KiBセクターのHDDをパーティショニングするときは、gdiskとかを使うのが良い。cdiskだとセクターサイズに合ったフォーマットを自動でしてくれないので、使わない。色々調べてみたが、セクターサイズとか確認しなくても、とりあえず、gdiskを使っておけば問題ないという結論に至った。gdiskはデフォルトでインストールされていないので、pacmanからインストールする。
# pacman -S gptfdisk resolving dependencies... looking for conflicting packages... Packages (1) gptfdisk-1.0.1-2 Total Download Size: 0.16 MiB Total Installed Size: 0.67 MiB :: Proceed with installation? [Y/n] y :: Retrieving packages ... gptfdisk-1.0.1-2-x86_64 161.9 KiB 1316K/s 00:00 [#####################################] 100% (1/1) checking keys in keyring [#####################################] 100% (1/1) checking package integrity [#####################################] 100% (1/1) loading package files [#####################################] 100% (1/1) checking for file conflicts [#####################################] 100% (1/1) checking available disk space [#####################################] 100% (1/1) installing gptfdisk [#####################################] 100%
gdiskがインストールできたら、gdiskでHDDをパーティショニングする。
# gdisk /dev/sdX GPT fdisk (gdisk) version 0.8.10 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. 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): 1 First sector (34-5860533134, default = 2048) or {+-}size{KMGTP}: (デフォルトでの値を使うので、何も入力せずエンター) Last sector (2048-5860533134, default = 5860533134) or {+-}size{KMGTP}: (デフォルトでの値を使うので、何も入力せずエンター) Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): (デフォルトでの値を使うので、何も入力せずエンター) Changed type of partition to 'Linux filesystem' Command (? for help): w(ディスクにパーティションテーブルを書き込み) 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/sdX. The operation has completed successfully.
HDDをフォーマットする
mkfs.xfsでHDDをフォーマットする。mkfs.xfsはデフォルトで自動的に、セクターサイズ等を調整してくれるとのとこ。Wikiによると-m crc=1は、停電時にファイルを壊れてもリカバリできるようになるっぽいオプション。「HDDの名前」は好きなように指定する。なくてもよい。もし、以前に使っていたフォマット済みのHDDであったら、-fオプションを付ける。# mkfs.xfs -m crc=1 -L "HDDの名前" /dev/sdX1 meta-data=/dev/sde1 isize=512 agcount=4, agsize=183141597 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=0 data = bsize=4096 blocks=732566385, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=357698, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
HDDをfstabに追加
フォーマットまで終わったら、fstabに追加する。とりあえず、マウントポイントのディレクトリを作成する。自分の環境では、/home/username/Disk/というディレクトリにアーカイブ用のディレクトリを作成している。$ mkdir /home/username/Disk/hoge
HDDのuuidを調べる。
$ ls -l /dev/disk/by-uuid total 0 ... lrwxrwxrwx 1 root root 10 1月 11 18:16 xxxx -> ../../sdX1 ...
調べたUUID(xxxx)を使って、fstabに追加する。
# vim /etc/fstab ... UUID=xxxx /home/zero/Disk/3TB-5 xfs defaults 0 2 ...
ちなみに、fstabのフィールドの意味は以下のとおり。
フィールド番号 | 説明 |
---|---|
1 | マウント対象となるデバイス名、あるいはラベル名 |
2 | マウントポイントとなるディレクトリ |
3 | ファイルシステムタイプ |
4 | マウント時のオプション |
5 | 0: dumpコマンドの非対象 1: dumpコマンドの対象 |
6 | 0: boot時fsck対象外 1: rootファイルシステム 2: boot時fsck対象 |
最後に、mount -aでマウントする。
# mount -a
マウントポイントのディレクトリの所有者変更
このままだと、以下のようにマウントしてもマウントポイントディレクトリの所有者と所有グループがrootになったままで、一般ユーザーから書き込めない。$ ls -ld マウントポイントのディレクトリ drwxr-xr-x 2 root root 6 1月 11 14:41 マウントポイント
chown、chgrpして一般ユーザーで書き込めるようにする。chgrpはusersが一般的だと思う。
# chown ユーザー名 マウントポイントのディレクトリ # chgrp users マウントポイントのディレクトリ
lsで確認。
$ ls -ld マウントポイントのディレクトリ drwxr-xr-x 2 ユーザー名 users 6 1月 11 14:41 マウントポイント
HDDのセクターサイズ等を確認する
XFSフォーマットのディスクのセクタサイズ等はxfs_infoで確認する。xfs_infoは、マウントしたドライブに対してしか実行できない。ちなみにext4はdumpe2fs /dev/sdXXで確認する。ちゃんとsectsz=4096、bsize=4096となっていることが分かる。$ xfs_info /dev/sdXX meta-data=/dev/sde1 isize=512 agcount=4, agsize=183141597 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=0 data = bsize=4096 blocks=732566385, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=357698, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
また、セクタサイズにあったパーティショニングができているかは、blockdevでも確認できる。0が返ってこれば正しくパーティショニングできている。
# blockdev --getalignoff /dev/sdX 0
参考:
[1]XFS
[2]Partitioning
[3]4 KB セクター・ディスクで Linux を使用する: 実用的なアドバイス
スポンサーリンク
0 件のコメント:
コメントを投稿