Elastic Compute Service (ECS) インスタンスに接続されている新しいデータディスクにデータを保存、読み取り、および書き込みする前に、データディスクを初期化する必要があります。 初期化操作には、ディスクのパーティショニング、ファイルシステムのフォーマット、およびファイルシステムのマウントが含まれます。 このトピックでは、Linuxインスタンスでサイズが2 TiBを超えないデータディスクを初期化する方法について説明します。
前提条件
データディスクはLinuxインスタンスに接続されています。 詳細については、「データディスクのアタッチ」をご参照ください。
背景情報
この例では、次の表に示す構成のECSインスタンスとデータディスクが使用されています。 動作は、実際の条件に基づいて変化し得る。
オペレーティングシステム | リソース | 説明 |
Linux | ECSインスタンスで使用されるイメージ | Alibaba Cloud Linux 3.2104 64ビットパブリックイメージ |
データディスク |
|
サイズが2 TiBを超えるディスクを初期化する方法については、「サイズが2 TiBを超えるデータディスクの初期化」をご参照ください。
手順
手順1: Linuxインスタンスに接続してデータディスクを表示
Linuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、データディスクのデバイス名を取得します。
fdisk -lu
次のようなコマンド出力が返されます。これは、インスタンスに2つのディスクがあることを示します。デバイス名が
/dev/vda
であるシステムディスクと、デバイス名が/dev/vdb
である新しいデータディスクです。
手順2: データディスクにパーティションを作成する
マスターブートレコード (MBR) パーティション形式を使用するディスクのサイズは、2 TiBに上限があります。 ディスクのサイズが2 TiBより大きい場合、またはディスクのサイズが2 TiBより大きい場合は、GUIDパーティションテーブル (GPT) パーティション形式を使用します。
Partedを使用して、MBRパーティションとGPTパーティションを作成できます。 fdiskを使用して、MBRパーティションのみを作成できます。
GPTパーティションの作成
Partedを使用して、データディスク上にサイズが2 TiBを超えないGPTパーティションを作成するには、次の手順を実行します。 GPTパーティション形式を使用するディスクのサイズは、2 TiBより大きくすることができます。
次のコマンドを実行してPartedをインストールします。
yum install -y parted
説明このステップのyumコマンドは、CentOSなどのLinuxディストリビューションに適しています。 他のLinuxディストリビューションの場合は、パッケージ管理ソフトウェアに基づいてコマンドを変更します。 たとえば、DebianまたはUbuntuで
apt-get install <Package name>
コマンドを実行します。Partedを使用してデータディスクを分割します。
次のコマンドを実行して、データディスクを分割します。 この例では、
/dev/vdb
データディスクがパーティション分割されています。parted /dev/vdb
/dev/vdb
はデータディスクのデバイス名です。 データディスクの実際のデバイス名に置き換えます。[Parted] コマンドラインで、次のコマンドを実行して、パーティション形式をGPTに設定します。
mklabel gpt
次のコマンドを実行してプライマリパーティションを作成し、パーティションの開始位置と終了位置を指定します。
この例では、primaryという名前のプライマリパーティションがデータディスクに作成され、ディスク容量の100% がプライマリパーティションに割り当てられます。
mkpartプライマリ1 100%
説明データディスクに複数のパーティションを作成する場合は、この手順を繰り返します。
次のコマンドを実行して、パーティションが整列しているかどうかを確認します。
プライマリパーティションの数は
1
です。 ディスクパフォーマンスを向上させるために、パーティションを整列することを推奨します。align-チェック最適1
パーティションが整列している場合、次のようなコマンド出力が返されます。
1整列
説明パーティションが整列していない場合、
1 not aligned
が返されます。 この問題を解決する方法については、このトピックの「ディスクの初期化に関するFAQ」をご参照ください。次のコマンドを実行して、パーティションテーブルを確認します。
プリント
次のコマンドを実行してPartedを終了します。
終了
次の図は、パーティション分割プロセスを示しています。
次のコマンドを実行して、パーティションテーブルを再読み込みします。
partprobe
次のコマンドを実行して、新しいパーティションを表示します。 この例では、
/dev/vdb
データディスクが使用されています。fdisk -lu /dev/vdb
/dev/vdb
はデータディスクのデバイス名です。 データディスクの実際のデバイス名に置き換えます。以下のようなコマンド出力が返されます。 新しいパーティションが作成されると、gptの情報が表示されます。
MBRパーティションの作成
次の手順を実行して、fdiskを使用してサイズが2 TiBを超えないMBRパーティションをデータディスクに作成します。
MBRパーティションを作成します。
次のコマンドを実行して、データディスクを分割します。 この例では、
/dev/vdb
データディスクが使用されています。fdisk -u /dev/vdb
/dev/vdb
はデータディスクのデバイス名です。 データディスクの実際のデバイス名に置き換えます。以下のようなコマンド出力が返されます。
fdiskコマンドラインで、pと入力し、
enter
キーを押してデータディスクのパーティション情報を確認します。以下のようなコマンド出力が返されます。
nを入力し、
Enter
キーを押してデータディスクを分割します。以下のようなコマンド出力が返されます。
前の図に示すように、データディスクには2種類のパーティションがあります。
p
: プライマリパーティション。e
: 拡張パーティション。説明MBRディスクに最大4つのパーティションを作成できます。 パーティションは、すべてのプライマリパーティション、または3つのプライマリパーティションと1つの拡張パーティションにすることができます。 拡張パーティションは、使用する前に論理パーティションに分割する必要があります。 詳細については、「概要」をご参照ください。
この例では、プライマリパーティションは1つだけ作成されます。 pを入力し、
Enter
キーを押してプライマリパーティションを作成します。以下のようなコマンド出力が返されます。
パーティション番号
は、プライマリパーティションの番号を示します。1から4の範囲です。パーティション番号を入力し、
Enter
キーを押します。この例では、プライマリパーティションは1つだけ作成されます。
Enter
キーを押して、プライマリパーティションの番号としてデフォルト値1
を使用します。以下のようなコマンド出力が返されます。
開始セクタ番号を入力し、
Enter
キーを押します。最初のセクター
は、パーティション内の開始セクタの番号を指定します。 有効な値: 2048〜83886079。 デフォルト値:2048。 この例では、開始セクタ番号としてデフォルト値2048
を使用するには、[Enter
] キーを押します。以下のようなコマンド出力が返されます。
説明選択した開始セクター番号の範囲と終了セクター番号の範囲が自動的に表示されます。 範囲内で開始セクタ番号と終了セクタ番号を指定するか、デフォルト値を使用できます。 開始セクタ番号は、終了セクタ番号よりも小さくなければならない。
終了セクタ番号を入力し、
Enter
キーを押します。Last sector
は、パーティション内のエンドセクターの番号を指定します。 有効な値: 2048〜83886079。 デフォルト値: 83886079 この例では、[Enter
] キーを押して、終了セクタ番号としてデフォルト値83886079
を使用します。以下のようなコマンド出力が返されます。
説明選択した開始セクター番号の範囲と終了セクター番号の範囲が自動的に表示されます。 範囲内で開始セクタ番号と終了セクタ番号を指定するか、デフォルト値を使用できます。 開始セクタ番号は、終了セクタ番号よりも小さくなければならない。
pを入力し、
Enter
キーを押してデータディスクのパーティション情報を表示します。次のようなコマンド出力が返されます。これは、新しい
/dev/vdb1
パーティションの詳細情報を示します。説明上記のパーティショニング操作が正しく実行されない場合は、
q
と入力してfdiskを終了します。 分割結果は保持されません。 上記の手順を再実行できます。wを入力し、
Enter
キーを押してパーティショニング結果をパーティションテーブルに書き込みます。次のようなコマンド出力が返されます。これは、パーティションが作成されたことを示します。
説明データディスクに複数のパーティションを作成する場合は、この手順を繰り返します。
次のコマンドを実行して、新しいパーティションを表示します。 この例では、
/dev/vdb
データディスクが使用されています。fdisk -lu /dev/vdb
/dev/vdb
はデータディスクのデバイス名です。 データディスクの実際のデバイス名に置き換えます。以下のようなコマンド出力が返されます。 新しいパーティションが作成されると、
/dev/vdb1
の情報が表示されます。
手順3: パーティションのファイルシステムの作成
新しいパーティションのファイルシステムを作成します。 パーティションのサイズは、ファイルシステムの種類によって異なります。 ニーズに合ったファイルシステムを作成します。
次のコマンドを実行して、e2fsprogsツールをインストールします。
yum install -y e2fsprogs
説明このステップのyumコマンドは、CentOSなどのLinuxディストリビューションに適しています。 他のLinuxディストリビューションの場合は、パッケージ管理ソフトウェアに基づいてコマンドを変更します。 たとえば、DebianまたはUbuntuで
apt-get install <Package name>
コマンドを実行します。ファイルシステムを作成します。 この例では、ext4ファイルシステムとxfsファイルシステムが作成されています。
ext4ファイルシステムの作成
mkfs -t ext4 /dev/vdb1
/dev/vdb1
は、データディスクのパーティション名です。 データディスクの実際のデバイス名に置き換えます。重要16 TiBデータディスク用のext4ファイルシステムを作成したときにエラーが報告された場合、e2fsprogsパッケージのバージョンが1.42より前である可能性があります。 e2fsprogsのバージョンを1.42以降にアップグレードします。 詳細については、「Linuxインスタンスでe2fsprogsをアップグレードする方法」をご参照ください。 このトピックのセクション。
ext4ファイルシステムのlazy init機能は、データディスクのI/Oパフォーマンスに影響します。 ext4ファイルシステムのlazy init機能を無効にすることができます。 詳細については、「Linuxインスタンスでlazy init機能を無効にする方法」を参照してください。 このトピックのセクション。
xfsファイルシステムの作成
mkfs -t xfs /dev/vdb1
/dev/vdb1
は、データディスクのパーティション名です。 データディスクの実際のデバイス名に置き換えます。以下のようなコマンド出力が返されます。 この例では、データディスクの
/dev/vdb1
パーティションに対してext4ファイルシステムが作成されます。
手順4: /etc/fstabファイルの設定とパーティションのマウント
インスタンスの起動時にデータディスクをマウントする場合は、ディスクパーティションの情報を /etc/fstabに書き込み、インスタンスの起動時に自動的にマウントするようにディスクパーティションを構成します。
UUID を使用して /etc/fstab 内の新しいパーティションを参照することを推奨します。 ディスクに対して実行される操作 (リリース操作など) により、他のディスクのデバイス名が変更される場合があります。 /etc/fstabでデータディスクのデバイス名を使用する場合、デバイス名を変更すると、保存されているデータが影響を受ける可能性があります。
次のコマンドを実行して、etc/fstabファイルをバックアップします。
cp /etc/fstab /etc/fstab.bak
新しいパーティションの情報を /etc/fstabに書き込みます。
rootユーザーの場合、次のコマンドを実行して /etc/fstabを変更できます。
echo 'blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"// g'' /mnt ext4デフォルト0 >> /etc/fstab
コマンドの次のパラメータに注意してください。
/dev/vdb1
: データディスクのパーティション名。 実際のパーティション名に置き換えます。/mnt
: パーティションのマウントポイント。 実際のマウントポイントに置き換えます。 パーティションを既存のディレクトリにマウントするか、mkdir
コマンドを実行してディレクトリを作成し、パーティションを新しいディレクトリにマウントします。ext4
: パーティションのファイルシステムタイプ。 作成したファイルシステムのタイプに置き換えます。
説明Ubuntu 12.04オペレーティングシステムはバリアをサポートしていません。 新しいパーティションの情報を /etc/fstabに書き込むには、
echo 'blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"// g'' /mnt ext4 barrier=0 0 0 >> /etc/fstab
コマンドを実行する必要があります。 インスタンスがUbuntu 12.04オペレーティングシステムを実行していない場合は、メモを無視してください。ディスクに複数の連続したパーティションがある場合は、各パーティションに固有のコマンドを実行して、パーティション情報を /etc/fstabに書き込みます。 たとえば、
/dev/vdb1
および/dev/vdb2
パーティションを持つ/dev/vdb
データディスクの場合、次のコマンドを個別に実行します。echo 'blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"// g'' <マウントポイントの /dev/vdb1> <ファイルシステムタイプの /dev/vdb1> デフォルト0 >> /etc/fstab echo 'blkid /dev/vdb2 | awk '{print $2}' | sed 's/\"// g'' <マウントポイントの /dev/vdb2> <ファイルシステムタイプの /dev/vdb2> デフォルト0 >> /etc/fstab
一般的なユーザーの場合は、手動で /etc/fstabを変更できます。 詳細については、「データディスクを自動的に接続するためのfstabファイルのUUIDの設定」をご参照ください。
次のコマンドを実行して、/etc/fstabの新しいパーティションの情報を確認します。
cat /etc/fstab
以下のようなコマンド出力が返されます。
次のコマンドを実行して、/etc/fstabファイルで構成されているファイルシステムをマウントします。 ファイルシステムが /etc/fstabで正しく構成されている場合、エラーは報告されません。
mount -a
次のコマンドを実行して、ファイルシステムが期待どおりにマウントされているかどうかを確認します。
df -h
以下のようなコマンド出力が返されます。 ファイルシステムがマウントされている場合は、新しいファイルシステムの情報が表示されます。
ディスクの初期化に関するFAQ
GPTパーティションがディスク上に作成されていても整列されていない場合はどうすればよいですか?
次のコマンドを実行して、ディスクのパラメーターを照会します。
cat /sys/block/vdb/queue/optimal_io_size cat /sys/block/vdb/queue/minimum_io_size cat /sys/block/vdb/alignment_offset cat /sys/block/vdb/queue/physical_block_size
次のコマンドを実行して、プライマリパーティションを再作成します。
mkpart primary <推奨セクター番号> s 100%
推奨セクタ番号は、以下の式に基づいて計算される。<推奨セクタ番号>= (<optimal_io_size> + <alignment_offset>)/<physical_block_size>
。 たとえば、開始セクタ番号が1024の場合、mkpart primary 1024s 100%
コマンドを実行して、プライマリパーティションを再作成できます。
Linuxインスタンスでe2fsprogsをアップグレードするにはどうすればよいですか?
ext4ファイルシステムで16 TiBデータディスクをフォーマットするには、e2fsprogs 1.42以降を使用する必要があります。 1.42より前のバージョンのe2fsprogsを使用すると、次のエラーメッセージが報告されます。
mkfs.ext4: 4096のブロックサイズを使用して32ビットで表現するには、デバイス /dev/vdbのサイズが大きすぎます。
次の手順を実行して、新しいバージョンのe2fsprogsをインストールします。 この例では、e2fsprogs 1.42.8 を使用します。
次のコマンドを実行して、現在のe2fsprogsバージョンを確認します。
rpm -qa | grep e2fsprogs
以下のようなコマンド出力が返されます。
バージョンが1.42より前の場合は、次の操作を実行してe2fsprogsをアップグレードします。
次のコマンドを実行してe2fsprogs 1.42.8をダウンロードします。
e2fsprogsのWebサイトにアクセスして、最新のソフトウェアパッケージを入手できます。
wget https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.42.8/e2fsprogs-1.42.8.tar.gz -- no-check-certificate
e2fsprogsの新しいバージョンをコンパイルします。
次のコマンドを実行して、ソフトウェアパッケージを解凍します。
tar xvzf e2fsprogs-1.42.8.tar.gz
次のコマンドを実行して、パッケージディレクトリに移動します。
cd e2fsprogs-1.42.8
次のコマンドを実行して、Makefileファイルを生成します。
. /configure
次のコマンドを実行して、e2fsprogsをコンパイルします。
作る
次のコマンドを実行してe2fsprogsをインストールします。
make install
次のコマンドを実行して、e2fsprogsがアップグレードされているかどうかを確認します。
rpm -qa | grep e2fsprogs
Linuxインスタンスのlazy init機能を無効にするにはどうすればよいですか?
デフォルトでは、ext4ファイルシステムのlazy init機能が有効になっています。 この機能が有効になると、インスタンスはスレッドを開始して、ext4ファイルシステムのメタデータを継続的に初期化します。 この機能が有効になっているときにデータディスクをフォーマットすると、ディスクのIOPSが一時的に影響を受ける可能性があります。
ディスクのフォーマット直後にデータディスクのパフォーマンスをテストする場合、以下のコマンドを実行して、ファイルシステムのフォーマット時に lazy init 機能を無効化してください。
mke2fs -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize-Elazy_itable_init=0,lazy_journal_init=0 /dev/vdb1
lazy init機能が無効になっている場合、ディスクのフォーマットに長い時間がかかることがあります。 例えば、32 TiBデータディスクは、完全にフォーマットされるために10〜30分を必要とし得る。 ニーズに基づいてlazy init機能を無効にします。