ファイル共有サーバを仮想マシンで構築するとき 共有フォルダ毎にディスクイメージを分離しておけば フルバックアップが容易になります。
ディスクの追加
仮想マシンを一旦停めて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 件のコメント: