파티션구분 영역 사이즈(GB) 비고 설정 기준 Primary(sda1) /boot 2G kernel 저장소 platform 운용표준(v2.0) Primary(sda3) Swap 메모리 * 1.5 8G 이상시 8G로 세팅 8G 미만시 1.5배 platform 운용표준(v2.0) Primary(sda2) / 60G 60G할당 그외 여분 디스크 남겨둠 나머지용량 여분
파티션구분 영역 사이즈(GB) 비고 /dev/vgwork11/netbackup /netbackup 5G Apache, tomcat 관련 디렉토리 구성은 서비스 용도에 따라 권장하는 방법으로 구성되고 수정되어야 함 /dev/vgwork11/was_mms /was_mms 10G /dev/vgwork11/was_sms /was_sms 10G
파티션구분 영역 사이즈(GB) 비고 /dev/vgwork11/oracle /oracle 30G Oracle 관련 디렉토리 구성은 서비스 용도에 따라 권장하는 방법으로 구성되고 수정되어야 함 /dev/vgwork11/oradata /oradata 400G /dev/vgwork11/archive /archive 100G /dev/vgwork11/oratrace /oratrace 50G /dev/vgwork11/dbawork /dbawork 100G
- /etc/sysctl.conf에 아래 내용 추가
- #sysctl –p 변경내용 적용
Kernel Parameter | 기본값 | value | 비고 |
---|---|---|---|
kernel.msgmni | 7644 | 1024 | 메시지 큐 시스템 크기 |
kernel.sem | 250 32000 32 128 | 1000 32000 32 512 | 시스템의 세마포어 최대값 지정 |
kernel.shmmax | 68719476736 | 2147483648 | 한 개의 공유메모리 세그먼트 최대 크기 |
kernel.threads-max | 60827 | 270335 | 최대 생성 스레드 수 |
net.ipv4.tcp_max_syn_backlog | 2048 | 8192 | 접속한 클라이언트들 중 승인을 받지못하는 접속 요청들의 최대값 지정 |
net.ipv4.tcp_syncookies | 1 | 1 | 소켓으로 syn backlog queue가 넘칠때 syncookies를 보낼지 설정 |
net.ipv4.tcp_fin_timeout | 60 | 30 | 서버에 의해 닫혀질때 FIN_WAIT-2 상태의 소켓을 유지시킬 시간을 설정 |
net.ipv4.tcp_keepalive_time | 7200 | 600 | Keepalive가 활성화되어 있을 경우 얼마나 자주 TCP가 Keepalive 메시지를 보낼지 설정 |
net.ipv4.tcp_syn_retries | 5 | 2 | 활성화된 TCP 접속이 재전송을 시도하기 위한 최초 SYNC 시간의 값 설정 |
net.ipv4.tcp_retries2 | 15 | 5 | 살아있는 TCP 연결을 끊기전 확인하는 횟수 설정 |
net.core.rmem_default | 124928 | 4194304 | 소켓 수신 큐 기본값 설정 |
net.core.wmem_default | 124928 | 4194304 | 소켓 출력 큐 기본값 설정 |
net.core.rmem_max | 124928 | 8388608 | 소켓 수신 큐 최대값 설정 |
net.core.wmem_max | 124928 | 8388608 | 소켓 출력 큐 최대값 설정 |
net.ipv4.tcp_mem | 364896 486528 729792 | 8388608 8388608 8388608 | TCP stack이 메모리를 어떻게 사용할지에 대한 메모리 페이지 단위 설정 |
net.ipv6.conf.all.disable_ipv6 | 0 | 1 | Ipv6 off |
# 이 내용을 복사하여 /etc/sysctl.conf 맨 하단에 추가 후 sysctl -p 로 적용. kernel.sem = 1000 32000 32 512 kernel.threads-max = 270335 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_keepalive_time = 600 # 활성화된 TCP 접속이 재전송을 시도하게 하기 위한 최초 SYN시간의 값을 정한다. # 255 보다 높아서는 안된다. 기본값은 5이며, 180 초에 대응이 된다. # Default : 5 net.ipv4.tcp_syn_retries = 2 # passive TCP 접속시도가 재접속을 하기 위한 SYNACKs의 값을 정한다. 255 보다 높 # 게 지정할 수 없다. 기본값은 5이며, 180초에 대응이 된다. # Default : 5 net.ipv4.tcp_synack_retries = 2 # 연결이 끊어졌다고 판단할 때까지, 얼마나 keepalive probe 를 보낼지 결정. # Default : 9 net.ipv4.tcp_keepalive_probes = 5 # keepalive_probes 를 보낼 간격을 정함. probe 를 보낸 후, probes * intvl 의 시 # 간이 지나도록 응답이 없으면 연결이 해제된 것으로 간주하게 됨. 기본 값의 사용 # 시 11분 15초 동안 재시도를 하고 연결을 취소함. 값은 초단위 # Default : 75 net.ipv4.tcp_keepalive_intvl = 10 # 무언가 잘못되었을 경우, network layer로 이 현상을 reporting 하기전 다시 확인 # 을 하기 위한 횟수를 지정한다. 최소 RPC 값은 3 이며, 이는 RTO 상에서 3 초에서 # 8 분 사이에 응답을 하도록 하는 것이 기본값이다. net.ipv4.tcp_retries1 = 3 net.ipv4.tcp_retries2 = 5 # tcp 연결해제 시간을 줄이며 불필요한 ip확장기능을 사용하지 않음 # Decrease the time default value for tcp_fin_timeout connection # 소켓이 항상 close 되기 전에 마지막 FIN을 기다리는 시간 # Default : 30 net.ipv4.tcp_fin_timeout = 20 # Socket Buffer Tunning # 이 값은 부팅시에 자동으로 감지하여 설정이 됨. # 고정을 하고 싶을 경우에는 설정 net.core.rmem_default = 4194304 net.core.wmem_default = 4194304 net.core.rmem_max = 8388608 net.core.wmem_max = 8388608 net.ipv4.tcp_mem = 8388608 8388608 8388608 # IPv6 Disable net.ipv6.conf.all.disable_ipv6 = 1
* /etc/security/limits.conf 아래 내용 추가
Domain(USER) type item value 비고 * soft nofile 8192 한번에 오픈 가능한 파일 최대치 기본값 설정 * hard nofile 65535 한번에 오픈 가능한 파일 최대치 한계값 설정 * soft nproc 8192 프로세스 생성 최대치 기본값 설정 * soft core 20480 어플리케이션 덤프 기본값 설정
[user@host]# vi/etc/sysconfig/selinux SELINUX=disabled
[user@host]# vi /etc/cron.d/sysstat (default value 10) # run system activity accounting tool every 10 minutes */5 * * * * root /usr/lib64/sa/sa1 1 1
[user@host]# vi /etc/modprobe.d/bonding.conf(파일 신규 생성) alias bond0 bonding alias bond1 bonding [user@host]# vi /etc/sysconfig/network-scripts/ifcfg-bond* DEVICE = bond* BOOTPROTO = static ONBOOT = yes IPADDR = xxx.xxx.xxx.xxx NETMASK = xxx.xxx.xxx.xxx GATEWAY = xxx.xxx.xxx.xxx USERCTL = no NM_CONTROLLED=no BONDING_OPTS = "mode=1 miimon=100" [user@host]# vi /etc/sysconfig/network-scripts/ifcfg-eth* DEVICE = eth* HWADDR=<MAC주소> BOOTPROTO = none ONBOOT = yes MASTER = bond0 SLAVE = yes USERCTL=no NM_CONTROLLED=no
특이사항
LVM Type Filesystem 생성
디스크를 Direct로 PV로 생성하게 되면 fdisk –l 과 같은 명령어로 확인시 해당 디스크 사용여부가 구분되지 않아 차후 디스크 작업중에 휴먼장애를 발생시킬 수 도 있으므로 반드시 PV사용하고자 하는 디스크는 LVM Type으로 Filesystem을 생성후에 PV생성 작업을 진행하도록 한다. 아울러 fdisk로 파티셔닝 시 반드시 –cu 옵션을 이용하여 Disk Align을 맞추어 Disk I/O가 제성능을 낼 수 있도록 한다.
[root@host ~]# fdisk -cu /dev/sdc # 1TB 디스크 파티셔닝 예제 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x8404002b. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) # 새로운 파티션 생성 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First sector (2048-2147483647, default 2048): [ENTER] Using default value 2048 # 2048섹터에서 시작확인 Last sector, +sectors or +size{K,M,G} (2048-2147483647, default 2147483647): [ENTER] Using default value 2147483647 # 전체 용량 사용 Command (m for help): p Disk /dev/sdc: 1099.5 GB, 1099511627776 bytes 255 heads, 63 sectors/track, 133674 cylinders, total 2147483648 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x8404002b Device Boot Start End Blocks Id System /dev/sdc1 2048 2147483647 1073740800 83 Linux # 만들어진 파티션을 LVM타입으로 변경 Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8E Changed system type of partition 1 to 8e (Linux LVM) # 변경된 타입 확인 Command (m for help): p Disk /dev/sdc: 1099.5 GB, 1099511627776 bytes 255 heads, 63 sectors/track, 133674 cylinders, total 2147483648 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x8404002b Device Boot Start End Blocks Id System /dev/sdc1 2048 2147483647 1073740800 8e Linux LVM # 변경 정보 저장 후 종료 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. # 시스템 반영 [root@security ~]# kpartx /dev/sdc sdc1 : 0 2147481600 /dev/sdc 2048
[root@host]# parted /dev/sdb # mklabel 명령어로 GPT 형태로 레이블 생성 (msdos type으로는 2TB이상 생성불가) (parted) mklabel New disk label type? gpt # mkpart 명령어로 LVM으로 사용할 파티션 생성 (parted) mkpart Partition name? []? File system type? [ext2]? ext4 Start? 1 End? -1 # 생성된 파티션을 LVM Type으로 변경 (parted) t Partition number? 1 Flag to Invert? lvm # 출력정보를 섹터 기준으로 맞춤 (생성시에는 compact로 설정) (parted) u Unit? [compact]? s # 만들어진 파티션 확인 (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 20971520s Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 2048s 20969471s 20967424s lvm
[user@host]# pvcreate /dev/sdb* [user@host]# pvdisplay –v
[user@host]# vgcreate VGWORK11 /dev/sdb* [user@host]# vgdisplay –v
[user@host]# lvcreate –L 5G –n netbackup VGWORK11 [user@host]# lvcreate –L 10G –n was_mms VGWORK11 [user@host]# lvcreate –L 10G –n was_sms VGWORK11 [user@host]# lvcreate –L 30G –n oracle VGWORK11 [user@host]# lvcreate –L 400G –n oradata VGWORK11 [user@host]# lvcreate –L 100G –n archive VGWORK11 [user@host]# lvcreate –L 50G –n oratrace VGWORK11 [user@host]# lvcreate –L 100G –n dbawork VGWORK11
[user@host]# mkfs.ext4 –i 2048 /dev/mapper/VGWORK11-netbackup [user@host]# mkfs.ext4 –i 2048 /dev/mapper/VGWORK11-was_mms [user@host]# mkfs.ext4 –i 2048 /dev/mapper/VGWORK11-was_sms [user@host]# mkfs.ext4 –i 2048 /dev/mapper/VGWORK11-oracle [user@host]# mkfs.ext4 –i 2048 /dev/mapper/VGWORK11-oradata [user@host]# mkfs.ext4 –i 2048 /dev/mapper/VGWORK11-archive [user@host]# mkfs.ext4 –i 2048 /dev/mapper/VGWORK11-oratrace [user@host]# mkfs.ext4 –i 2048 /dev/mapper/VGWORK11-dbawork [user@host]# tune2fs -c '-1' -i 0 /dev/mapper/VGWORK11-netbackup [user@host]# tune2fs -c '-1' -i 0 /dev/mapper/VGWORK11-was_mms [user@host]# tune2fs -c '-1' -i 0 /dev/mapper/VGWORK11-was_sms [user@host]# tune2fs -c '-1' -i 0 /dev/mapper/VGWORK11-oracle [user@host]# tune2fs -c '-1' -i 0 /dev/mapper/VGWORK11-oradata [user@host]# tune2fs -c '-1' -i 0 /dev/mapper/VGWORK11-archive [user@host]# tune2fs -c '-1' -i 0 /dev/mapper/VGWORK11-oratrace [user@host]# tune2fs -c '-1' -i 0 /dev/mapper/VGWORK11-dbawork
특이사항
[user@host]# blkid /dev/sda1 /dev/sda1: UUID="8ff42fc7-d3f5-4291-8299-05b017b64863" TYPE="ext4" [user@host]# vi /etc/fstab UUID=51b53fa3-6646-427e-9b9b-42c2d0ae71ac /netbackup ext4 defaults 0 0 UUID=2256dce2-0643-4215-90f4-faa941f2c1ad /was_mms ext4 defaults 0 0 UUID=fc70af47-16e5-4e85-84f3-08f5ba105aff /was_sms ext4 defaults 0 0 UUID=11d99296-d5e7-4c74-868f-213624236592 /oracle ext4 defaults 0 0 UUID=fc336d3e-4997-4ff5-be11-c9f5e1abad46 /oradata ext4 defaults 0 0 UUID=b115ef6f-3a0c-4ab1-9c48-8ba44c85a10f /archive ext4 defaults 0 0 UUID=5ed3e93b-253e-4be6-b0eb-72be857c7c99 /oratrace ext4 defaults 0 0 UUID=dcd42217-29f3-4956-b63b-5cbbb436d05c /dbawork ext4 defaults 0 0
특이사항
Hang 발생시 vmcore 미생성되면 root cause 를 확인하기 어려움
[user@host]# vi /etc/sysctl.conf kernel.sysrq=1 [user@host]# sysctl –p
로 설정적용 후
Routing 테이블에 Wireless 와 같은 169.254.0.0/16 아이피가 찍힐 경우 비활성화
[user@host]# vi /etc/sysconfig/network NOZEROCONF=yes # 추가.
라우팅 경로를 수동으로 입력해야 하는경우
[user@host]# route add -net 172.18.167.242 netmask 255.255.255.255 gateway 172.18.167.1 [user@host]# route add -net 192.168.201.155 netmask 255.255.255.255 gateway 172.18.167.1
이 방식을 사용하면 즉시 반영 되지만 재부팅시에는 설정이 유지되지 않는다.
rc.local같은 곳에 추가하여 사용해도 되지만 추천하지 않으며 영구적인 설정을 원하는 경우 아래의 file방식을 이용하도록 한다.
[user@host]# vi /etc/sysconfig/network-script/route-bond0 # 해당 대역에 대해 임이의 게이트웨이를 정의해주는 경우 172.18.160.0/24 via 172.18.167.1 192.168.201.155 via 172.18.167.1 # 게이트웨이 없이 장치를 라우트 경로로 설정하는 경우 192.168.10.0/24 via dev eth0
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst
인터넷이 되는 경우 기본값으로 설정된 ntp서버를 그대로 이용하여도 되며 별도의 ntp서버가 있는경우 해당 서버를 등록하여 준다.
ntp 설정시 반드시 ntpdate또한 같이 설정해준다.
[user@host]# chkconfig ntpdate on [user@host]# vim /etc/sysconfig/ntpdate
# Options for ntpdate OPTIONS="-U ntp -s -b" # Number of retries before giving up RETRIES=2 # Set to 'yes' to sync hw clock after successful ntpdate SYNC_HWCLOCK=yes
SYNC_HWCLOCK=yes 로 설정
주석 해제 및 yes → no 변경
[user@host]# vi /etc/ssh/sshd_config PermitRootLogin no
패스워드 최대 사용 기간 설정
[user@host]# vi /etc/login.defs PASS_MAX_DAYS 70 # 패스워드 사용할 수 있는 기간. 이 기간 이후에는 변경하여야 한다. PASS_MIN_DAYS 0 # 패스워드 변경 후 0일이 경과되어야만 다시 변경할 수 있다. PASS_MIN_LEN 8 # 패스워드 길이. 최소 8글자 이상 입력하여야 함. PASS_WARN_AGE 7 # 패스워드 만료일 7일전에 알림 메세지 출력.
[user@host]# /etc/profile HOSTNAME=`/bin/hostname 2>/dev/null` HISTSIZE=5000 HISTTIMEFORMAT="%F %T " if [ "$HISTCONTROL" = "ignorespace" ] ; then export HISTCONTROL=ignoreboth else export HISTCONTROL=ignoredups fi export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL HISTTIMEFORMAT
(10분간 입력 없을시 자동 로그아웃)
[user@host]# vi /etc/profile TMOUT=600 export TMOUT
(FTP서비스가 필요한 경우가 아닌이상 사용하지 않는걸 권장. SFTP사용 권장)
[user@host]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_umask=077
[user@host]# vi /etc/ssh/sshd_config PermitRootLogin no PermitEmptyPasswords no
[user@host]# chmod –s /sbin/dump [user@host]# chmod –s /usr/bin/lpq-lpd [user@host]# chmod –s /usr/bin/newgrp [user@host]# chmod –s /sbin/restore [user@host]# chmod –s /usr/bin/lpr [user@host]# chmod –s /usr/sbin/lpc [user@host]# chmod –s /sbin/unix_chkpwd (적용제외 – 일부시스템에서 문제 유발 가능성 있음) [user@host]# chmod –s /usr/bin/lpr-lpd [user@host]# chmod –s /usr/sbin/lpc-lpd [user@host]# chmod –s /usr/bin/at [user@host]# chmod –s /usr/bin/lprm [user@host]# chmod –s /bin/traceroute [user@host]# chmod –s /usr/bin/lpq [user@host]# chmod –s /usr/bin/lprm-lpd
어플리케이션에 영향을 주지 않는 범위 내에서 영향도 확인 후 실행 되어야 함
[root@security ~]# rpm -qa |grep -E "open(ssh|ssl)" openssh-clients-5.3p1-104.el6.x86_64 openssl-1.0.1e-30.el6.x86_64 openssl-devel-1.0.1e-30.el6.x86_64 openssh-askpass-5.3p1-104.el6.x86_64 openssl098e-0.9.8e-18.el6_5.2.x86_64 openssh-5.3p1-104.el6.x86_64 openssh-server-5.3p1-104.el6.x86_64
현재 커널은 2.6.32-431.el6.x86_64 에 맞추어져 있기 때문에 전사적으로 영향도 확인 후 실행 되어야 함
[user@host]# yum update kernel*
어플리케이션에 영향을 주지 않는 범위 내에서 영향도 확인 후 실행 되어야 함
[user@host]# yum update bash
[user@host]# chkconfig cgconfig on (DCB by FCoE) [user@host]# chkconfig ntpdate on [user@host]# chkconfig ntpd on [user@host]# chkconfig NetworkManager off [user@host]# chkconfig cups off [user@host]# chkconfig cpuspeed off [user@host]# chkconfig ip6tables off [user@host]# chkconfig iptables off [user@host]# chkconfig bluetooth off
서비스 (Telnet, FTP, SMTP등) 의 서비스 버전 유출 방지, 필요한 문구로 대체
[user@host]# vi /etc/issue [user@host]# vi /etc/issue.net
/etc/at.allow, /etc/cron.allow 빈 파일을 생성하여 허가된 사용자 외에는 at, crontab 명령어를 사용하지 못하도록 설정
명령어를 허용할 사용자만 해당 파일에 추가
[user@host]# touch /etc/at.allow /etc/cron.allow [user@host]# chmod 600 /etc/at.allow /etc/cron.allow
[user@host]# vi /etc/pam.d/su auth required pam_wheel.so use_uid # 주석 해제
su를 허용할 계정에 wheel 그룹 추가
[user@host]# usermod –G wheel <account>
[user@host]# vi /var/log/messages [user@host]# grep -i "\(error\|fail\|warn\)" /var/log/messages
기본적으로 logrotate설정은 주간단위로 4번 순환 설정되어있다. 3개월분(12주) 로그내용을 보관할 수 있도록 설정을 변경한다.
[user@host]# vi /etc/logrotate.conf # keep 4 weeks worth of backlogs # 12주(3개월) 보관하도록 변경 rotate 12 # uncomment this if you want your log files compressed # .gz파일로 압축보관하도록 주석 해제 compress compressext .gz