ZFS 파일시스템에 관하여

솔라리스에서 ZFS 파일시스템을 사용한다. 작년 7월 정도에 97%에 디스크 IO 가 100%를 치며 시스템이 정지된 경우가 발생했다. 그래서 95% 가 넘으면 디스크가 풀이 찼다고 생각하고 관리하고 있었다. 이번엔 90% 넘으면서 관찰을 하기 시작했다. 올해는 94%에 디스크 IO 가 100%를 치기 시작했다. 디스크 풀이라는 생각이 들기 시작했다. 파일을 지우고 빈공간을 확보하고 나서야 시스템은 안정이 되었다. ZFS 는 임시 공간에 파일을 할당하고 이를 실제 디스크에 쓰는 방식으로 작동한다고 한다. 이는 곧 임시공간도 사용하는 공간으로 생각해야 한다는 말이다. 꿈의 파일시스템 이라던 것은 결국엔 낭비가 가득한 파일시스템이었다. 엔지니어도 어느정도를 안정적으로 유지해야 하는지 정확히 가이드를 하지 못한다. 10테라 공간이면 1테라 정도를 사용하지 못한다고 봐야 한다. 이는 얼마나 낭비인가? ZFS 파일시스템을 도입 하려면 꼭 디스크 용량이 충분한지 검토해야 한다.

맥 파일시스템(HFS) 우분투에서 읽고 쓰기 하기

맥북에 USB를 꼽아 맥용으로 포맷을 하고 그 안에 파일을 담아서 그 USB를 우분투에 꼽아서 파일을 읽고 쓰게 하는 방법이다. 먼저 우분투에서 맥용 파일을 읽을 수 있는 게 필요하다. $ sudo apt-get install hfsprogs 그런 다음 USB가 설치된 위치를 알아야 한다 $ fdisk -l 이 명령어를 치면 리스트가 나온다 /dev/sdb2 1024 1024 1024 af HFS/HFS+  이런식으로 나온다 이제 HFS 파일을 체크한다. $ sudo fsck.hfsplus -f /dev/sdb2 ** /dev/sdb2 ** Checking HFS Plus volume. ** Checking Extens Overflow file. ** Checking multi-linked files. ** Checking Catalog hierarchy. ** Checking Extended Attributes file. ** Checking volume bitmap. ** Checking volume information. ** The volume Macintosh appears to be OK. 위 화면이 나오면 이제 기존 마운트를 해제한다. $ sudo amount /media/ooo 이제 읽고 쓰기 권한으로 다시 마운트를 한다 $ sudo mount -o force,rw /dev/sdb2 /media/ooo 해당 파일을 보면 chmod 가 400으로 되어 있는 경우가 있다 이를 777로 풀어서 사용하면 된다 $ sudo chmod 777 file 나 같은 경우는 위와 같이 했을 때 되었다.

Ubuntu Server 15.10 GUI 최소 설치

우분투 서버를 설치한 다음 최소 형태의 GUI 를 설치하는 방법이다. 1. 먼저 우분투 서버를 설치한다. 2. 이제 저장소 파일을 최신화 한다. $ sudo apt-get update $ sudo apt-get upgrade 3. 이제 최소 형태의 GUI를 설치한다 $ sudo apt-get install --no-install-recommends ubuntu-desktop 4. GUI 모드로 실행한다 $ startx 5. 터미널을 뜨운다.   Ctrl + Alt + T 키를 이용하면 터미널이 뜬다. 6. 필요한 애플릿을 설치한다 앱이 뜨는 메뉴를 설치한다 $ sudo apt-get install indicator-appmenu-tools 세션 관련 메뉴를 설치한다 $ sudo apt-get install indicator-session 나는 이정도면 나머지는 필요할때마다 설치하면 된다.

맥북 랜섬웨어 조치 기록

맥북에서 유토렌트를 이용하여 파일을 받곤 하였는데 유토렌트의 광고가 눈에 거슬려서 광고 없는 토렌트 클라이언트를 찾아보았다. 리눅스에서만 지원하던 Transmission 이 맥용으로 있었다. 그걸 설치한게 화근이었다. 이어 평상시와 같이 프로그램 수정을 하며 지냈다. 그러던 어느날 모든 파일이 암호화가 되어 있었다. 영문으로 된 텍스트 파일을 대충 해석하니 RSA 방식으로 암호화를 했으며 2048 비트 암호화 이고 비트코인을 주면 해독키를 준다는 것이었다. 친절하게도 몇개의 파일만 풀 수 있는 맛보기도 할 수 있는 안내도 있었다. 몇번의 검색으로 내용을 파악했다. Trasmission 2.90 버전에서 kernel_service 파일이 암호화를 한다는 것이었다. 공개홈페이지에서 다운 받아 설치했는데 그 서버가 탈취되었었다는 방증 아닌가. 일단 암호화된 파일을 풀 길은 포기하기로 했다. 다행인건 맥북 에어라 용량이 작아서 중요 파일이 10기가 미만이었다. 구글 드라이브와 연동해놓았는데 3기가 정도의 파일이 있었다. 맥북을 밀고 다시 설치하기로 했다. 많은 시간이 걸려 다시 설치하고 업데이트를 했다. 그런 다음 구글 드라이브에서 파일을 다운 받았더니 최신 파일이 그대로 유지되었다. 새삼 구글 드라이브의 강력함을 알게 되는 순간이었다.

[swift 2] for (index, item) in list.enumerate 구문 사용하는 방법

스위프트 언어에서 for-in 구문은 매우 강력하다. 하지만 리스트의 객체에서 해당 객체가 몇번째인지 알아야 할때가 종종 발생한다. 이럴때 이 방법을 사용하면 된다 for (index, item) in list.enumerate() {   // 일단 어떻게 나오는지 찍어보자   print("index:\(index), item:\(item)")   item.해야할 일()   list.removeAtIndex(index) } 나 같은 경우는 list 내에서 item이 해야할 일이 있고 해당 item이 들어 있는 list 배열에서 삭제해야 했다. 위와 같은 코드로 해결이 되었다.

맥에서 ISO 를 USB 넣기

맥에서 ISO 파일을 USB에 넣을 경우에 사용하는 방법이다. 먼저 IMG 파일로 전환해야 한다. $ hdiutil convert -format UDRW -o target.img source.iso 이렇게 하면 target.img 파일이 생성된다. 이 파일을 USB에 넣으면 된다. 먼저 USB 를 꼽은 다음 명령어로 상태를 알자. $ diskutil list 보통 /dev/disk1 으로 잡힌다. 이제 마운트를 해제해야 한 $ diskutil unmountDisk /dev/disk1 해제 되었으면 이제 이미지 파일을 복사하면 된다 $ sudo dd if=target.img of=/dev/rdisk1 bs=1m 에러가 나지 않으면 복사하고 있는 것이다. 상태는 Ctrl + T 를 입력하면 보인다. Resource Busy 가 발생하면 강제로 마운트를 해제하면 된다. 나도 이런경우가 발생하였는데 디스크 유틸리티에서 강제해제 한 후 했더니 됐다.

swift 원형 프로그레스 제작

import UIKit class CircleProgress: UIView {     // 전역변수     let circle = CAShapeLayer ()     let pause = CAShapeLayer ()     let progress = CAShapeLayer ()     let mask = CAShapeLayer ()     let black = UIColor . blackColor (). CGColor     // 초기값     var value: CGFloat = 0.0          required init ?(coder: NSCoder ) {         super . init (coder: coder)         Start ()     }          override init (frame: CGRect ) {         super . init (frame: frame)         Start ()     }          func Start() {         // 크기         let rect = self . bounds         let pauseRect = rect. insetBy (dx: rect. width / 3 , dy: re...