Linuxで2TB以上のディスクを使用する場合、fdiskでパーティション作成するとエラーになるのでpartedコマンドを使う必要があります。
LVM(Logical Volume Manager)を使って、ディスク(ボリューム)を管理したほうが、その後の拡張などが楽になります。
この記事では具体的なコマンド例を使って説明します。
Virtual Box上の Ubuntu22.04で実行確認しました。
間違って既存の環境を壊す可能性があるので、本番環境で行う前に仮想OSで練習してみることをお勧めします。
事前の確認作業
現在の状態を確認します。
30GBで動作しているUbuntuに、物理的にディスクを追加した直後の状態です。
パーティションの作成、フォーマット、マウントなどしていない状態。
パーティション構成を把握します。
tmpfs は一時ファイルを格納するための仕組みなので、特に気にしないでいいです。
$ $ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 198M 1.1M 197M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 14G 7.0G 6.0G 54% / tmpfs 989M 0 989M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 2.0G 245M 1.6G 14% /boot tmpfs 198M 4.0K 198M 1% /run/user/1000
parted -l で確認。
$ $ sudo parted -l Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 32.2GB ★OS領域など Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 2150MB 2147MB ext4 3 2150MB 32.2GB 30.1GB Error: /dev/sdb: unrecognised disk label ★未使用状態 Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB ★10GBを増設 Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 15.0GB Sector size (logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system Flags 1 0.00B 15.0GB 15.0GB ext4
/dev/sdb: unrecognised disk label ★未使用状態
/dev/sdX <- これデバイス名が重要
ディスクのメーカーなどでデバイス名が変わることがありますが、基本的に 以下のように 末尾が、”a”,”b”,”c”,”d” とアルファベット順に割り当てられていきます。
/dev/sda => /dev/sdb => /dev/sdc => /dev/sdd …
partedでパーティション作成
何か変更したら、正しく反映されているか必ず確認しましょう。
以降の手順では、どこが変更になったかを記載しています。
partedでパーティション作成
partedで デバイス名(/dev/sdx)を指定して起動します。
$ # parted /dev/sdb GNU Parted 3.4 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Error: /dev/sdb: unrecognised disk label Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags:
mklabelでGPT形式に設定
mklabelでGPT形式に設定します。
$ (parted) mklabel gpt ★gpt を指定する (parted) p Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt ★gptが設定された Disk Flags: Number Start End Size File system Name Flags
パーティション作成
mkpartでパーティションを作成します。
Partition name(パーティションの名前)とFile system type(ファイルシステムの種類)は空白で問題なし。
(parted) mkpart Partition name? []? ★空白 File system type? [ext2]? ★空白 Start? 0% ★"0%"を指定 End? 100% ★"100%"を指定。フルに1つのパーティションに割り当てる。 (parted) p Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 10.7GB 10.7GB ext2 ★割り当たった
LVMに設定
パーティションをLVMに設定します。
$ (parted) set 1 lvm on (parted) p Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 10.7GB 10.7GB ext2 lvm ★Flagsがlvmになった
partedを終了。q(quit)で終了
$ (parted) q Information: You may need to update /etc/fstab.
LVMを作成
PV・VG・LVを作成します。
PV(物理ボリューム)を作成
# # pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. # pvs PV VG Fmt Attr PSize PFree /dev/sda3 ubuntu-vg lvm2 a-- <28.00g 14.00g /dev/sdb1 lvm2 --- <10.00g <10.00g
VG(ボリューム・グループ)を作成
# # vgcreate data-vg /dev/sdb1 Volume group "data-vg" successfully created # vgs VG #PV #LV #SN Attr VSize VFree data-vg 1 0 0 wz--n- <10.00g <10.00g ubuntu-vg 1 1 0 wz--n- <28.00g 14.00g
LV(論理ボリューム)を作成
# # lvcreate -n data-lv -l 100%FREE data-vg Logical volume "data-lv" created. # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data-lv data-vg -wi-a----- <10.00g ubuntu-lv ubuntu-vg -wi-ao---- <14.00g
# # lvdisplay --- Logical volume --- LV Path /dev/data-vg/data-lv LV Name data-lv VG Name data-vg LV UUID awlROy-BeBK-XkIo-AAq4-fuBd-MwN4-7TaGOV LV Write Access read/write LV Creation host, time ubuntu2204sv, 2022-10-01 09:20:39 +0000 LV Status available # open 1 LV Size <10.00 GiB Current LE 2559 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/ubuntu-vg/ubuntu-lv LV Name ubuntu-lv VG Name ubuntu-vg LV UUID 7h6Ldp-mMbT-BlFN-s203-fZki-grw3-u7Rham LV Write Access read/write LV Creation host, time ubuntu-server, 2022-07-16 04:27:48 +0000 LV Status available # open 1 LV Size <14.00 GiB Current LE 3583 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1
フォーマット
lsblkコマンドを利用してデバイス・マッパーを確認します。
xfsでフォーマットします。
# # mkfs.xfs /dev/mapper/data--vg-data--lv meta-data=/dev/mapper/data--vg-data--lv isize=512 agcount=4, agsize=655104 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=2620416, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
マウント
デバイスマッパーは、/dev/dm-(数字) というカーネルが管理するデバイスを /dev/mapper/(マップ名) にマッピングします。
ls -la /dev/mapper で確認。
マウントポイントを作成し、mountコマンドでマウント。
# # mkdir /data-lvm # mount /dev/mapper/data--vg-data--lv /data-lvm/
$ $ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 198M 1.1M 197M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 14G 7.0G 6.0G 54% / tmpfs 989M 0 989M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 2.0G 245M 1.6G 14% /boot tmpfs 198M 4.0K 198M 1% /run/user/1000 /dev/mapper/data--vg-data--lv 10G 104M 9.9G 2% /data-lvm
OS起動時の自動マウント設定(fstab変更)
OS起動時の自動マウントの設定を行います。
mountコマンドでのマウントは、OS停止すると解除されます。
永続化するために、/etc/fstab に設定を追加します。
# # vi /etc/fstab /dev/mapper/data--vg-data--lv /data-lvm/ xfs defaults 0 0 ↑★1行追加
あとがき
ディスクの管理方法もコマンドも少しずつ変わってきていますね。
LVMで作成した領域は、簡単に領域を拡張することができます。
昔は、ディスク容量の増強は大変な作業でした。
今ではLVMでディスクを管理しているので、作業が楽になりましたね。
Virual Boxでディスクを追加する方法は以下です。