ファイル共有サーバを仮想マシンで構築するとき 共有フォルダ毎にディスクイメージを分離しておけば フルバックアップが容易になります。
ディスクの追加
仮想マシンを一旦停めてvirsh editでドメインXMLに新しいディスクを書き足します。
元からある<disk>を参考に書けばよいのですけど、
<address>は省略して自動補完させるのがよいでしょう。
ポイントは<target dev='vda'>を
<target dev='vdb'>に変えることです。
それで追加したディスクが仮想マシンから/dev/vdbとして認識されます。
kvm-host
[root@localhost ~]# virsh shutdown centos-smb
ドメイン centos-smb はシャットダウン中です
[root@localhost ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/smb-storage.qcow2 500G
Formatting '/var/lib/libvirt/images/smb-storage.qcow2', fmt=qcow2 size=536870912000 encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost ~]# virsh edit centos-smb
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/centos-smb.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/smb-storage.qcow2'/>
<target dev='vdb' bus='virtio'/>
</disk>
[root@localhost ~]# virsh start centos-smb
ドメイン centos-smb が起動されました
ディスクの初期化
qemu-imgコマンドで作成したばかりのディスクイメージは フォーマットされていない状態なので、仮想マシン上でその辺りの操作を行います。 まずfdiskコマンドでディスク全体を1つのパーティションとし、 次にmkfsコマンドでRHEL7の標準ファイルシステムであるXFSでフォーマットします。
kvm-guest
[root@centos-smb ~]# fdisk /dev/vdb
コマンド (m でヘルプ): g
Building a new GPT disklabel (GUID: 06B3F4A8-8941-491A-BFB2-88E4D51EAE09)
コマンド (m でヘルプ): n
パーティション番号 (1-128, default 1): 1
First sector (2048-1048575966, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-1048575966, default 1048575966):
Created partition 1
コマンド (m でヘルプ): p
Disk /dev/vdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: gpt
# Start End Size Type Name
1 2048 1048575966 500G Linux filesyste
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
[root@centos-smb ~]# mkfs.xfs /dev/vdb1
meta-data=/dev/vdb1 isize=512 agcount=4, agsize=32767935 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=131071739, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=63999, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
/dev/vdb1がマウントできることを確認して一段落です。
kvm-guest
[root@centos-smb ~]# mkdir /mnt/storage [root@centos-smb ~]# mount -t xfs /dev/vdb1 /mnt/storage/ [root@centos-smb ~]# df -lh ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/cl-root 8.0G 1.1G 7.0G 13% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.3M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/vda1 1014M 138M 877M 14% /boot tmpfs 380M 0 380M 0% /run/user/0 /dev/vdb1 500G 33M 500G 1% /mnt/storage
ディスクの自動マウント
仮想マシンを再起動したときに自動マウントしたいとなれば /etc/fstabに書くのが従来の常識でした。 しかしCentOS 7からはsystemdでディスクのマウントも管理します。 マウントポイントを書いた以下のような.mountファイルを用意しましょう。
/etc/systemd/system/mnt-storage.mount
[Unit] Description=Mount Samba Storage [Mount] What=/dev/vdb1 Where=/mnt/storage/ Type=xfs Options=defaults [Install] WantedBy=multi-user.target
自動マウントはサービスの自動起動と同じようにsystemctl enableで有効になります。 start/stopがマウント/アンマウントに対応しており非常に分かりやすいです。
kvm-guest
[root@centos-smb ~]# systemctl enable mnt-storage.mount
Created symlink from /etc/systemd/system/multi-user.target.wants/mnt-storage.mount to /etc/systemd/system/mnt-storage.mount.
[root@centos-smb ~]# systemctl start mnt-storage.mount
[root@centos-smb ~]# systemctl status mnt-storage.mount
● mnt-storage.mount - Mount Samba Storage
Loaded: loaded (/etc/systemd/system/mnt-storage.mount; enabled; vendor preset: disabled)
Active: active (mounted) since Mon 2018-01-08 22:26:46 JST; 1 months 24 days ago
Where: /mnt/storage
What: /dev/vdb1
Jan 08 22:26:46 centos-smb systemd[1]: Mounting Mount Samba Storage...
Jan 08 22:26:46 centos-smb systemd[1]: Mounted Mount Samba Storage.
[root@centos-smb ~]# systemctl list-units --type=mount
UNIT LOAD ACTIVE SUB DESCRIPTION
-.mount loaded active mounted /
boot.mount loaded active mounted /boot
dev-hugepages.mount loaded active mounted Huge Pages File System
dev-mqueue.mount loaded active mounted POSIX Message Queue File System
mnt-storage.mount loaded active mounted Mount Samba Storage
run-user-0.mount loaded active mounted /run/user/0
sys-kernel-config.mount loaded active mounted Configuration File System
sys-kernel-debug.mount loaded active mounted Debug File System
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
8 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
例えばディスクがマウントさせれていない場合はSambaサービスを起動させないなどの 依存関係も書けるでしょうし、systemdは奥が深いです。
0 件のコメント: