-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NFS, iSCSI, SMB 프로토콜 서비스용 VM 생성 및 관리 기능 #284
Comments
cloud-init user-data test L2 network로 Centos8-cloud-init 가상 머신을 만들어서 테스트 #cloud-config
|
cloud-init 볼륨 확장 #cloud-config disk_setup: fs_resize:
growpart: #!/bin/bash 사용 가능한 모든 EBS 볼륨을 가져옵니다. for VOLUME in $VOLUMES; do
fi |
nfs 서비스 구성#!/bin/bash 필요한 패키지 설치 새 디스크 파티션 및 포맷 새 디스크 생성 및 마운트 sudo mkdir -p /var/nfs/share NFS 서버 설정 echo "/var/nfs/share 10.10.254.136(rw,sync,no_subtree_check)" >> /etc/exports systemctl enable nfs-server.service 마운트 지점 추가 nfs-client #!/bin/bash nfs-utils 및 nfs4-acl-tools 설치 nfs 마운트 디렉토리 생성 nfs 마운트 테스트 파일 생성 fstab 설정 nfs 마운트 실행 fstab 설정 실행 nfs 마운트 해제 예시 |
nfs data-disk mount#!/bin/bash sudo mkfs.xfs /dev/sdb1 echo "/mnt/data *(rw,sync,no_root_squash)" >> /etc/exports systemctl start nfs-utils mount -t nfs -o rw,vers=4 127.0.0.1:/mnt/data /mnt/data |
smb data-disk mount 및 서비스 구성#!/bin/bash sudo dnf install -y samba samba-client samba-common sudo parted /dev/sdb mklabel gpt mkpart primary 0% 100% sudo mkdir /mnt/data sudo mount /dev/sdb1 /mnt/data echo "[data] sudo systemctl start smb sudo firewall-cmd --permanent --zone=public --add-service=samba echo "/dev/sdb1 /mnt/data xfs defaults 0 0" >> /etc/fstab smb-nic 추가#!/bin/bash sudo dnf install -y samba samba-client samba-common sudo parted /dev/sdb mklabel gpt mkpart primary 0% 100% sudo mkdir /mnt/data sudo mount /dev/sdb1 /mnt/data echo "[data] IP_ADDRESS="192.168.0.100" sudo sed -i 's/; bind interfaces only = yes/bind interfaces only = yes/' /etc/samba/smb.conf sudo ip addr flush dev ens3 sudo systemctl restart networking sudo systemctl restart smbd echo "/dev/sdb1 /mnt/data xfs defaults 0 0" >> /etc/fstab |
iscsi data-disk mount 및 서비스 구성#!/bin/bash 필요한 패키지 설치 디스크 파티션 생성 및 포맷 iSCSI target 구성 target 서비스 시작 및 부팅 시 자동 시작 설정 iSCSI 연결 설정 마운트 디렉토리 생성 및 마운트 fstab 설정 client #!/bin/bash iSCSI initiator utils 설치 initiator 이름 설정 iscsid 서비스 시작 타겟 검색 타겟 로그인 세션 정보 확인 |
mkisofs -o test.iso /mnt
mount -t iso9660 -o loop test.iso /mnt => iso를 마운트 할때
mkdir /iso
mount /dev/cdrom /iso => 연결된 iso 이미지는 가상머신의 /dev/cdrom 으로 연결됨
fdisk -l | grep 'Disk /dev/sd[b-z]' | awk '{ sub(/,/,""); sum +=$5;} END { print sum/1024/1024/1024 }'
또는
lsblk -o NAME,SIZE | egrep sd[b-z] |
nic - 고정 ip setting#!/bin/bash NIC 이름 NIC_NAME="ens3" 파일 수정 NetworkManager 재시작 |
VM 생성 시 데이터 디스크 파티션 및 마운트# df -h
# lsblk (새로 추가된 디스크 확인)
# fdisk /dev/sdb
=> n, 엔터, 엔터, 엔터, 엔터, 엔터, t, 8e, w
# pvdisplay
# pvcreate /dev/sdb1
# vgcreate able /dev/sdb1
# vgdisplay
# lvcreate -l 100%FREE -n lv_data able
# lvdisplay
# mkfs.xfs /dev/able/lv_data
# mkdir /mnt/share
# mount /dev/able/lv_data /mnt/share
# vi /etc/fstab
/dev/able/lv_data /mnt/share xfs defaults 1 2
or
# echo "/dev/able/lv_data /mnt/share xfs defaults 1 2" >> /etc/fstab
# df -h (마운트 확인) 데이터 디스크 추가 시(확장)# fdisk /dev/sdc
=> n, 엔터, 엔터, 엔터, 엔터, 엔터, t, 8e, w
# fdisk -l
# vgextend able /dev/sdc1
# lvextend -l +100%FREE /dev/able/lv_data
# xfs_growfs /dev/mapper/able-lv_data |
[클릭] 메인 스크립트(ISO 마운트, 네트워크 설정, 전역변수 설정)메인 스크립트#!/bin/bash
############################################ SELinux permissive
setenforce 0
############################################ ISO Mount
## Check if the ISO is already mounted
if grep -qs "/iso/" /proc/mounts; then
echo "iso is already mounted"
else
## If the ISO is not mounted, mount it
echo "Mounting iso..."
mount -o loop "iso" /iso
## Wait until the ISO is mounted
while ! grep -qs "/iso" /proc/mounts; do
echo "Waiting for iso to be mounted..."
sleep 1
done
echo "iso_name has been mounted"
fi
############################################ Network Setting
# Execute a command or operation and store the result in an array
result_array=($(ls /sys/class/net))
# Iterate over the array to assign values to variables
for ((i=0; i<(${#result_array[@]})-1; i++)); do
variable_name="INTERFACES_$i"
eval "$variable_name=${result_array[i]}"
## Classify SSV Network Type
SSV_NETWORK_TYPE=$(jq -r '.["ssv.networks"][0]."ssv.network.type"' /ssv/ssv_userdata.json)
if [ ${SSV_NETWORK_TYPE} = "L2" ];then
SSV_NETWORK_IP=$(jq -r '.["ssv.networks"][0]."ssv.network.ip"' /ssv/ssv_userdata.json)
SSV_NETWORK_L2_GATEWAY=$(jq -r '.["ssv.networks"][0]."ssv.network.l2.gateway"' /ssv/ssv_userdata.json)
SSV_NETWORK_L2_NETMASK=$(jq -r '.["ssv.networks"][0]."ssv.network.l2.netmask"' /ssv/ssv_userdata.json)
#SSV_NETWORK_L2_DNS=$(jq -r '.["ssv.networks"][0]."ssv.network.l2.dns"' /ssv/ssv_userdata.json)
SSV_NETWORK_L2_DNS=8.8.8.8
## Chaning to static IP
echo "NAME="${result_array[i]}"
IPADDR=$SSV_NETWORK_IP
NETMASK=$SSV_NETWORK_L2_NETMASK
GATEWAY=$SSV_NETWORK_L2_GATEWAY
DNS1=$SSV_NETWORK_L2_DNS
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
DEVICE=${result_array[i]}" > /etc/sysconfig/network-scripts/ifcfg-"${result_array[i]}"
## Restart NetworkManager start
systemctl restart NetworkManager
fi
done
############################################ Disk Setting
# Unparted disk
lsblk -rno "NAME,TYPE" | awk '$2=="disk" {print $1}' | sort > ~/disk_list.txt
lsblk -rno "NAME,TYPE" | awk '$2=="part" {gsub(/[0-9]/,"",$1); print $1}' | sort | uniq > ~/part_list.txt
unparted_disk=$(comm -3 ~/disk_list.txt ~/part_list.txt | tr -d ' ')
NEW_DISK=$unparted_disk
# Check sdc disk
lsblk -rno "NAME" | awk '$1=="sdc" {print $1}' > ~/check_sdc.txt | tr -d ' '
CHECK_SDC=$(cat ~/check_sdc.txt)
SSV_TYPE=$(jq -r '.["ssv.type"]' /ssv/ssv_userdata.json)
if [ "$SSV_TYPE" = "NFS" ]; then
if [ "$NEW_DISK" = "sdb" ] && [ "$CHECK_SDC" != "sdc" ]; then
# Partition the disk with fdisk
parted /dev/${NEW_DISK} mklabel msdos mkpart primary ext4 0% 100%
vgcreate vgroup /dev/${NEW_DISK}1
lvcreate -l 100%FREE -n lv_data vgroup
# New disk partition and format with xfs
mkfs.xfs /dev/vgroup/lv_data
# Extract first sdb1 disk's uuid
SDB_UUID=$(blkid -o value -s UUID "/dev/sdb1")
# Create a mount point and mount the partition
mkdir /mnt/share/
mount /dev/vgroup/lv_data /mnt/share
# Add an entry to /etc/fstab so the partition is mounted at boot time
echo "/dev/vgroup/lv_data /mnt/share xfs defaults 0 0" >> /etc/fstab
mount -a
# Install required packages
rpm -i /iso/nfs/rpm/*
# NFS server settings
mkdir -p /mnt/share/nfs
# Export nfs configuration
echo "/mnt/share/nfs *(rw,sync,no_subtree_check)" >> /etc/exports
exportfs -arv
# Enable and start nfs service
sudo systemctl enable nfs-server.service
sudo systemctl start nfs-server.service
# Add firewall policy
sudo firewall-cmd --zone=public --permanent --add-service={nfs,mountd,rpc-bind}
sudo firewall-cmd --reload
elif [ "$NEW_DISK" = "sdb" ] && [ "$CHECK_SDC" = "sdc" ]; then
# Partition the disk with fdisk
parted /dev/${NEW_DISK} mklabel msdos mkpart primary ext4 0% 100%
# Extend volume
vgextend vgroup /dev/sdb1
lvextend -l +100%FREE /dev/vgroup/lv_data
xfs_growfs /dev/mapper/vgroup-lv_data
elif [ "$NEW_DISK" = "" ]; then
echo 'NO NEW_DISK'
fi
# rm trash
rm -f ~/disk_list.txt ~/part_list.txt ~/check_sdc.txt
elif [ ${SSV_TYPE} = "smb" ];then
sh /iso/smb/script/smb.sh
elif [ ${SSV_TYPE} = "iscsi" ];then
sh /iso/iscsi/script/iscsi.sh
else
echo 'ERROR'
fi
|
The text was updated successfully, but these errors were encountered: