Ubuntuサーバー構築入門

  • Ubuntu 20
  • Ubuntu 18
  • Ubuntu 16

新しい物理ディスクの初期フォーマットとファイルシステムへのマウント

新しいディスクの初期フォーマット方法を解説します。物理ディスクを新しく追加した場合は、利用する前に初期フォーマットを行う必要があります。

新しく追加した物理ディスクの確認方法については、以下を参考にしてください。

物理的に接続されているディスクを確認する - fdisk -l

パーティションの作成とフォーマット

まず最初に、パーティションを作成します。パーティションとは、論理的なディスクのことです。

一つの物理ディスクを、複数の論理ディスクに分けて扱うこともできますし、複数の物理ディスクを、大きなサイズのひとつの論理ディスクとして扱うこともできます。

パーティションが、ディスクに対してひとつの場合でも、パーティションは作成する必要があります。

ここでは、新しい物理ディスクに対して、ひとつのパーティションを割り当てる方法を解説します。

まずpartedコマンドを使用して、物理ディスクのパーティション分割とフォーマットを行います。

fdiskを使用する方法もありますが、ここでは、対話実行ではなくコマンド実行できるpartedと呼ばれるコマンドを使って、

以下の解説では、新しく追加された物理ディスクを「/dev/sdc」とします。

ファイルシステムの種類はUbuntuのデフォルトのext4です。(これはパーティションにおける単なるヒントで、次の手順で、実際のファイルシステムを指定します。)

sudo parted /dev/sdc --script mklabel gpt mkpart ext4part ext4 0% 100%

パーティションが作成されたことを確認しましょう。

sudo fdisk -l

「/dev/sdc1」というパーティションが作成されます。

Disk /dev/sdc: 1 TiB, 1099511627776 bytes, 2147483648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: D5DDBFFA-278E-417C-9DA7-7FF50891E1FD

Device     Start        End    Sectors  Size Type
/dev/sdc1   2048 2147481599 2147479552 1024G Linux filesystem

Linuxファイルシステムの作成

次は、パーティションに対して、Linuxファイルシステムを作成します。

Linuxファイルシステムを作成するには、mkfsコマンドを使用します。XFSファイル用に「mkfs.ext4」というコマンドがあるので、これを使います。

引数には、パーティションを指定します。

sudo mkfs.ext4 /dev/sdc1

出力結果のサンプルです。

meta-data=/dev/sdc1              isize=512    agcount=4, agsize=67108736 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=268434944, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=131071, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

partprobeを使って、すぐに、ファイルシステムとして認識させましょう。

sudo partprobe /dev/sdc1

パーティションが、Linuxファイルシステムとして認識されているかlsコマンドで「/dev」を見てみましょう。

ls /dev | grep sd

「/dev/sdc1」がファイルシステムとして認識されています。

sda
sda1
sda14
sda15
sdb
sdb1
sdc
sdc1

ファイルシステムへのマウント

最後はファイルシステムへのマウントです。「/dev/sdc1」は、パーティションを指し示すデバイスファイルです。これは特別なファイルで、通常のファイルシステムのディレクトリとして、扱うことができません。

デバイスファイルを、通常のディレクトリに結び付けるという操作を行う必要があります。これを、マウントと呼びます。

ディレクトリ名は、自由に決めることができますがここでは「/datadrive」にします。

まず、空のディレクトリを作成します。

sudo mkdir /datadrive

次に「/dev/sdc2」を「/datadrive」でマウントします。

sudo mount /dev/sdc1 /datadrive

dfコマンドを使って、マウントが成功しているか確認しましょう。

df -h

「/dev/sdc1」が「/datadrive」に結び付けられています。

/dev/sdc1       1.0T  1.1G 1023G   1% /datadrive

これで、完了です。ただし、マウントは、一時的なものなので、Ubuntuの再起動時に自動的にマウントするためには、追加の手順が必要です。

自動マウントの設定

Ubuntuを再起動した場合に、自動的にマウントするにはまず、UUIDと呼ばれる、パーティションを一意に識別できるIDを知る必要があります。

blkidコマンドを使って、UUIDを取得しましょう。

sudo blkid
/dev/sda1: LABEL="cloudimg-rootfs" UUID="bdf328db-9606-49ba-8e44-5e1299ae56f0" TYPE="ext4" PARTUUID="179b1e79-bd71-4241-9557-8be63cbb8857"
/dev/sda15: LABEL="UEFI" UUID="54D1-0F3A" TYPE="vfat" PARTUUID="ec4144dd-3a40-4774-bfc2-73488a3f8e39"
/dev/sdb1: UUID="61c57ec5-96f9-4c18-8d7e-d7b05dd48b76" TYPE="ext4" PARTUUID="a252cd85-01"
/dev/sdc1: UUID="c85b796f-b9ff-4b4d-9091-47327999d8aa" TYPE="ext4" PARTLABEL="ext4part" PARTUUID="d2295ab7-22fb-49a2-a3d0-1a9819207562"
/dev/sda14: PARTUUID="bddfd6d3-8ef9-40d2-8fda-0083f3e0df9b"

新しく追加したパーティション「sdc1」のUUIDのダブルクォートの中をコピーして、どこかに保存しておきましょう。

次に、OSの再起動ができないなどの状況に陥ったときのために「/etc/fstab」のバックアップを取っておきましょう。

sudo cp /etc/fstab /etc/fstab.original

「/etc/fstab」を編集します。この設定ファイルに書き込むことで、再起動時に自動的にマウントされるようになります。

sudo vi /etc/fstab

自分の環境でコピーしたUUIDを使用して、以下の行を「/etc/fstab」に追加します。

UUID=c85b796f-b9ff-4b4d-9091-47327999d8aa   /datadrive   ext4   defaults,nofail   1   2

nofailを指定しておくと、マウントに失敗しても、再起動ができるので、少し安心。5列目の1は、dumpするかどうか、データディスクなので、1に。六列目の2(2以上)は、ファイルシステムがルートなどではない場合で、通常のデータを格納する場合に指定しておく。

fstabの設定は、間違った設定を行うと、以下のようなエラーメッセージでOSの再起動に失敗し、起動できなくなるので、慎重に。

The disk drive for /datadrive is not ready yet or not present.
Continue to wait, or Press S to skip mounting or M for manual recovery

VPSや各クラウドサービスでの、fstab エラーが起こった場合の復帰方法を確認してから行うようにしましょう。

VPSや各クラウドサービスでの、コンソールから、マウントをスキップして、OSを再起動して「/etc/fstab」を修正するという手順になるかと思われます。

他のディレクトリのために、新しいデータ領域を使うには?

たとえば「/var/backup」のために、新しい「/datadrive」を使いたい場合はどうするのでしょうか?

シンボリックリンクを使います。

「/datadrive」の中に「/var/backup」というディレクトリを作って「/var/backup」から「/datadrive/var/backup」にシンボリックリンクを作成します。

mkdir -p /datadrive/var/backup
ls -s /datadrive/var/backup /var/backup

手順を間違ったしまって元に戻したい場合

手順を間違ったしまって元に戻したい場合の解説です。

マウントを解除する

マウントを解除するにはumountコマンドを使用します。

sudo umount /datadrive

cdなどで、ディレクトリに入っていたり、そのディレクトリを使用している場合は、busyになって、アンマウントできないです。

誰かが利用している場合は、以下のコマンドで確認できます。

fuser -muv /datadrive

だれも入っていない状態にしてから、アンマウントしましょう。

パーティションの再作成

マウントを解除したら、partedコマンドを、再実行することで、パーティションを再作成できます。

ファイルシステムの再作成

mkfsコマンドも、再度ファイルシステムを作成するかを効かれますので、yを押して進めましょう。