Linuxでディスクを追加しようとする度にコマンドを検索しなおすのが面倒なのでメモしておきます。
もくじ:
はじめに
おおまかな手順としては、①パーティション切る(fdisk, parted)、②フォーマットする(mkfs)、③マウントする(mount, fstab)、の3段階です。
LVMは、OS領域やアプリ依存などで後で拡張するかも、という場合には構成してもいいですが、データを置くなどの用途で特に気にしないのであれば使わなくても問題ありません。
以下rootで作業していますが、他のユーザの場合は適宜sudoして下さい。
1. パーティション
まずどのデバイスとして認識されているのか確認しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@centos ~]# fdisk -l Disk /dev/sda: 68.7 GB, 68719476736 bytes, 134217728 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト Disk label type: dos ディスク識別子: 0x0xxxxxx2 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 134217727 66059264 8e Linux LVM Disk /dev/sdb: 136.4 GB, 136365211648 bytes, 266338304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト |
上は例ですが、/dev/sda
がOS領域(MBR)、/dev/sdb
未フォーマットの追加ディスクです。このように最近のLinuxならだいたい/dev/sdaにOSがインストールされ、追加のディスクデバイスなら/dev/sdbや/dev/sdcにマップされます。
ここではパーティションツールを対話形式で使用します。
1.1 fdiskでMBR
fdiskではデフォルトがMBRで、パーティション数の分だけn
コマンドを繰り返して新規追加していきます。
ブート用とかでなければふつうにサイズを指定し、最後にw
コマンドでコミットします。
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 | [root@centos ~]# fdisk /dev/sdb コマンド (m でヘルプ): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p パーティション番号 (1-4, default 1): 最初 sector (2048-71303167, 初期値 2048): 初期値 2048 を使います Last sector, +sectors or +size{K,M,G} (2048-71303167, 初期値 71303167): 初期値 71303167 を使います Partition 1 of type Linux and of size 34 GiB is set コマンド (m でヘルプ): p Disk /dev/sdb: 36.5 GB, 36507222016 bytes, 71303168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: dos ディスク識別子: 0x.... デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 2048 71303167 35650560 83 Linux コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 ディスクを同期しています。 |
1.2 fdiskでGPT
GPTを扱う際にはpartedのほうがいいのかもですが、最近はfdiskでもできるようですね。
GPTで作成する場合にはg
コマンドを使ってテーブルを更新します。GPTにはプライマリや拡張パーティションはないので指定する必要がありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [root@centos ~]# fdisk /dev/sdb コマンド (m でヘルプ): g Building a new GPT disklabel (GUID: 8xxxx-xxxxxx-xxxxxx-xxxxxxxx8) コマンド (m でヘルプ): n パーティション番号 (1-128, default 1): First sector (2048-266338270, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-266338270, default 266338270): Created partition 1 コマンド (m でヘルプ): p Disk /dev/sdb: 136.4 GB, 136365211648 bytes, 266338304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: gpt Disk identifier: 8xxxx-xxxxxx-xxxxxx-xxxxxxxx8 # Start End Size Type Name 1 2048 266338270 127G Linux filesyste コマンド (m でヘルプ):w |
1.3 partedでMBR
partedの対話形式の場合はコマンドを打っていき、quit
コマンドで終了します。
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 | [root@centos ~]# parted /dev/sdc GNU Parted 3.1 /dev/sdb を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) p エラー: /dev/sdb: ディスクラベルが認識できません。 モデル: Msft Virtual Disk (scsi) ディスク /dev/sdb: 36.5GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: unknown ディスクフラグ: (parted) mklabel msdos (parted) mkpart primary ext4 1MiB 100% (parted) p モデル: Msft Virtual Disk (scsi) ディスク /dev/sdb: 36.5GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 1049kB 36.5GB 36.5GB primary (parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。 |
1.4 partedでGPT
GPTの場合はmklabel
でgpt
を指定します。
1 2 3 4 5 6 7 8 | [root@centos ~]# parted /dev/sdc GNU Parted 3.1 /dev/sdc を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) mklabel gpt (parted) mkpart primary xfs 1MiB 100% (parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。 |
2. フォーマット
最近だとext4(Ubuntuのデフォルト)かxfs(CentOSのデフォルト)あたりが選択肢に入ると思います。
下記はxfsでファイルシステムを作成する例です。
1 2 3 4 5 6 7 8 9 10 | [root@centos ~]# mkfs.xfs /dev/sdc1 meta-data=/dev/sdc1 isize=512 agcount=4, agsize=16777088 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=67108352, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=32767, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 |
3. マウント
最終的には自動マウントできるようにしますが、まずは手動でマウントしてみて、問題ないことを確かめたほうが良いです。
事前にマウントポイント(任意のディレクトリ)をどこかに作成しておきます。
1 2 3 4 5 6 7 8 | [root@centos ~]# mkdir -p /data/data1 [root@centos ~]# mount /dev/sdb1 /data/data1 [root@centos ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 40G 1.3G 39G 4% / ... /dev/sda1 1014M 162M 853M 16% /boot /dev/sdb1 127G 33M 127G 1% /data/data1 |
自動マウントするにはfstab
に書いておきます。
よくある方法は、下記のようにデバイスへのパス(/dev/sdx
)、マウントポイント、ファイルシステムの順で書いた行を追加するやり方です。
1 2 3 4 5 6 | [root@centos ~]# cat /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0 UUID=d....9d /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 /dev/sdb1 /data/data1 xfs defaults 0 0 |
デバイスのパスで指定してもいいですが、起動時に変わることもないとはいえないので、UUIDで指定するほうがより安全です。
UUIDを調べるには、ファイルシステムを作成したうえでlsblk
コマンドを使います。fstab
にはUUID=...
の形式でデバイスへのパスを指定します。
1 2 3 4 5 6 7 8 | [root@centos ~]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT fd0 sda ├─sda1 xfs d....9d /boot └─sda2... sdb └─sdb1 xfs 4....9d |
他にもパーティションUUIDやGPT UUIDを使う方法があります。
再起動しても想定通りに自動マウントされていれば正常です。
おわり。