Elastic Compute Service (ECS) インスタンスに接続されている新しいデータディスクにデータを保存、読み取り、および書き込みする前に、データディスクを初期化する必要があります。 初期化操作には、ディスクのパーティショニング、ファイルシステムのフォーマット、およびファイルシステムのマウントが含まれます。 このトピックでは、Linuxインスタンスでサイズが2 TiBを超えないデータディスクを初期化する方法について説明します。
前提条件
データディスクはLinux ECSインスタンスにアタッチされています。 詳細については、「データディスクのアタッチ」をご参照ください。
背景情報
この例では、次の表に示す構成のECSインスタンスとデータディスクが使用されています。 動作は、実際の条件に基づいて変化し得る。
オペレーティングシステム | リソース | 説明 |
Linux | ECSインスタンスで使用されるイメージ | Alibaba Cloud Linux 3.2104 64ビットパブリックイメージ |
データディスク |
|
サイズが2 TiBを超えるディスクを初期化する方法については、「サイズが2 TiBを超えるデータディスクの初期化」をご参照ください。
手順
手順1: Linuxインスタンスに接続してデータディスクを表示
Linuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、データディスクのデバイス名を取得します。
sudo 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をインストールします。
sudo yum install -y parted
説明このステップのyumコマンドは、CentOSなどのLinuxディストリビューションに適しています。 他のLinuxディストリビューションの場合は、パッケージ管理ソフトウェアに基づいてコマンドを変更します。 たとえば、DebianまたはUbuntuで
apt-get install <Package name>
コマンドを実行します。Partedを使用してデータディスクを分割します。
次のコマンドを実行して、データディスクを分割します。 この例では、
/dev/vdb
データディスクがパーティション分割されています。sudo parted /dev/vdb
/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
データディスクが使用されています。sudo fdisk -lu /dev/vdb
/dev/vdb
はデータディスクのデバイス名です。 /dev/vdbをデータディスクの実際のデバイス名に置き換えます。次のサンプルコマンド出力が返されます。 新しいパーティションが作成されると、gptに関する情報が表示されます。
MBRパーティションの作成
次の手順を実行して、fdiskを使用してサイズが2 TiBを超えないデータディスクにMBRパーティションを作成します。
MBRパーティションを作成します。
次のコマンドを実行して、データディスクを分割します。 この例では、
/dev/vdb
データディスクが使用されています。sudo fdisk -u /dev/vdb
/dev/vdb
はデータディスクのデバイス名です。 /dev/vdbをデータディスクの実際のデバイス名に置き換えます。次のサンプルコマンド出力が返されます。
fdiskコマンドラインで、pと入力し、
enter
キーを押してデータディスクのパーティション情報を確認します。次のサンプルコマンド出力が返されます。
入力nを押して、
入力
キーを使用してデータディスクを分割します。次のサンプルコマンド出力が返されます。
前の図に示すように、データディスクには2種類のパーティションがあります。
p
: primaryパーティションe
: 拡張パーティション説明MBRディスクに最大4つのパーティションを作成できます。 パーティションは、すべてのプライマリパーティション、または3つのプライマリパーティションと1つの拡張パーティションにすることができます。 拡張パーティションを使用する前に、パーティションを論理パーティションに分割する必要があります。 詳細については、「概要」トピックのパーティション形式セクションをご参照ください。
この例では、プライマリパーティションは1つだけ作成されます。 入力pを押して、
入力
キーを使用してプライマリパーティションを作成します。次のサンプルコマンド出力が返されます。
パーティション番号
は、プライマリパーティションの番号を示し、1から4の範囲です。パーティション番号を入力し、
入力
キーを使用します。この例では、プライマリパーティションは1つだけ作成されます。
Enter
キーを押して、プライマリパーティションの番号としてデフォルト値1
を使用します。次のサンプルコマンド出力が返されます。
開始セクタ番号を入力し、
入力
キーを使用します。第1セクタ
は、パーティションの開始セクタ番号を指定する。 有効な値: 2048〜83886079。 デフォルト値:2048。 この例では、Enter
キーを押して、開始セクタ番号としてデフォルト値2048
を使用します。次のサンプルコマンド出力が返されます。
説明選択した開始セクター番号の範囲と終了セクター番号の範囲が自動的に表示されます。 範囲内で開始セクタ番号と終了セクタ番号を指定するか、デフォルト値を使用できます。 開始セクタ番号は、終了セクタ番号よりも小さくなければならない。
終了セクタ番号を入力し、
Enter
キーを押します。Last sector
は、パーティションの終了セクタ番号を指定します。 有効な値: 2048〜83886079。 デフォルト値: 83886079 この例では、Enter
キーを押して、デフォルト値83886079
を終了セクタ番号として使用します。次のサンプルコマンド出力が返されます。
説明選択した開始セクター番号の範囲と終了セクター番号の範囲が自動的に表示されます。 範囲内で開始セクタ番号と終了セクタ番号を指定するか、デフォルト値を使用できます。 開始セクタ番号は、終了セクタ番号よりも小さくなければならない。
入力pを押して、
入力
キーを使用して、データディスクのパーティション情報を表示します。次のサンプルコマンド出力が返されます。これは、新しいパーティション
/dev/vdb1
に関する詳細情報を示しています。説明上記のパーティション分割操作が期待どおりに実行されない場合は、
q
を入力してfdiskを終了します。 分割結果は保持されません。 上記の手順を再実行できます。入力wを押して、
入力
キーを使用して、パーティショニング結果をパーティションテーブルに書き込みます。次のサンプルコマンド出力は、パーティションが作成されたことを示します。
説明データディスクに複数のパーティションを作成する場合は、この手順を繰り返します。
次のコマンドを実行して、新しいパーティションを表示します。 この例では、
/dev/vdb
データディスクが使用されています。sudo fdisk -lu /dev/vdb
/dev/vdb
はデータディスクのデバイス名です。 /dev/vdbをデータディスクの実際のデバイス名に置き換えます。次のサンプルコマンド出力が返されます。 新しいパーティションが作成されると、
/dev/vdb1
に関する情報が表示されます。
手順3: パーティションのファイルシステムの作成
新しいパーティションのファイルシステムを作成します。 パーティションのサイズは、ファイルシステムの種類によって異なります。 ビジネス要件を満たすファイルシステムを作成します。
次のコマンドを実行してe2fsprogsをインストールします。
sudo yum install -y e2fsprogs
説明このステップのyumコマンドは、CentOSなどのLinuxディストリビューションに適しています。 他のLinuxディストリビューションの場合は、パッケージ管理ソフトウェアに基づいてコマンドを変更します。 たとえば、DebianまたはUbuntuで
apt-get install <Package name>
コマンドを実行します。ファイルシステムを作成します。 この例では、ext4ファイルシステムとxfsファイルシステムが作成されています。
ext4ファイルシステムの作成
sudo mkfs -t ext4 /dev/vdb1
/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機能を無効にするにはどうすればよいですか? このトピックのセクション。
次のサンプルコマンド出力が返されます。 この例では、データディスクの
/dev/vdb1
パーティションに対してext4ファイルシステムが作成されます。xfsファイルシステムの作成
sudo mkfs -t xfs /dev/vdb1
/dev/vdb1
は、データディスクのパーティション名です。 /dev/vdb1をデータディスクの実際のデバイス名に置き換えます。次のサンプルコマンド出力が返されます。 この例では、データディスクの
/dev/vdb1
パーティションに対してxfsファイルシステムが作成されます。
手順4: インスタンスの起動時に自動的にマウントするようにディスクパーティションを設定する
インスタンスの起動時にデータディスクをマウントする場合は、ディスクパーティションに関する情報を /etc/fstabに書き込み、インスタンスの起動時に自動的にマウントするようにディスクパーティションを構成します。
UUID を使用して /etc/fstab 内の新しいパーティションを参照することを推奨します。 ディスクに対して実行される操作 (リリース操作など) により、他のディスクのデバイス名が変更される場合があります。 /etc/fstabでデータディスクのデバイス名を使用する場合、デバイス名を変更すると、保存されているデータが影響を受ける可能性があります。
次のコマンドを実行して、etc/fstabファイルをバックアップします。
sudo cp /etc/fstab /etc/fstab.bak
新しいパーティションに関する情報を /etc/fstabに書き込みます。
ルートユーザー
次のコマンドを実行して、/etc/fstabファイルを変更します。
echo 'blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"// g'' /mnt ext4デフォルト0 >> /etc/fstab
コマンドの次のパラメータに注意してください。
/dev/vdb1
: データディスクのパーティション名。 /dev/vdb1を実際のパーティション名に置き換えます。/mnt
: パーティションのマウントポイント。 /mntを実際のマウントポイントに置き換えます。重要実際の環境に基づいて、マウントポイントとしてディレクトリを指定または作成します。 パーティションを既存のディレクトリにマウントするか、
mkdir
コマンドを実行してディレクトリを作成し、パーティションを新しいディレクトリにマウントします。ext4
: パーティションのファイルシステムタイプ。 ext4を作成したファイルシステムのタイプに置き換えます。defaults
: ファイルシステムのマウントパラメータ。 データセキュリティとファイルシステムの高性能を確保するために、ビジネス要件に基づいてパラメーターを設定します。 詳細については、「マウントコマンドを実行して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で正しく構成されている場合、エラーは報告されません。
sudoマウント-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 1.42以降をインストールするには、次の手順を実行します。 この例では、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 機能を無効化してください。
sudo 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機能を無効にします。
参考資料
Linux ECSインスタンスでサイズが2 TiBを超えるデータディスクを初期化する方法については、「サイズが2 TiBを超えるデータディスクの初期化」をご参照ください。
Windowsインスタンスでサイズが2 TiBを超えないデータディスクを初期化する方法については、「Windowsインスタンスでサイズが2 TiBを超えないデータディスクを初期化する」をご参照ください。
ディスクのサイズを変更する方法については、「概要」をご参照ください。