lvm
# LVM 안쓸때:
물리디스크(/dev/sdX) ---> 파티션(/dev/sdXN) ---> 마운트 해서 사용
# LVM 쓰면
물리디스크(PV) 물리디스크(PV) 를 VG로 해서 예전디스크처럼 사용.
VG(예전디스크)를
LV(예전파티션)로 파티션해서
LV를 마운트 한다. /dev/vg이름/lv이름 (이름모르면 lvdisplay 하면 나옴)
-------------------------------
# 구조 확인
lsblk
# list
pvs
vgs
lvs
#
pvscan
vgscan
lvscan
# list detail
pvdisplay
vgdisplay
lvdisplay
# pv만들기
# 전체디스크면 fdisk 없이. 바로 pvcreate 하거나.
pvcreate /dev/sdN
# 파티션 fdisk 후에. pvcreate 하거나
fdisk -l
fdisk /dev/sdNX
n
p
t 8e # Linux LVM
w
pvcreate /dev/sdNX
pvs
vgs
lsblk
# vg 만들기
vgcreate pv이름 pv이름 vg이름
lvcreate -L lv용량 -n lv이름 vg이름
lvcreate -l 50%FREE -n lv이름 vg이름
lvcreate -L 2500 (2500MB)
lvcreate -L 15G
lvcreate -l 50%VG (전체VG용량의 50%)
lvcreate -l 50%FREE (남은VG용량의 50%)
lvcreate -l 100%FREE (남은VG용량 전부)
# 포맷
mkfs -t ext4 /dev/vg이름2/lv이름
#디바이스 이름은
/dev/vg이름/lv이름
모르면 lvdisplay 하면 나옴.
# vg 확장
vgextend vg이름 pv이름
# lv확장
lvextend -L 1G lv이름 (전체용량을 전체1G로 확장. 현재용량이 1G보다 큰 상태면 오류남)
lvextend -L +1G lv이름 (전체용량을 1G를 추가함.)
lvextend -l +100%FREE lv이름 (남은 공간 전체를 추가)
resize2fs /dev/vg이름/lv이름
# lv 저장방식
linear LV: 기본 저장방식. 순서대로 저장함 (1번디스크 다 쓰고, 2번 쓰고, 3번 쓰고)
striped LV: 디스크(pv) 동일하게 저장. 읽고 쓰기 속도 증가함. (1번 2번 3번 동일하게 쓰기)
lvcreate -i 숫자(striped할 pv갯수)
단 lv가 속한 vg에 속한 pv보다 크면 안된다.
물리하드가 2개인데, -i 3 하면 안됨.
'Ubuntu' 카테고리의 다른 글
dkms module fail status remove build install (0) | 2017.09.15 |
---|---|
IPTIME A2000UA Ubuntu 16.04 Linux dkms (0) | 2017.08.04 |
freetds : SQLSTATE[01002] Adaptive Server connection failed (severity 9) (0) | 2017.08.03 |
ubuntu geoip php 설치 (0) | 2015.09.10 |
ubuntu 14.04 apt-get kernel upgrade (0) | 2015.09.07 |
3줄요약:
1. http://crawl.tistory.com/60 에서 Ubuntu 16.04 에 dkms 로 설치한 IPTIME A2000UA(rtl8812au) 동작안함
2. modinfo 8812au 로 확인해보니. vermagic 커널버전이 이상함
3. dkms status, remove, build, install 로 해당 모듈을 재설치한 후에 다시 잘 동작함.
http://crawl.tistory.com/60 에서 설치한 무선드라이버가 어느날 갑자기 동작안함.
ifconfig 에서도 안보이고
iwconfig 에서도 안보임
usb를 뽑았다가 재연결하면서 나오는 메세지( /var/log/messages )를 확인해봄.
ubuntu kernel: [ 301.484015] usb 1-5: new high-speed USB device number 5 using ehci-pci
ubuntu kernel: [ 301.616871] usb 1-5: New USB device found, idVendor=0bda, idProduct=8812
ubuntu kernel: [ 301.616878] usb 1-5: Product: 802.11n NIC
ubuntu kernel: [ 301.616880] usb 1-5: Manufacturer: Realtek
ubuntu kernel: [ 301.620384] 8812au: disagrees about version of symbol module_layout
모듈정보 확인해봄. (파일은 4.4.0-93버전인데. vermagic은 4.4.0-92임)
# modinfo 8812au
filename: /lib/modules/4.4.0-93-generic/updates/dkms/8812au.ko
version: v4.3.20_16317.20160108
vermagic: 4.4.0-92-generic SMP mod_unload modversions
다른 랜모듈과 비교해봄. (4.4.0-93으로 동일함)
# modinfo r8169
filename: /lib/modules/4.4.0-93-generic/kernel/drivers/net/ethernet/realtek/r8169.ko
vermagic: 4.4.0-93-generic SMP mod_unload modversions
dkms 상태확인.
# dkms status
rtl8812AU, 4.3.20, 4.4.0-92-generic, x86_64: installed
rtl8812AU, 4.3.20, 4.4.0-93-generic, x86_64: installed
dkms 제거-빌드-설치후에 리부팅
# dkms remove rtl8812AU/4.3.20 -k "$(uname -r)/$(uname -p)"
# dkms build rtl8812AU/4.3.20 -k "$(uname -r)/$(uname -p)"
# dkms install rtl8812AU/4.3.20 -k "$(uname -r)/$(uname -p)"
잘됨. dkms 로 설치한 모듈이 오류나면 제거-빌드-설치 하기.
# modinfo 8812au
filename: /lib/modules/4.4.0-93-generic/updates/dkms/8812au.ko
version: v4.3.20_16317.20160108
vermagic: 4.4.0-93-generic SMP mod_unload modversions
'Ubuntu' 카테고리의 다른 글
LVM (0) | 2022.05.28 |
---|---|
IPTIME A2000UA Ubuntu 16.04 Linux dkms (0) | 2017.08.04 |
freetds : SQLSTATE[01002] Adaptive Server connection failed (severity 9) (0) | 2017.08.03 |
ubuntu geoip php 설치 (0) | 2015.09.10 |
ubuntu 14.04 apt-get kernel upgrade (0) | 2015.09.07 |
OS: Ubuntu 16.04 Server
모델: IPTIME A2000UA
칩셋: iptime홈피 제품명 검색 다운로드. readme파일에 rtl8812au 칩셋확인
무선랜 드라이버를 설치할 것이고, 커널버전업후에도 수동 재컴파일 하지 않도록
dkms (Dynamic Kernel Module Support)방법으로 설치할 것이다.
설치: "4"번으로 설치함. (설치하실 분들은 바로 4번으로 가서 설치)
1. 우분투 공식 드라이버(4.3.8): 실패 (인식은 되나 iw list 에서 안나옴)
2. iptime홈피 드라이버(4.3.20): 동작 (컴파일오류로 1줄주석처리, dkms모듈미적용으로 커널버전업시 재컴파일해야함)
3. github.com 드라이버(4.3.14): 동작 (컴파일 잘됨. dkms설치-1줄이 홈피설명과 다름)
4. github.com 드라이버(4.3.20): 사용 (컴파일 잘됨. dkms설치-1줄이 홈피설명과 다름)
1. 우분투 공식 드라이버(4.3.8)
apt-get install rtl8812au-dkms 설치
랜카드 인식됨.
iwconfig 정보나옴
iw list 에서 아무런 메세지가 안나옴.
2. iptime홈피 드라이버(4.3.20)
iptime source안에 /driver/디렉토리
make 하면 오류남.
해당 소스파일 열어보면, 그냥 컴파일된 날짜와 시간 정보임.
해당 오류라인. 주석처리하고 다시
make clean
make
make install 하면 아래와 같이 설치함.
install -p -m 644 8812au.ko /lib/modules/4.4.0-87-generic/kernel/drivers/net/wireless/
/sbin/depmod -a 4.4.0-87-generic
iw list 동작함.
단점: dkms.conf 파일이 없어서, 커널버전업되면, 다시 컴파일해서 설치를 해야함.
모듈정보확인: modinfo 8812au
모듈삭제: rmmod 8812au
갱신: depmod -a
3. github.com 드라이버(4.3.14, 4.3.20)
https://github.com/diederikdehaas/rtl8812AU 설명
기본은 4.3.14 버전으로 되어 있음.
4.3.14 버전도 설치하면 잘 동작함.
https://github.com/diederikdehaas/rtl8812AU/archive/driver-4.3.14.zip 다운로드
왼쪽중단의 Branch를 눌러서 4.3.20으로 변경 가능.
https://github.com/diederikdehaas/rtl8812AU/tree/driver-4.3.20 설명
https://github.com/diederikdehaas/rtl8812AU/archive/driver-4.3.20.zip 다운로드
4. 본버전 다운로드
apt install dkms (커널업글에 따른 모듈 재설치를 자동화)
wget https://github.com/diederikdehaas/rtl8812AU/archive/driver-4.3.20.zip
unzip driver-4.3.20.zip
cd rtl8812AU-driver-4.3.20
dkms으로 설치하기. 설명은 아래 홈피에 나옴. 1줄만 다르게.
#출처: https://github.com/diederikdehaas/rtl8812AU/tree/driver-4.3.20
DRV_NAME=rtl8812AU
DRV_VERSION=4.3.20
mkdir /usr/src/${DRV_NAME}-${DRV_VERSION}
#안 먹힘. 현재 소스에서 .git 정보만 빼고, /usr/src/rtl8812AU-4.3.20으로 복사하려는 것임
#git archive driver-${DRV_VERSION} | tar -x -C /usr/src/${DRV_NAME}-${DRV_VERSION}
#아래 명령으로 대체함.
# git로 다운로드 했을때에는
git archive HEAD | tar -x -C /usr/src/${DRV_NAME}-${DRV_VERSION}
# zip파일을 다운로드 했을때에 그냥 복사하기
cp -r * /usr/src/${DRV_NAME}-${DRV_VERSION}
dkms add -m ${DRV_NAME} -v ${DRV_VERSION}
dkms build -m ${DRV_NAME} -v ${DRV_VERSION}
dkms install -m ${DRV_NAME} -v ${DRV_VERSION}
# dkms로 설치를 했기 때문에 커널 버전업(4.4.0-87 --> 4.4.0-89)을 해도 모듈재설치가 자동으로 되었다.
# 커널4.4.0-87 에서 설치함.
modinfo 8812au
filename: /lib/modules/4.4.0-87-generic/updates/dkms/8812au.ko
version: v4.3.20_16317.20160108
# 커널4.4.0-89 업글후에도 모듈이 자동재설치가 잘 되어 있다.
modinfo 8812au
filename: /lib/modules/4.4.0-89-generic/updates/dkms/8812au.ko
version: v4.3.20_16317.20160108
# 삭제를 할려면
# DRV_NAME=rtl8812AU
# DRV_VERSION=4.3.20
# dkms remove ${DRV_NAME}/${DRV_VERSION} --all
----실제삭제시 메세지----
# DRV_NAME=rtl8812AU
# DRV_VERSION=4.3.20
# dkms remove ${DRV_NAME}/${DRV_VERSION} --all
-------- Uninstall Beginning --------
Module: rtl8812AU
Version: 4.3.20
Kernel: 4.4.0-87-generic (x86_64)
-------------------------------------
Status: Before uninstall, this module version was ACTIVE on this kernel.
8812au.ko:
- Uninstallation
- Deleting from: /lib/modules/4.4.0-87-generic/updates/dkms/
- Original module
- No original module was found for this module on this kernel.
- Use the dkms install command to reinstall any previous module version.
depmod......
DKMS: uninstall completed.
------------------------------
Deleting module version: 4.3.20
completely from the DKMS tree.
------------------------------
Done.
'Ubuntu' 카테고리의 다른 글
LVM (0) | 2022.05.28 |
---|---|
dkms module fail status remove build install (0) | 2017.09.15 |
freetds : SQLSTATE[01002] Adaptive Server connection failed (severity 9) (0) | 2017.08.03 |
ubuntu geoip php 설치 (0) | 2015.09.10 |
ubuntu 14.04 apt-get kernel upgrade (0) | 2015.09.07 |
4줄요약:
서버 환경: Ubuntu 14.04, freetds 0.91, PHP5, MSSQL
오류 발생: 가끔 SQLSTATE[01002] Adaptive Server connection failed (severity 9)
원인 찾기: 오류시에 log 남겨서, 오류 발생 확률(0.5%) 및 오류메세지 확인.
문제 해결: freetds 버전업 (ubuntu PPA 버전 사용)
1. 오류 발생:
일상적인 오류 였으면, 쉽게 발견되었을 건인데.
나중에 통계 내어 보니. 0.5% 확률로 발생하는 오류여서, 늦게 발견이 되었다.
오류메세지
"SQLSTATE[01002] Adaptive Server connection failed (severity 9)"
2. 오류 기록:
일시적인 것인지? 아니면 주기적인 것인지? 일단 log 를 남기기로 하였다.
<?php
$directoryName = '웹디렉토리가 아닌 디렉토리';
$fileName = $directoryName . 'log.txt';
if (is_writable($directoryName)) {
#echo '디렉토리 쓰기 가능';
$url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
if (filter_var($url, FILTER_VALIDATE_URL)) {
#echo "좋은 URL";
$fileContent = date("Ymd_His") . ' ' . $url . ' ' . $e->getMessage() . "\n";
file_put_contents($fileName, $fileContent, FILE_APPEND | LOCK_EX);
} else {
echo "나쁜 URL";
}
} else {
echo '디렉토리 쓰기 불가';
}
?>
오류 발생시에는
/웹디렉토리가 아닌 디렉토리/log.txt 파일에 아래와 같이 기록이 남게 함.
20170701_205408 오류발생한URL 오류메세지
3. 오류 통계
오류가 매일 조금이지만 로그에 남았다.
오류 로그에 남은 URL을 웹로그 파일에서 카운트해 보니.
대략 0.5% 확률로 오류가 꾸준히 발생하고 있었다.
4. 오류 상세내역
/etc/freetds/freetds.conf 설정파일에서
디버깅 로그를 활성화.
dump file = /tmp/freetds.log
아래의 오류를 확인함.
dblib.c:7981:20017: "Unexpected EOF from the server"
dblib.c:8002:"Unexpected EOF from the server", client returns 2 (INT_CANCEL)
5. 오류 해결 찾기
구글링 해본 대략적인 해결 방안은
MS에서 새로 나온 PHP-MSSQL드라이버를 쓰기
PHP5 mssql 옵션 변경
freetds 최신버전업 등의 글이 보였다.
freetds changelog 에 나온 mssql 관련 내용을 보고.
--------------------------------------------------
Author: Frediano Ziglio <freddy77@gmail.com>
Date: Tue May 2 23:26:24 2017 +0100
Fix very big login packet using MSSQL
If login packet is really big to split into multiple TDS packets
and is encrypted MSSQL only encrypt the first TDS packet, the others
are not encrypted.
--------------------------------------------------
freetds 버전업을 해보기로 함.
6. freetds 버전업 결정
ubuntu 14.04 : freetds 0.91-5
ubuntu 16.04 : freetds 0.91-6
2017년 5월 2일 이후 버전으로 설치를 해야하는데.
ftp://ftp.freetds.org/pub/freetds/stable/ 에서 날짜를 보니
freetds-1.00.38 이후 버전을 설치를 해야함.
소스설치 보다는 Ubuntu PPA버전으로 설치를 해보기로 함.
7. freetds PPA 설치
-----Ubuntu 14.04, 16.04-----
add-apt-repository ppa:jamiewillis/freetds #저장소추가
apt-get update
apt-get remove freetds-bin #기존 0.91버전 삭제
apt-get install freetds # PPA freetds 1.0.44설치
apt-get -o Dpkg::Options::="--force-overwrite" install freetds #Man페이지 강제덮어쓰기
/etc/freetds.conf 에 설정추가
client charset = UTF-8
dump file = /tmp/freetds.log
connect timeout = 5
service apache2 restart
웹페이지 접속 및
/tmp/freetds.log 에서 버전 확인
8. 확인
몇일이 지났는데, 0.5% 확률로 발생하던 오류가 1건도 나지 않았다.
Ubuntu 14.04 또는 16.04에서 기본 freetds 0.91버전을 MSSQL과 사용하는 분들은
1.00.38이후의 freetds 버전으로 업그레이드 하는 것이 좋을 것 같다.
'Ubuntu' 카테고리의 다른 글
LVM (0) | 2022.05.28 |
---|---|
dkms module fail status remove build install (0) | 2017.09.15 |
IPTIME A2000UA Ubuntu 16.04 Linux dkms (0) | 2017.08.04 |
ubuntu geoip php 설치 (0) | 2015.09.10 |
ubuntu 14.04 apt-get kernel upgrade (0) | 2015.09.07 |
o 샘플코드
<?php
$ip=$_SERVER['REMOTE_ADDR'];
echo $ip;
$country = geoip_country_code_by_name($ip);
if ($country) {
echo 'This host is located in: ' . $country;
}
o getip php 설치하기 (ubuntu )
# apt-get install php5-geoip
# service apache2 reload
'Ubuntu' 카테고리의 다른 글
LVM (0) | 2022.05.28 |
---|---|
dkms module fail status remove build install (0) | 2017.09.15 |
IPTIME A2000UA Ubuntu 16.04 Linux dkms (0) | 2017.08.04 |
freetds : SQLSTATE[01002] Adaptive Server connection failed (severity 9) (0) | 2017.08.03 |
ubuntu 14.04 apt-get kernel upgrade (0) | 2015.09.07 |
Ubuntu 14.04 에서 apt-get 으로 커널 버전업 하기.
o 아래와 같이 일반적인 패키지 업데이트 및 업그레이드들 하면.
커널 버전은 업그레이드 하지 않습니다.
% apt-get update
% apt-get upgrade
o 패키지 업그레이드가 완료된후에, 더 이상 업그레이드할 패키지가 없을때에
한번더 업그레이드 명령을 입력하면,
% apt-get upgrade
o 아래와 같은 메세지가 나옵니다.
The following packages have been kept back:
linux-generic linux-headers-generic linux-image-generic
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
o 현재 커널 버전을 확인한 후에
% uname -a
Linux ubuntu 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
o apt-get으로 위의 3개의 패키지를 설치합니다.
% apt-get install linux-generic linux-headers-generic linux-image-generic
o 리부팅을 하면, 업그레이드한 커널버전이 적용됩니다.
% uname -a
Linux ubuntu 3.13.0-63-generic #103-Ubuntu SMP Fri Aug 14 21:42:59 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
'Ubuntu' 카테고리의 다른 글
LVM (0) | 2022.05.28 |
---|---|
dkms module fail status remove build install (0) | 2017.09.15 |
IPTIME A2000UA Ubuntu 16.04 Linux dkms (0) | 2017.08.04 |
freetds : SQLSTATE[01002] Adaptive Server connection failed (severity 9) (0) | 2017.08.03 |
ubuntu geoip php 설치 (0) | 2015.09.10 |