일반적인 경우엔 사용 할 일이 없겠지만.
피치 못할 사정으로 특정  CPU 이하로 사용해야 되는 경우가 발생 할 수 있다.
이런 경우??? 사용하는 방법…

우선 CPU 에 대한 정보 확인 해보자.

# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
core id : 0
cpu cores : 6
apicid : 0
initial apicid : 0
.
.
.
processor : 11
1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt
bogomips : 4200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual

# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
Stepping: 4
CPU MHz: 1899.761
BogoMIPS: 4200.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 15360K
NUMA node0 CPU(s): 0-11

위 내용 중 6-11 번까지 논리적인 CPU 쓰레드를 활성/비활성화 시키고 싶은경우 아래의 명령을 실행

### Disable
# echo 0 > /sys/devices/system/cpu/cpu6/online

.
.
echo 0 > /sys/devices/system/cpu/cpu11/online 

or

# chcpu -d 6,7,8,9,10,11
CPU 6 disabled
CPU 7 disabled
CPU 8 disabled
CPU 9 disabled
CPU 10 disabled
CPU 11 disabled

### Enable
# echo 1 > /sys/devices/system/cpu/cpu6/online
.
.
echo 1 > /sys/devices/system/cpu/cpu11/online 

or

# chcpu -e 6,7,8,9,10,11
CPU 6 enabled
CPU 7 enabled
CPU 8 enabled
CPU 9 enabled
CPU 10 enabled
CPU 11 enabled

위 명령은 OS 를 재 부팅 하게되면 초기화 되며 /etc/rc.local 등에 넣어서 사용하는게 좋다.

그리고 만약 장기적으로 특정 갯수 이하로 CPU 갯수를 비 활성화 해야 되는경우 아래의 방법을 사용하면 된다.

file : /etc/grub.conf
kernel 해당 라인에 maxcpus=??? 갯수를 입력하고 재부팅 하면 된다.

ex)
kernel /boot/vmlinuz-2.6.13 root=/dev/sda1 ro maxcpus=2

예전 기억으로 windows 에서 위의 UNIX Attributes 가 기본 기능으로 들어간 줄 알았는데
기본은 비 활성화 군요… 활성화 해야 쓸 수 있는데…

# Dism.exe /online /enable-feature /featurename:adminui /all
# Dism.exe /online /enable-feature /featurename:nis /all
# Dism.exe /online /enable-feature /featurename:psync

아마 위 명령어를 실행 시키면 reboot 이 실행 되었던거 같아요.

윈도우 2012R2 버전에서 ntp 를 연동하는 경우 설정 방법에 대해서 설명 한다.

# w32tm /config /manualpeerlist:”0.pool.ntp.org 1.pool.ntp.org” /syncfromflags:MANUAL
# Stop-Service w32time
# Start-Service w32time
>> ntp 서버 설정 및 서비스 재시작

# w32tm /query /status
>>  리눅스의 ntpq -p 와 같은 ntp 동기화 상태 보는 방법

# w32tm /resync
>> 다시 한번 sync 를 실행 해 주는 것

일반적으로 extX, xfs 등의 user,group quota  는 기본적으로 어느정도 이해가 있다고 생각하고
이번엔 xfs filesystem 의 project quota 설정 방법에 대해서 설명 해 볼까 합니다.

*) 본 내용은 RHEL7(CentOS7) 기반으로 작성되어 있으므로 설정 파일 위치나 이름이 다를 수 있습니다.

xfs filesystem 의 project quota 는 project 기반의 지정된 경로에 대하여 block, inode, realtime block 으로 제한이
가능하므로 여타 파일 시스템 보다 관리적인 효율이 좋다고 할 수 있다. ( Directory 기반으로도 가능 )

 

Step 1. /etc/fstab 에 pquota 옵션 추가 

#/etc/fstab
/dev/vg00/lv00 /data xfs defaults,pquota 0 0

Step 2. 마운트

# mount -a

Step 3. 마운트 확인 

# mount | grep /data
/dev/mapper/vg00-lv00 on /data type xfs (rw,relatime,attr2,inode64,prjquota)

Step 4. /etc/projects 파일 생성 ( quota 를 이용할 경로 )
프로젝트 넘버와 디렉토리 트리를 맵핑

ex)
project id : Directory Tree

# echo “1:/data/data1/” >> /etc/projects
# echo “2:/data/data2/” >> /etc/projects
# echo “3:/data/data3/” >> /etc/projects

Step 5. /etc/projid 파일 생성 ( quota 를 이용할 경로 )
프로젝트 넘버와 프로젝트 네임을 맵핑

ex)
project name : project id

# echo “data1:1” >> /etc/projid
# echo “data2:2” >> /etc/projid
# echo “data3:3” >> /etc/projid

Step 6. Project quota 실행 하기
project 와 제한을 걸려고 하는 Directory 맵핑 하기 

ex)
xfs_quota -x -c ‘project -s $(project name) ‘ $(Filesystem MountPoint)

# xfs_quota -x -c ‘project -s data1’ /data
# xfs_quota -x -c ‘project -s data2’ /data
# xfs_quota -x -c ‘project -s data3’ /data

Step 7. quota 제한 실행 하기
size 기반으로 제한을 걸기 

ex)
xfs_quota -x -c ‘limit $(limit options) $(project id)’ $(Filesystem Mount)

# xfs_quota -x -c ‘limit -p bsoft=300m bhard=350m 1’ /data

inode 기반으로 제한을 걸기 

ex)
xfs_quota -x -c ‘limit $(limit options) $(project id)’ $(Filesystem Mount)

# xfs_quota -x -c ‘limit -p isoft=500 ihard=700 1’ /data

Step 8. quota 제한 확인 하기
size 및 inode 기반 확인

ex)
xfs_quota -x -c ‘repore $(option)’ $(Filesystem Mount)

### inode size
# xfs_quota -x -c ‘report -ih’ /data
Project quota on /data (/dev/mapper/vg00-lv00)
Inodes
Project ID Used Soft Hard Warn/Grace
———- ———————————
#0      3     0     0     00 [——]
data1 331 500 700 00 [——]
data2 151 0     0     00 [——]
data3 201 0     0     00 [——]

### block size
# xfs_quota -x -c ‘report -h’ /data
Project quota on /data (/dev/mapper/vg00-lv00)
Blocks
Project ID Used Soft Hard Warn/Grace
———- ———————————
#0      0           0         0        00 [——]
data1 330.0M 300M 350M 00 [0 days]
data2 150M    100M 150M 00 [0 days]
data3 200M    150M 200M 00 [0 days]

위 방법을 사용하여 활용할 수 있는 부분은 nfs export 를 해야 하는 시스템에서 각 nfs export path 별로
사이즈 제한을 해야 되는경우 일반적으로 lvm 이나 partition 사이즈를 기반으로 사이즈 제한을 하지만.
>> 파일 시스템 갯수가 많아지므로 관리에 어려움이 발생 함.

1개의 Filesystem 기반의 xfs project quota 기능을 이용하여 Directory Tree 기반으로 제한을 하는경우
관리에 있어서 효율화를 이룰 수 있다.

pacemaker  를 구성 하면서 vip network interface 에 대한 Link Detection 과정에서 ethmonitor 을 사용하고
있는데 아래와 같은 메시지가 발생된다.

WARNING: Interface bond0 does not exist

현재 해당 시스템은 bond0(ethmonitor) – br0(ip) 형태로 bond0 인터페이스에 대하여 br0 로 bridge network 을
구성한 형태이다.

원인을 찾아보던중 ethmonitor 의 소스를 확인 해본 결과 아래와 같은 구문이 실행되는 것을 확인 하였다.

ip -o -f inet addr show|grep bond0|cut -d 'm -f2|sort -u|grep -v '^ipsec[0-9][0-9]*$'

그리고 위의 WARNING 메시지가 출력되는 부분에 아래와 같은 comment 가 적혀 있었다.
It might be a interface which is temporarily not available , therefore we want to continue here

그런데??? 이상하다??? 위 구문으로 bond0 인터페이스가 잡히지 않는다.

이유는 간단했다. 

위 구문중 ” -f inet addr show ” 구문이 network interface  상에서 ipv4 ip 가 잡혀있는 인터페이스를
찾는 부분 때문에 bridge 로 구성된 bond0 ( ip 가 없는 ) 인터페이스를 찾지 못 하는 것이었다.

허탈함…

 

우선 이 일에 시작은??? 집에서 모바일 게임을 돌려보고자… 

시작하게 되었으나… 결과는 실패로 돌아갔으며… Raspberry Pi 3 를 이용한 RTAndroid 설치를 해 보고자 하는 사람이

있을지도 몰라… 공유를 하기로 함.

현재 가지고 있는 제품이… 

Raspberry Pi 3  와 Xiaomi Mi TV Box 3C 요렇게 2개

우선 Raspberry Pi 3 를 이용해서 RTAndroid 설치와 Google Play Store 설치까지 진행 해 본다.

 
1. 설치 이미지 다운로드
DownLoad : rtandroid-aosp-7.1-20161224-rpi3
위 “참고1″사이트에서 원하는 이미지를 다운 받는다.
 
2. SD CARD 삽입
RTAndroid 를 설치할 SD CARD 를 리눅스 머신에 삽입한다.  
 
3. 압축 해제
# unnzip rtandroid-aosp-7.1-20161224-rpi3.zip -d ./Android
 
4. 이미지 설치 
# cd ~/Android
# ./install.sh -p -f /dev/sdX ( “X” SD CARD 디바이스 명 )
 
요렇게 설치를 해 주면 RTAndroid 이미지가 SD CARD 에 설치 된다.
파티셔닝부터 이미지 설치까지…
 
여기까지 완료 했다면 RTAndroid 설치는 완료 된 것이며, Google Play Store 를 설치하기 위해선 아래의 과정을
실행해야 된다. ( Raspberry Pi 3 는 부팅 후 IP 를 잡아 놓는다. )
 
 
우선 Google Play Store 설치를 위해서 “참고2” 를 보고 따라하면 된다. ( 본인은 CentOS 7 버전 이므로 )
 
# tar zxvf android-sdk_r24.4.1-linux.tgz
# mv android-sdk-linux android-sdk_r24.4.1-linux
# chown -R root:root android-sdk_r24.4.1-linux
# ln -s android-sdk_r24.4.1-linux android-sdk
 
# export PATH=$PATH:/root/android-sdk/platform-tools/
 
# cd /root/android-sdk/tools
# sudo ./android update sdk –no-ui
 
# /root/android-sdk/tools/android list sdk –all
# /root/android-sdk/tools/android update sdk -u -a -t 1,2,5,28,102,137,138,144
 
#/root/android-sdk/platform-tools/adb connect $(Raspberry Pi 3 가 잡은 IP ) 
>> 그리고lzip 패키지가 필요 하므리 미리 설치를 해 둔다. epel repository 에 패키지 있음.
 
./gapps.sh -a arm -i $(Raspberry Pi 3 가 잡은 IP ) 
위 명령어가 정상 실행되면 패키지와 관련 라이브러리가 설치되며 재부팅 후  RTAndroid 에서 Google Play Store 가
사용 가능 해진다.
 
 
Raspberry Pi 3 에서 구동되는 RTAndroid 영상~!

RHCS6 번의 패키지를 설치하고 ricci 서비스를 기동하려 했으나.
아무런 반응도 없고? 서비스가 기동되지 않을때?

—————————————————–
[root@gfs01 ~]# /etc/init.d/ricci start
[root@gfs01 ~]# /etc/init.d/ricci status
[root@gfs01 ~]# /etc/init.d/ricci stop
[root@gfs01 ~]#
—————————————————–

왜??? 반응이 없을까???

디버그를 해 보니??? 뭔가 변수가 안 들어오네?

—————————————————–

+ NSS_CERTS_DIR=/var/lib/ricci/certs
+ NSS_PKCS12=/var/lib/ricci/certs/server.p12
++ id -u
+ ‘[‘ 0 = 0 ‘]’
+ ‘[‘ ” = yes ‘]’ <== 요기 값이 안 들어옴
+ exit 1
—————————————————–

그래서 이유를 찾던중? 아래 파일의 내용을 확인해보니?

file : /etc/init.d/ricci  

—————————————————–
#
# If we’re not configured, then don’t start anything.
#
[ “${NETWORKING}” = “yes” ] || exit 1

—————————————————–

네트워킹 관련 값을 찾아오더라는???

추측에 추측을 해 본결과.

—————————————————–
file /etc/sysconfig/network

HOSTNAME=gfs01.cs
—————————————————–

파일에 내용이 좀 모자르네???

그래서 아래 내용을 추가해줌.

—————————————————–
NETWORKING=yes
HOSTNAME=gfs01.cs
—————————————————–

결과?
—————————————————–
[root@gfs01 ~]# /etc/init.d/ricci start
ricci 시작 중: [ OK ]
[root@gfs01 ~]# /etc/init.d/ricci status
ricci (pid 10434)를 실행하고 있습니다..
[root@gfs01 ~]#
[root@gfs01 ~]# /etc/init.d/ricci stop
Shutting down ricci: [ OK ]
[root@gfs01 ~]#
—————————————————–
정상 작동 함.

wordpress 를 업그레이드 하는 도중 무슨 이유로 upgrade 를 완료하지 못 했을경우

http://domain.com/wp-admin/upgrade.php?_wp_http_referer=%2Fwp-admin%2F

위와 같은 주소로 리다이렉트 되면서 관리자 페이지가 접속 되지 않는 문제.

해결 방법은 wordpress 상의 db version 과 db 상의 db version 이 상이하여 발생된
문제임.

버전을 높은쪽 기준으로 맞춰주면 해결됨.

wordpress config :
file : wordpress/wp-includes/version.php

/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
*
* @global int $wp_db_version
*/
$wp_db_version = 38590; <== this

DataBase :
wordpress database – wp_options tables – db_version colume – vlaue = 38590 <== this