1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2TiB を超えるボリュームを parted コマンドで新規ボリュームに移し替える

Posted at

はじめに

先日、「growpart エラー "NOCHANGE: partition 1 is size 4294965248. it cannot be grown" について」 という記事を書かせていただきました。

今回はその際の対応について書いています。

対応

/opt/data で利用しているボリュームの空きがなくなってしまったため、3TiB の EBS を新たに用意し、データを移し替えると言ったことを行います。

新しいボリューム(例:/dev/nvme1n1)をアタッチ

まずは新しい EBS ボリュームを作成しますあ。

作成が完了したら対象のインスタンスにボリュームをアタッチします。

アタッチ前
$ lsblk
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0   3T  0 disk 
└─nvme0n1p1 259:1    0   2T  0 part /

今回、アタッチはマネジメントコンソールから行っています。
parted01.png

アタッチ後
$ lsblk 
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0   3T  0 disk 
└─nvme0n1p1 259:1    0   2T  0 part /
nvme1n1     259:2    0   3T  0 disk 

パーティション作成

次に実際に利用できる状態にしていきます。

まずはパーティションの作成です。今回は 2TB を超えるボリュームの作成にるため parted コマンドを利用するのがポイントです。

パーティション作成
$ sudo parted /dev/nvme1n1
GNU Parted 3.1
/dev/nvme1n1 を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) mklabel gpt                                                      
(parted) mkpart primary xfs 1MiB 100%
(parted) quit                                                             
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

無事に作成ができると lsblk コマンドで確認できます。

パーティション確認
$ lsblk 
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0   3T  0 disk 
└─nvme0n1p1 259:1    0   2T  0 part /
nvme1n1     259:2    0   3T  0 disk 
└─nvme1n1p1 259:3    0   3T  0 part 

フォーマット(ファイルシステム作成)

作成ができたためフォーマットを行います。

フォーマット
$ sudo mkfs.xfs /dev/nvme1n1p1
meta-data=/dev/nvme1n1p1         isize=512    agcount=4, agsize=196607872 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=786431488, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=383999, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

マウントポイント作成 & マウント

それではマウントポイントを作成しマウントをを行います。

マウントポイントの作成
$ sudo mkdir -p /data

マウントできているか分かりやすくするため nomount などの空ファイルを作成します。

touch
$ sudo touch /data/nomount
確認
$ ls /data/
nomount

このようにしておくことで、意図せずマウントが外れている場合に気付きやすくなります。

ではマウントを行います。

マウント
$ sudo mount /dev/nvme1n1p1 /data

以下のように指定したボリュームが指定したマウントポイントにマウントされていれば大丈夫です。

確認
$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/nvme0n1p1   2.0T  1.7T  367G   83% /
devtmpfs          63G     0   63G    0% /dev
tmpfs             63G     0   63G    0% /dev/shm
tmpfs             63G  138M   63G    1% /run
tmpfs             63G     0   63G    0% /sys/fs/cgroup
tmpfs             13G     0   13G    0% /run/user/1000
tmpfs             13G     0   13G    0% /run/user/0
/dev/nvme1n1p1   3.0T   33M  3.0T    1% /data

同期

マウントができたのでデータの同期を行ないます。
まずはオプションに --dry-run を付けて同期テストをします。

テスト同期
$ sudo rsync -aAXv --progress /opt/data /data/ --dry-run
sending incremental file list

sent 382 bytes  received 50 bytes  864.00 bytes/sec
total size is 9,512,745  speedup is 22,020.24 (DRY RUN)

問題なければオプションを外して実際に同期を行います。

同期
$ sudo rsync -aAXv --progress /opt/data /data/
sending incremental file list

sent 9,515,830 bytes  received 221 bytes  19,032,102.00 bytes/sec
total size is 9,512,745  speedup is 1.00

/etc/fstab に登録して永続化

マウントを行うため、ボリュームの UUID を確認します。

UUID確認
$ sudo blkid /dev/nvme1n1p1
/dev/nvme1n1p1: UUID="********-****-****-****-************" TYPE="xfs" PARTLABEL="primary" PARTUUID="********-****-****-****-************" 

確認した UUID を /etc/fstab に追記します。

fstab 追記
$ vim /etc/fstab 

UUID=********-****-****-****-************ /data                   xfs     defaults,nofail 0 2

現在のマウントポイントからボリュームをアンマウントし、自動マウントを実行します。

アンマウント
$ sudo umount /data
自動マウント
$ sudo mount -a

fstab に記載したポイントにマウントされていれば成功です。

確認
$ df -hT | grep /data
/dev/nvme1n1p1 xfs        3.0T  1.7T  1.3T   57% /data

おわりに

今回の対応で、2TiB を超えるボリュームを利用する場合は parted を利用するということがわかり勉強になりました。
今後、data ボリュームとして新規の EBS を用意する際は初めから parted で用意しておくと良さそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?