はじめに
Secure Block Storage(SBS)ボリュームは、使いやすく、冗長性が高く、スケーラブルで、Atlantic.Netクラウドサーバーに接続できる安全なブロックストレージです。
ファイル、データベース、アプリケーション、およびバックアップストレージのニーズにSecureBlockStorageボリュームを使用できます。 99.999%の可用性を実現するように設計されたSBSは、コンポーネントの障害からデータを保護するために、複数回自動的に複製されます。ストレージをオンザフライで増やし、同じリージョン内のクラウドサーバー間でSBSボリュームを移動できます。
このガイドでは、LinuxサーバーでSBSボリュームを作成、構成、フォーマット、および管理する方法について説明し、SSH経由でサーバーに既に接続していることを前提としています。
このガイドで学習する内容:
ブロックストレージボリュームの作成
初期使用のためのブロックストレージボリュームの構成
ブロックストレージボリュームのデタッチ
以前に構成されたブロックストレージボリュームの接続
ブロックストレージボリュームのサイズ変更
ブロックストレージボリュームの削除
SELINUXを実行する場合に必要な追加の手順
ステップ1:Atlantic.Netクラウドコントロールパネルでボリュームを作成する
In the Atlantic.Net Control Panel, click on "Block Storage", then click the "Add Volume" button. Next select the volume size, name, location, and server you wish to attach the Volume to.
After the Volume is done creating, you should see that the Volume is attached to the server you chose.
Atlantic.Netクラウドコントロールパネルでボリュームを作成した後、以下の手順に従って、Linuxサーバーでボリュームを初めて構成します。
ステップ1:ボリュームを見つける
Linuxサーバーでボリュームを見つける最も簡単な方法は、「/ dev / disk /by-id/」ディレクトリで「ls」コマンドを実行することです。 「/dev/ disk / by-id /」ディレクトリは、再起動後またはボリュームを別のサーバーに接続したときに変更されない、SCSI識別子に基づく永続的なデバイス名を提供します。すべてのSBSボリュームは、SCSI識別子「scsi-0AN_Volume_」で始まり、その後にボリュームに付けた名前が続きます。したがって、ボリュームに「Vol1」という名前を付けた場合、ボリュームへのパスは「/ dev / disk / by-id/scsi-0AN_Volume_Vol1」になります
[email protected]:~# ls /dev/disk/by-id/scsi-0AN_Volume_* /dev/disk/by-id/scsi-0AN_Volume_Vol1
ステップ2:ボリュームを分割する
ボリュームのパーティション分割には、「gdisk」などのGPTパーティション分割をサポートする最新のパーティション分割ツールを使用することを強くお勧めします。 GPT形式のボリュームは、「fdisk」などの古いパーティションツールよりも大きなサイズをサポートします。
まず、gdiskをインストールしましょう
注:gdiskをインストールするには、オペレーティングシステムのパッケージマネージャーを使用する必要があります(つまり、UbuntuまたはDebian:apt-get install gdisk、CentOSまたはFedora:yum install gdiskなど)。
apt-get install gdisk
ボリュームのパーティション分割を開始するには、ボリュームのパスを使用して「gdisk」プログラムを開始します。
[email protected]:~# gdisk /dev/disk/by-id/scsi-0AN_Volume_Vol1
プログラムが起動し、ボリュームを分析し、さらにコマンドを入力するためのプロンプトを表示します
GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Command (? for help):
次に、コマンド「n」を入力し、Enterキーを押してすべてのデフォルトを受け入れることにより、ボリューム上に新しい単一パーティションを作成します
Command (? for help): n Partition number (1-128, default 1): First sector (34-2097151966, default = 2048) or {+-}size{KMGTP}: Last sector (2048-2097151966, default = 2097151966) 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):
これで、「p」コマンドを入力して、ディスクに書き込む前にパーティションテーブル情報を出力できます
Command (? for help): p Disk /dev/disk/by-id/scsi-0AN_Volume_Vol1: 2097152000 sectors, 1000.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): ECCD068D-408F-43CA-AA2F-15F968E62F7D Partition table holds up to 128 entries First usable sector is 34, last usable sector is 2097151966 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 2097151966 1000.0 GiB 8300 Linux filesystem Command (? for help):
上記では、ボリューム上のすべてのスペースを利用する単一のパーティションをメモリ内に作成したことがわかります。次に、「w」コマンドを使用して、パーティションテーブルをボリュームに書き込む(保存する)必要があります。プロンプトが表示されたら、「Y」と答えて続行します。
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/disk/by-id/scsi-0AN_Volume_Vol1. The operation has completed successfully.
ステップ3:ボリューム上にファイルシステムを作成する
次に、ボリュームにデータを保存するためのファイルシステムを作成する必要があります。 Linuxで最も一般的なファイルシステムはext4とxfsです。このガイドでは、ext4を使用します。
作成したパーティションで「mkfs.ext4」プログラムを使用してext4ファイルシステムを作成しましょう。コマンドを呼び出すときに、ボリュームへのパスに「-part1」を追加するだけであることに注意してください。
[email protected]:~# mkfs.ext4 /dev/disk/by-id/scsi-0AN_Volume_Vol1-part1 mke2fs 1.42.13 (17-May-2015) Discarding device blocks: done Creating filesystem with 262143739 4k blocks and 65536000 inodes Filesystem UUID: 60bd3dd1-cb39-4a64-a015-771ae50bcc16 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
ステップ4:ボリュームをマウントする
ボリュームの使用を開始する前の最後のステップは、ボリュームをディレクトリにマウントすることです。
ディレクトリを作成しましょう
[email protected]:~# mkdir -p /mnt/Vol1
次に、mountコマンドを使用してボリュームパーティションをディレクトリにマウントします
[email protected]:~# mount -o discard,defaults /dev/disk/by-id/scsi-0AN_Volume_Vol1-part1 /mnt/Vol1/
これで、ボリュームがマウントされ、使用できる状態になったことを確認できます
[email protected]:~# df -h /mnt/Vol1 Filesystem Size Used Avail Use% Mounted on /dev/sdb1 985G 72M 935G 1% /mnt/Vol1
オプション:再起動後にボリュームを自動的にマウントするには、/ etc/fstabファイルにエントリを追加する必要があります
echo '/dev/disk/by-id/scsi-0AN_Volume_Vol1-part1 /mnt/Vol1 ext4 defaults,nofail,discard 0 0' | tee -a /etc/fstab
これで、ボリュームを使用する準備が整いました。
Cloud Serverでボリュームを使用する必要がなくなった場合は、Atlantic.Net Cloudコントロールパネルでデタッチリクエストを発行する前に、必ずCloudServerでボリュームをアンマウントする必要があります。
ステップ1:ボリュームをアンマウントする
まず、ボリュームがマウントされているかどうかを確認する必要があります。これを行うには、リストブロックコマンド「lsblk」を「mountpoint」フラグとボリュームへのパスとともに使用します。
注:ボリュームへのパスは常に「/ dev / disk /by-id/」であることに注意してください。 scsi-0AN_Volume_」の後に、ボリュームに付けた名前が続きます。以下の例では、ボリュームの名前は「Vol1」です
[email protected]:~# lsblk -o mountpoint /dev/disk/by-id/scsi-0AN_Volume_Vol1 MOUNTPOINT /mnt/Vol1
出力は、ボリュームが「/ mnt/Vol1」にマウントされていることを示しています。 「マウントポイント」の下に何も表示されない場合は、ボリュームがマウントされていないため、以下の手順3にスキップできます。
これで、「umount」コマンドを使用してボリュームをアンマウントできます
[email protected]:~# umount /mnt/Vol1/
また、「mountpoint」フラグとボリュームへのパスを指定して「lsblk」コマンドを実行することで、ボリュームがマウントされていないことを確認できます。
[email protected]:~# lsblk -o mountpoint /dev/disk/by-id/scsi-0AN_Volume_Vol1 MOUNTPOINT
これで、Atlantic.Netコントロールパネルからデタッチコマンドを発行できます
ステップ3:クラウドサーバーからボリュームを切り離します
In the Atlantic.Net Control Panel, click on "Block Storage", then click the "Detach" button next to the Volume you wish to detach.
In the pop-up window, confirm you wish to detach the Volume from the Cloud Server by clicking the "Detach" button.
以前にクラウドサーバーでボリュームを構成し、それをクラウドサーバーから切り離して、同じまたは他のクラウドサーバーに接続する場合は、以下の手順に従ってください。
ステップ1:ボリュームを目的のクラウドサーバーに接続します
In the Atlantic.Net Control Panel, click on "Block Storage", then click the "Attach" button next to the Volume you wish to attach.
In the pop-up window, select the server you wish to attach the volume to.
After the Volume is done attaching, you should see that the Volume is attached to the server you chose.
ステップ2:ボリュームを見つける
Linuxサーバーでボリュームを見つける最も簡単な方法は、「/ dev / disk /by-id/」ディレクトリで「ls」コマンドを実行することです。 「/dev/ disk / by-id /」ディレクトリは、再起動後またはボリュームを別のサーバーに接続したときに変更されない、SCSI識別子に基づく永続的なデバイス名を提供します。すべてのSBSボリュームは、SCSI識別子「scsi-0AN_Volume_」で始まり、その後にボリュームに付けた名前が続きます。したがって、ボリュームに「Vol1」という名前を付けた場合、ボリュームへのパスは「/ dev / disk / by-id/scsi-0AN_Volume_Vol1」になります
[email protected]:~# ls /dev/disk/by-id/scsi-0AN_Volume_* /dev/disk/by-id/scsi-0AN_Volume_Vol1 /dev/disk/by-id/scsi-0AN_Volume_Vol1-part1
ステップ3:ボリュームをマウントする
ボリュームの使用を開始する前の最後のステップは、ボリュームをディレクトリにマウントすることです。
ディレクトリを作成しましょう
[email protected]:~# mkdir -p /mnt/Vol1
次に、mountコマンドを使用してボリュームパーティションをディレクトリにマウントします
[email protected]:~# mount -o discard,defaults /dev/disk/by-id/scsi-0AN_Volume_Vol1-part1 /mnt/Vol1/
これで、ボリュームがマウントされ、使用できる状態になったことを確認できます
[email protected]:~# df -h /mnt/Vol1 Filesystem Size Used Avail Use% Mounted on /dev/sdb1 985G 72M 935G 1% /mnt/Vol1
オプション:再起動後にボリュームを自動的にマウントするには、/ etc/fstabファイルにエントリを追加する必要があります
echo '/dev/disk/by-id/scsi-0AN_Volume_Vol1-part1 /mnt/Vol1 ext4 defaults,nofail,discard 0 0' | tee -a /etc/fstab
これで、ボリュームを使用する準備が整いました。
スペースが不足していますか?ボリュームのストレージサイズを拡張する場合は、以下の手順に従ってください。
ステップ1:Atlantic.Netクラウドコントロールパネルでボリュームのサイズを変更します
In the Atlantic.Net Control Panel, click on "Block Storage", then click the "Resize" button next to the Volume you wish to resize to a larger size.
In the pop-up window, select the size you wish to resize the Volume to and then press the "Resize" button.
これで、コントロールパネルでボリュームのサイズが変更されたことがわかります
ステップ2:ボリュームを見つける
Linuxサーバーでボリュームを見つける最も簡単な方法は、「/ dev / disk /by-id/」ディレクトリで「ls」コマンドを実行することです。 「/dev/ disk / by-id /」ディレクトリは、再起動後またはボリュームを別のサーバーに接続したときに変更されない、SCSI識別子に基づく永続的なデバイス名を提供します。すべてのSBSボリュームは、SCSI識別子「scsi-0AN_Volume_」で始まり、その後にボリュームに付けた名前が続きます。したがって、ボリュームに「Vol1」という名前を付けた場合、ボリュームへのパスは「/ dev / disk / by-id/scsi-0AN_Volume_Vol1」になります
[email protected]:~# ls /dev/disk/by-id/scsi-0AN_Volume_* /dev/disk/by-id/scsi-0AN_Volume_Vol1 /dev/disk/by-id/scsi-0AN_Volume_Vol1-part1
ステップ3:パーティション情報をバックアップする
追加のスペースを使用するためにボリュームのパーティションのサイズを変更する前に、「gdisk」コマンドを使用して既存のパーティションテーブルのバックアップを作成します
プロセスを開始するには、ボリュームのパスを使用して「gdisk」プログラムを開始します。
[email protected]:~# gdisk /dev/disk/by-id/scsi-0AN_Volume_Vol1
プログラムが起動し、ボリュームを分析し、さらにコマンドを入力するためのプロンプトを表示します
GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help):
次に、「b」コマンドを入力して、パーティションテーブルのバックアップを作成し、バックアップファイルの名前を指定します。
Command (? for help): b Enter backup filename to save: partition_table.backup The operation has completed successfully. Command (? for help):
次に、パーティションテーブルのバックアップデータ構造を再配置する必要があります。ボリュームのサイズを変更したため、これを行う必要があります。
コマンド「x」を使用してエキスパートモードに入ります
Command (? for help): x
次に、コマンド「e」
を使用してバックアップデータ構造を再配置します。Expert command (? for help): e Relocating backup data structures to the end of the disk
コマンド「m」を使用して通常モードに戻ります
Expert command (? for help): m
ステップ3:ボリューム上のパーティションのサイズを変更します
パーティションのサイズを変更する前に、パーティションテーブルの情報を確認しましょう
Command (? for help): p Disk /dev/disk/by-id/scsi-0AN_Volume_Vol1: 8388608000 sectors, 3.9 TiB Logical sector size: 512 bytes Disk identifier (GUID): ECCD068D-408F-43CA-AA2F-15F968E62F7D Partition table holds up to 128 entries First usable sector is 34, last usable sector is 8388607966 Partitions will be aligned on 2048-sector boundaries Total free space is 6291458014 sectors (2.9 TiB) Number Start (sector) End (sector) Size Code Name 1 2048 2097151966 1000.0 GiB 8300 Linux filesystem
上記では、パーティションのサイズがまだ変更されておらず、ボリュームにパーティションが1つしかないことがわかります。
次に、既存のパーティション情報を削除し、ボリュームが提供する新しいより大きなサイズで再作成することにより、既存のパーティション情報を置き換えます。
まず、「d」コマンドを使用してパーティション情報を削除します
Command (? for help): d Using 1
次に、「n」コマンドを使用してパーティションを再度作成し、Enterキーを押してすべてのデフォルトを受け入れます。これにより、以前と同じように単一のパーティションが作成されるため、データが保持され、パーティションにより多くの利用可能なスペースが提供されます。
Command (? for help): n Partition number (1-128, default 1): First sector (34-8388607966, default = 2048) or {+-}size{KMGTP}: Last sector (2048-8388607966, default = 8388607966) 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): p Disk /dev/disk/by-id/scsi-0AN_Volume_Vol1: 8388608000 sectors, 3.9 TiB Logical sector size: 512 bytes Disk identifier (GUID): ECCD068D-408F-43CA-AA2F-15F968E62F7D Partition table holds up to 128 entries First usable sector is 34, last usable sector is 8388607966 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 8388607966 3.9 TiB 8300 Linux filesystem
上記では、パーティションのサイズが追加のスペースを反映していることがわかります。
次に、「w」コマンドを使用して、パーティションテーブルをボリュームに書き込む(保存する)必要があります。プロンプトが表示されたら、「Y」と答えて続行します。
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/disk/by-id/scsi-0AN_Volume_Vol1. Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) The operation has completed successfully.
ステップ4:パーティションの変更をLinuxに通知する
Linuxにパーティションの変更を通知するために使用する最も簡単なツールは、「partedpackage」の一部である「partprobe」です
partedをインストールする
注:partedをインストールするには、オペレーティングシステムのパッケージマネージャーを使用する必要があります(つまり、UbuntuまたはDebian:apt-get install parted、CentOSまたはFedora:yum install partedなど)。
apt-get install parted
「parted」がインストールされると、デバイスへのパスを使用してpartprobeコマンドを実行できます
[email protected]:~# partprobe /dev/disk/by-id/scsi-0AN_Volume_Vol1
Linuxは、パーティションの変更について説明します
ステップ5:ファイルシステムのサイズを変更する
ボリュームはext4ファイルシステムで構成されているため、デバイスのサイズを変更するには、デバイスパーティションへのパスを指定して「resize2fs」コマンドを使用する必要があります。これは、ボリュームがマウントされているときに実行できます。
注:CentOS6またはDebian7のマウントされたボリュームでresize2fsコマンドを使用すると、完了するまでに非常に長い時間がかかる場合があります。続行する前に、ボリュームをアンマウントするオペレーティングシステムのバージョンのいずれかを使用している場合は、お勧めします。
注:ボリュームがXFSファイルシステムを使用している場合は、「xfs_growfs / path / to/mountpoint」を使用します。ファイルシステムのサイズを変更します。
[email protected]:~# resize2fs /dev/disk/by-id/scsi-0AN_Volume_Vol1-part1 resize2fs 1.42.13 (17-May-2015) Filesystem at /dev/disk/by-id/scsi-0AN_Volume_Vol1-part1 is mounted on /mnt/Vol1; on-line resizing required old_desc_blocks = 63, new_desc_blocks = 250 The filesystem on /dev/disk/by-id/scsi-0AN_Volume_Vol1-part1 is now 1048575739 (4k) blocks long.
これで、追加のスペースを使用する準備が整いました。
ボリュームが不要になったら、以下の手順に従ってください。
注:Atlantic.Netクラウドコントロールパネルで削除リクエストを発行する前に、必ずクラウドサーバーでボリュームをアンマウントする必要があります。
ステップ1:ボリュームをアンマウントする
まず、ボリュームがマウントされているかどうかを確認する必要があります。これを行うには、リストブロックコマンド「lsblk」を「mountpoint」フラグとボリュームへのパスとともに使用します。
注:ボリュームへのパスは常に「/ dev / disk /by-id/」であることに注意してください。 scsi-0AN_Volume_」の後に、ボリュームに付けた名前が続きます。以下の例では、ボリュームの名前は「Vol1」です
[email protected]:~# lsblk -o mountpoint /dev/disk/by-id/scsi-0AN_Volume_Vol1 MOUNTPOINT /mnt/Vol1
出力は、ボリュームが「/ mnt/Vol1」にマウントされていることを示しています。 「マウントポイント」の下に何も表示されない場合は、ボリュームがマウントされていないため、以下の手順3にスキップできます。
これで、「umount」コマンドを使用してボリュームをアンマウントできます
[email protected]:~# umount /mnt/Vol1/
また、「mountpoint」フラグとボリュームへのパスを指定して「lsblk」コマンドを実行することで、ボリュームがマウントされていないことを確認できます。
[email protected]:~# lsblk -o mountpoint /dev/disk/by-id/scsi-0AN_Volume_Vol1 MOUNTPOINT
ステップ2:Atlantic.Netコントロールパネルでボリュームを削除します
In the Atlantic.Net Control Panel, click on "Block Storage", then click the "Delete" button next to the Volume you wish to delete.
In the pop-up window, carefully read the entire message, and click the "Delete" button to remove the Volume.
ボリュームは削除され、今後は課金されなくなります。
SELINUXは、ほとんどのLinuxディストリビューションに組み込まれているセキュリティ拡張機能です。これにより、ユーザーはより多くのアクセス制御を利用できるようになるため、サーバーの攻撃対象領域を大幅に減らすために、実稼働環境で有効にする必要があります。
アプリケーションデータにACPSBSストレージを使用する場合、その可能性のあるSELINUXにより、特定のアプリケーションがファイルやディレクトリにアクセスしたり書き込んだりできない場合があります。
この例では、Apacheフォルダー/ var / www/htmlはSBS論理ボリュームにあります。
chconコマンドを使用して、ApacheデーモンにSBSボリュームへの読み取り/書き込みアクセスを許可します。
# chcon -Rv --type=httpd_sys_rw_content_t /var/www/html/
(完全なWebルートを許可する場合)
# chcon -Rv --type=httpd_sys_rw_content_t /var/www/html/uploads/
(または単にフォルダをアップロードする)
Apacheプロセスにボリュームの所有権を与えるには、chownを使用できます:
# chown apache:apache -R /var/www/html/
再帰的なファイル権限を配布するには、次のようにfindコマンドとchmodコマンドを組み合わせます。
# find . -type f -exec chmod 0644 {} \;
注– chmod 644は、所有者のみが書き込み/変更を許可され、他のユーザー(グループ)が含まれる場合は読み取り専用であることを意味します。
再帰的なフォルダ権限を配布するには、次のようにfindコマンドとchmodコマンドを組み合わせます。
# find . -type d -exec chmod 0755 {} \;
注– 755は、すべてのユーザーの読み取りおよび実行アクセスと、ファイルの所有者の書き込みアクセスを意味します。
次に、Apacheがすべてのファイルを再帰的に提供できるようにSELINUXを設定します。
# chcon -t httpd_sys_content_t /var/www/html/ -R
または、特定のディレクトリへのApacheアクセスのみを許可する場合:
# chcon -t httpd_sys_rw_content_t /var/www/html/logs/ -R # chcon -t httpd_sys_rw_content_t /var/www/html/uploads/ -R
今後の参考のために、HTTP(Apache)に必要な次の2つのSELINXパラメーターをメモしてください。
httpd_sys_content_t – allow Apache to serve contents httpd_sys_rw_content_t – allow Apache to write to those path