차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
btrfs를_응용한_no-hdd_pc방_구축 [2015/03/04 15:55]
admin [3. ISCSI 볼륨 만들기]
btrfs를_응용한_no-hdd_pc방_구축 [2015/06/19 00:49] (현재)
줄 1: 줄 1:
 ====== btrfs를 이용한 No-HDD PC방 구축 ====== ====== btrfs를 이용한 No-HDD PC방 구축 ======
- 
  
  :!: 원글 링크 : http://​2cpu.co.kr/​bbs/​board.php?​bo_table=vm&​wr_id=2343  :!: 원글 링크 : http://​2cpu.co.kr/​bbs/​board.php?​bo_table=vm&​wr_id=2343
- 
- 
  
 ===== 0. 우분투 설치 ===== ===== 0. 우분투 설치 =====
줄 10: 줄 7:
 /iscsi <​--- ​ 사용자지정 /iscsi <​--- ​ 사용자지정
  
-  * DHCP 서버  +  * DHCP 서버 
-  * TFTP 서버 ​  +  * TFTP 서버 
-  * ISCSI 서버  +  * ISCSI 서버 
-  * BTRFS 화일 시스템  +  * BTRFS 화일 시스템 
-    +
 ===== 1. 네트웍 설정 ===== ===== 1. 네트웍 설정 =====
-서버의 IP 어드레스를 설정 합니다 ​+서버의 IP 어드레스를 설정 합니다
 <code vim> <code vim>
-/​etc/​network/​interface  +/​etc/​network/​interface 
-   + 
-auto eth0   +auto eth0 
-iface eth0 inet static  +iface eth0 inet static 
-        address 211.168.0.3 ​                  +        address 211.168.0.3 
-        netmask 255.255.255.0  +        netmask 255.255.255.0 
-        gateway 211.168.0.1 ​          +        gateway 211.168.0.1 
-        dns-nameservers 168.124.101.2 ​ +        dns-nameservers 168.124.101.2
 </​code>​ </​code>​
-  ​+
 ===== 2. 서버 프로그램 인스톨 ===== ===== 2. 서버 프로그램 인스톨 =====
-  ​ 
-우분투는 인터넷에 연결되어 있으면 필요한 프로그램을 설치하기가 쉽습니다.. ​ 
  
-  ​* # DHCP 서버 프로그램 설치 ​+우분투는 인터넷에 연결되어 있으면 필요한 프로그램을 설치하기가 쉽습니다.. 
 + 
 +  ​* # DHCP 서버 프로그램 설치
 <​code>​ <​code>​
-root:/#​apt-get install isc-dhcp-server ​+root:/#​apt-get install isc-dhcp-server
 </​code>​ </​code>​
  
-  * #TFTP 서버 프로그램 설치 ​+  * #TFTP 서버 프로그램 설치
 <​code>​ <​code>​
-root:/#​apt-get install xinetd  +root:/#​apt-get install xinetd 
-root:/#​apt-get install tftpd +root:/#​apt-get install tftpd
 root:/#​apt-get install hpa-tfpd root:/#​apt-get install hpa-tfpd
 </​code>​ </​code>​
  
-  * #​BTRFS-TOOLS 설치 ​+  * #​BTRFS-TOOLS 설치
 <​code>​ <​code>​
-root:/#​apt-get install btrfs-tools ​+root:/#​apt-get install btrfs-tools
 </​code>​ </​code>​
  
-  * #iscsi 서버 설치 ​+  * #iscsi 서버 설치
 <​code>​ <​code>​
-root:/#​apt-get install iscsitarget iscsitarget-dkms ​+root:/#​apt-get install iscsitarget iscsitarget-dkms
 </​code>​ </​code>​
-  ​+
 ===== 3. ISCSI 볼륨 만들기 ===== ===== 3. ISCSI 볼륨 만들기 =====
  
- - 위의 프로그램이 전부 인스톨 되어 있으면 프로그램 세팅에 들어갑니다.. ISCSI TARGET 설정으로 하드가 없는 클라이언트에 하드 디스크 볼륨을 만들어 줍니다.. ​+ - 위의 프로그램이 전부 인스톨 되어 있으면 프로그램 세팅에 들어갑니다.. ISCSI TARGET 설정으로 하드가 없는 클라이언트에 하드 디스크 볼륨을 만들어 줍니다..
  
- - 처음에 리눅스 인스톨할때 BTRFS 파일 시스템 100G 로 /iscsi 로 마운트 해서 만들 었습니다. ​+ - 처음에 리눅스 인스톨할때 BTRFS 파일 시스템 100G 로 /iscsi 로 마운트 해서 만들 었습니다.
 주의 : 100G 가 파일시스템을 만들었으면 새로 생성될 이미지 크기는 50% 정도만 사용해야 사용중 Full 상태가 안날수 있습니다. 주의 : 100G 가 파일시스템을 만들었으면 새로 생성될 이미지 크기는 50% 정도만 사용해야 사용중 Full 상태가 안날수 있습니다.
  
 <​code>​ <​code>​
-root:/# mkdir /​iscsi/​image ​                      +root:/# mkdir /​iscsi/​image 
-root:/# chmod 755 /​iscsi/​image ​              +root:/# chmod 755 /​iscsi/​image 
-root:/# btrfs subvolume create /​iscsi/​image/​win7 ​  +root:/# btrfs subvolume create /​iscsi/​image/​win7 
-root:/# chmod 755 /​iscsi/​image/​win7 ​   +root:/# chmod 755 /​iscsi/​image/​win7
 </​code>​ </​code>​
  
- - 볼륨 이미지 생성 ​+ - 볼륨 이미지 생성
 <​code>​ <​code>​
 root:/# dd if=/​dev/​zero of=/​iscsi/​image/​win7/​win7.img bs=1048576 count=500000 root:/# dd if=/​dev/​zero of=/​iscsi/​image/​win7/​win7.img bs=1048576 count=500000
 </​code>​ </​code>​
-50기가의 빈 파일을 생성합니다 ​+50기가의 빈 파일을 생성합니다
  
-  * /​etc/​default/​iscsitarget 파일을 수정 합니다.  +  * /​etc/​default/​iscsitarget 파일을 수정 합니다. 
-ISCSITARGET_ENABLE=true ​     ----- > true 로 수정하시고 저장하시면 됩니다. ​+ISCSITARGET_ENABLE=true ​     ----- > true 로 수정하시고 저장하시면 됩니다.
  
-  * /​etc/​iet/​ietd.conf 파일의 마지막에 다음을 추가 합니다. ​+  * /​etc/​iet/​ietd.conf 파일의 마지막에 다음을 추가 합니다.
 <code vim> <code vim>
-Target iqn.2014-08.vitamin.com:​master ​   -----> iscsi target 이름  +Target iqn.2014-08.vitamin.com:​master ​   -----> iscsi target 이름 
-    Lun 0 Path=/​iscsi/​image/​win7/​win7.img,​Type=fileio ​ ------> iscsi target image path  +    Lun 0 Path=/​iscsi/​image/​win7/​win7.img,​Type=fileio ​ ------> iscsi target image path 
-Alias client1 ​       --> 별명 생략가능  +Alias client1 ​       --> 별명 생략가능 
-MaxConnecions ​   1  ------> 설정 안하면 iscsi 동시 접속시 파일시스템 깨짐 ​+MaxConnecions ​   1  ------> 설정 안하면 iscsi 동시 접속시 파일시스템 깨짐
 </​code>​ </​code>​
  
-  * Iscsi target 재시작 ​+  * Iscsi target 재시작
 <​code>​ <​code>​
-root:/# service iscsitarget restart ​                                                 +root:/# service iscsitarget restart
 </​code>​ </​code>​
- ​에러 없이 ok 나오면 정상적으로 이미지를 생성한것이고 틀리면 위를 다시한번 살펴 보세요 ​+ ​에러 없이 ok 나오면 정상적으로 이미지를 생성한것이고 틀리면 위를 다시한번 살펴 보세요
  
 ===== 4. 클라이언트가 연결할 DHCP, TFTP, gPXE 설정 ===== ===== 4. 클라이언트가 연결할 DHCP, TFTP, gPXE 설정 =====
-http://​rom-o-matic.net/​gpxe/​gpxe-1.0.1/​contrib/​rom-o-matic/​  +http://​rom-o-matic.net/​gpxe/​gpxe-1.0.1/​contrib/​rom-o-matic/​ 
-에서 undionly.kpxe 를 다운로드 합니다..  +에서 undionly.kpxe 를 다운로드 합니다.. 
-  +
   * dhcp 설정   * dhcp 설정
 <code vim> <code vim>
 /​etc/​dhcp/​dhcpd.conf /​etc/​dhcp/​dhcpd.conf
-  ​ + 
-subnet 211.168.0.0 netmask 255.255.255.0 {  +subnet 211.168.0.0 netmask 255.255.255.0 { 
-range dynamic-bootp 211.168.0.11 211.168.0.185;​  +range dynamic-bootp 211.168.0.11 211.168.0.185;​ 
-option domain-name-servers 164.124.101.2,​ 168.126.63.1;​  +option domain-name-servers 164.124.101.2,​ 168.126.63.1;​ 
-option broadcast-address 211.168.0.255;​  +option broadcast-address 211.168.0.255;​ 
-option routers 211.168.0.1;​  +option routers 211.168.0.1;​ 
-authoritative;​  +authoritative;​ 
-   + 
-}  +
-host client1 {  +host client1 { 
-  hardware ethernet 00:​00:​00:​00:​00:​00; ​   ------> 클라이언트의 맥어드레스  +  hardware ethernet 00:​00:​00:​00:​00:​00; ​   ------> 클라이언트의 맥어드레스 
-  fixed-address 192.168.0.10; ​           -------> 위의 클라이언트에 아이피 등록  +  fixed-address 192.168.0.10; ​           -------> 위의 클라이언트에 아이피 등록 
-  option host name "​client1";​  +  option host name "​client1";​ 
-  if exists user-class and option user-class = "​gPXE"​ {  +  if exists user-class and option user-class = "​gPXE"​ { 
-    filename "";​  +    filename "";​ 
-    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​master";​ -- > 서버주소와 iscsi target 이름 메인 이지미 입니다  +    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​master";​ -- > 서버주소와 iscsi target 이름 메인 이지미 입니다 
-} else {  +} else { 
-    filename "​gpxe.kpxe";​  +    filename "​gpxe.kpxe";​ 
-}  +
-+}
 </​code>​ </​code>​
-  ​ + 
-위에서 중요한것은 클라이언트의 맥어드레스 입니다..  +위에서 중요한것은 클라이언트의 맥어드레스 입니다.. 
-클라이언트의 CMOS SETUP 에 들어가 랜카드로 부팅이 가능하도록 Boot from LAN 을 Enable 로  +클라이언트의 CMOS SETUP 에 들어가 랜카드로 부팅이 가능하도록 Boot from LAN 을 Enable 로 
-바꾸고 부팅순서도 NETWORK 을 1 번으로 바꾸고 부팅을 하면  +바꾸고 부팅순서도 NETWORK 을 1 번으로 바꾸고 부팅을 하면 
-   + 
-   + 
-  +
  - TFTP 설정  - TFTP 설정
-  ​ + 
-/​etc/​xinetd.d/​tftp 파일 편집  +/​etc/​xinetd.d/​tftp 파일 편집 
-<code vim>  +<code vim> 
-service tftp  +service tftp 
-{  +
-  disable ​     = no                --- > 이것만 yes 를 no 로 하시면 될듯  +  disable ​     = no                --- > 이것만 yes 를 no 로 하시면 될듯 
-  socket_type ​ = dgram  +  socket_type ​ = dgram 
-  protocol ​   = udp  +  protocol ​   = udp 
-  wait        = yes  +  wait        = yes 
-  user        = nobody  +  user        = nobody 
-  server ​     = /​usr/​sbin/​in.tftpd  +  server ​     = /​usr/​sbin/​in.tftpd 
-  server_args ​   = -s /tftpboot  +  server_args ​   = -s /tftpboot 
- ​} ​+ }
 </​code>​ </​code>​
-#############################​  +#############################​ 
-   + 
-아까 다운받은파일 gpxe-1.0.1-undionly.kpxe 는  +아까 다운받은파일 gpxe-1.0.1-undionly.kpxe 는 
-/tftpboot 폴더로 복사하여 이름을 gpxe.kpxe 로 바꾸어 놓습니다.  +/tftpboot 폴더로 복사하여 이름을 gpxe.kpxe 로 바꾸어 놓습니다. 
-   + 
-/tftpboot 폴더는 존재하지 않는 폴더니 새로 만드셔야 합니다.  +/tftpboot 폴더는 존재하지 않는 폴더니 새로 만드셔야 합니다. 
-#mkdir /tftpboot 하시면 됩니다. ​+#mkdir /tftpboot 하시면 됩니다.
  
-  * DHCP 서버 재시작 ​+  * DHCP 서버 재시작
 <​code>​ <​code>​
-root:/#​service isc-dhcp-server restart ​   +root:/#​service isc-dhcp-server restart
 </​code>​ </​code>​
  
 이렇게 되면... 원본 마스터 서버가 만들어져습니다. 이렇게 되면... 원본 마스터 서버가 만들어져습니다.
-이제 10개에서 100개 무한대로 파일 시스템 스냅샷입니다. ​+이제 10개에서 100개 무한대로 파일 시스템 스냅샷입니다.
 <​code>​ <​code>​
-btrfs subvolume snapshot /​iscsi/​image/​win7 /​iscsi/​image/​pc01  +btrfs subvolume snapshot /​iscsi/​image/​win7 /​iscsi/​image/​pc01 
-btrfs subvolume snapshot /​iscsi/​image/​win7 /​iscsi/​image/​pc02  +btrfs subvolume snapshot /​iscsi/​image/​win7 /​iscsi/​image/​pc02 
-btrfs subvolume snapshot /​iscsi/​image/​win7 /​iscsi/​image/​pc03 ​+btrfs subvolume snapshot /​iscsi/​image/​win7 /​iscsi/​image/​pc03
 </​code>​ </​code>​
 사용할 pc대수 만큼 만들어 줍니다. 사용할 pc대수 만큼 만들어 줍니다.
 /​iscsi/​image/​pc01/​ 폴더에 win7.img 가 보일겁니다 /​iscsi/​image/​pc01/​ 폴더에 win7.img 가 보일겁니다
-새로만든 스넵샷 pc에 연결 하기  +새로만든 스넵샷 pc에 연결 하기 
-위에 /​etc/​iet/​ietd.conf 파일 편집 추가 ​+위에 /​etc/​iet/​ietd.conf 파일 편집 추가
  
 <code vim> <code vim>
-Target iqn.2014-08.vitamin.com:​pc01  +Target iqn.2014-08.vitamin.com:​pc01 
-Lun 0 Path=/​iscsi/​image/​pc01/​win7.img,​Type=fileio ​+Lun 0 Path=/​iscsi/​image/​pc01/​win7.img,​Type=fileio
 MaxConnecions 1 MaxConnecions 1
-Target iqn.2014-08.vitamin.com:​pc02  +Target iqn.2014-08.vitamin.com:​pc02 
-Lun 0 Path=/​iscsi/​image/​pc02/​win7.img,​Type=fileio ​+Lun 0 Path=/​iscsi/​image/​pc02/​win7.img,​Type=fileio
 MaxConnecions 1 MaxConnecions 1
-Target iqn.2014-08.vitamin.com:​pc03  +Target iqn.2014-08.vitamin.com:​pc03 
-Lun 0 Path=/​iscsi/​image/​pc03/​win7.img,​Type=fileio ​+Lun 0 Path=/​iscsi/​image/​pc03/​win7.img,​Type=fileio
 MaxConnecions 1 MaxConnecions 1
 </​code>​ </​code>​
  
-dhcp에 연결설정 합니다 /​etc/​dhcp/​dhcpd.conf  +dhcp에 연결설정 합니다 /​etc/​dhcp/​dhcpd.conf 
-아까 만들어 놓은 파일에 추가 합니다. ​+아까 만들어 놓은 파일에 추가 합니다.
 /​etc/​dhcp/​dhcpd.conf /​etc/​dhcp/​dhcpd.conf
-<code vim> ​  +<code vim> 
-subnet 211.168.0.0 netmask 255.255.255.0 {  +subnet 211.168.0.0 netmask 255.255.255.0 { 
-range dynamic-bootp 211.168.0.11 211.168.0.185;​  +range dynamic-bootp 211.168.0.11 211.168.0.185;​ 
-option domain-name-servers 164.124.101.2,​ 168.126.63.1;​  +option domain-name-servers 164.124.101.2,​ 168.126.63.1;​ 
-option broadcast-address 211.168.0.255;​  +option broadcast-address 211.168.0.255;​ 
-option routers 211.168.0.1;​  +option routers 211.168.0.1;​ 
-authoritative; ​ +authoritative;​
-}  +
-host master {  +
-  hardware ethernet 00:​00:​00:​00:​00:​00;​  +
-  fixed-address 211.168.0.10; ​        +
-  option host name "​client1";​  +
-  if exists user-class and option user-class = "​gPXE"​ {  +
-    filename "";​  +
-    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​master";​  +
-} else {  +
-    filename "​gpxe.kpxe";​  +
-+
 } }
-host pc01 {  +host master ​
-  hardware ethernet 00:​00:​00:​00:​00:​00;​  +  hardware ethernet 00:​00:​00:​00:​00:​00;​ 
-  fixed-address 211.168.0.11        +  fixed-address 211.168.0.10
-  option host name "pc01";  +  option host name "client1"; 
-  if exists user-class and option user-class = "​gPXE"​ {  +  if exists user-class and option user-class = "​gPXE"​ { 
-    filename "";​  +    filename "";​ 
-    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​pc01";  +    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​master"; 
-} else {  +} else { 
-    filename "​gpxe.kpxe"; ​ +    filename "​gpxe.kpxe";​
-+
 } }
-host pc02 {  
-  hardware ethernet 00:​00:​00:​00:​00:​00; ​ 
-  fixed-address 211.168.0.12; ​       ​ 
-  option host name "​pc02"; ​ 
-  if exists user-class and option user-class = "​gPXE"​ {  
-    filename ""; ​ 
-    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​pc02"; ​ 
-} else {  
-    filename "​gpxe.kpxe"; ​ 
- 
 } }
-host pc03 {  +host pc01 { 
-  hardware ethernet 00:​00:​00:​00:​00:​00;​  +  hardware ethernet 00:​00:​00:​00:​00:​00;​ 
-  fixed-address 211.168.0.13; ​        +  fixed-address 211.168.0.11;​ 
-  option host name "​client1";​  +  option host name "​pc01";​ 
-  if exists user-class and option user-class = "​gPXE"​ {  +  if exists user-class and option user-class = "​gPXE"​ { 
-    filename "";​  +    filename "";​ 
-    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​pc03";​  +    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​pc01";​ 
-} else {  +} else { 
-    filename "​gpxe.kpxe";​  +    filename "​gpxe.kpxe";​ 
-+
 +
 +host pc02 { 
 +  hardware ethernet 00:​00:​00:​00:​00:​00;​ 
 +  fixed-address 211.168.0.12;​ 
 +  option host name "​pc02";​ 
 +  if exists user-class and option user-class = "​gPXE"​ { 
 +    filename "";​ 
 +    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​pc02";​ 
 +} else { 
 +    filename "​gpxe.kpxe";​ 
 +
 +
 +host pc03 { 
 +  hardware ethernet 00:​00:​00:​00:​00:​00;​ 
 +  fixed-address 211.168.0.13;​ 
 +  option host name "​client1";​ 
 +  if exists user-class and option user-class = "​gPXE"​ { 
 +    filename "";​ 
 +    option root-path "​iscsi:​211.168.0.3::::​iqn.2014-08.vitamin.com:​pc03";​ 
 +} else { 
 +    filename "​gpxe.kpxe";​ 
 +}
 } }
 </​code>​ </​code>​
-위에  +위에 
-pc01 스냅샷 파일을 만들고 iscsi에서 연결할 스냅샷 이미지을 path을 설정하고  +pc01 스냅샷 파일을 만들고 iscsi에서 연결할 스냅샷 이미지을 path을 설정하고 
-tftp 부팅시 iscs에서 pc01에 만들어 놓은 이미지을 연결합니다.  +tftp 부팅시 iscs에서 pc01에 만들어 놓은 이미지을 연결합니다. 
-  +
 만약 pc01번을 사용하다 초기화 해야될 상항이 생기면 만약 pc01번을 사용하다 초기화 해야될 상항이 생기면
 <​code>​ <​code>​
-#ietadm --op delete --tid=1 --lun=0 ​ iscsi 연결 끊기  +#ietadm --op delete --tid=1 --lun=0 ​ iscsi 연결 끊기 
-#btrfs subvolume delete /​iscsi/​image/​pc01 ​ 스냅샷 이미지 지우기  +#btrfs subvolume delete /​iscsi/​image/​pc01 ​ 스냅샷 이미지 지우기 
-#btrfs subvolume snapshot /​iscsi/​image/​win7 /​iscsi/​image/​pc01 ​ 새로 원본에서 스냅샷 이미지 생성 ​+#btrfs subvolume snapshot /​iscsi/​image/​win7 /​iscsi/​image/​pc01 ​ 새로 원본에서 스냅샷 이미지 생성
 #ietadm --op new --tid=1 --lun=0 --params Path=/​iscsi/​image/​pc01/​win7.img ​ iscsi에서 이미지 연결 #ietadm --op new --tid=1 --lun=0 --params Path=/​iscsi/​image/​pc01/​win7.img ​ iscsi에서 이미지 연결
 </​code>​ </​code>​
 이렇게 명령어 치시면 0.1초도 안되 초기화가 됩니다. 이렇게 명령어 치시면 0.1초도 안되 초기화가 됩니다.
-프로그램 추가 하거지 삭제 하실꺼면 처음 만들어 놓은 master 이미지로 부팅해서 ​+프로그램 추가 하거지 삭제 하실꺼면 처음 만들어 놓은 master 이미지로 부팅해서
 추가 하거나 삭제 하시고 ​ pc대수 만큼 스넵샷 다시 만들어주면 일괄 적용 됩니다. 추가 하거나 삭제 하시고 ​ pc대수 만큼 스넵샷 다시 만들어주면 일괄 적용 됩니다.
-master 이미지에 윈도우 넣기는 ​+master 이미지에 윈도우 넣기는
 일반 pc에 하드 달고 정상적이 윈도우 설치하고 다른 파티션에 고스트 이미지 만든다음 일반 pc에 하드 달고 정상적이 윈도우 설치하고 다른 파티션에 고스트 이미지 만든다음
-윈도우 제어판 관리도구에 iscsi 클릭 ​  +윈도우 제어판 관리도구에 iscsi 클릭 
-연결에 만들어놓은 서버 ip 넣구 연결 ​+연결에 만들어놓은 서버 ip 넣구 연결
 그러면 master, pc01, pc02 pc03, 나오면 master 연결 그러면 master, pc01, pc02 pc03, 나오면 master 연결
-그러면 윈도우에 물리적하드가 생성됩니다. ​+그러면 윈도우에 물리적하드가 생성됩니다.
 관리도구 디스크에서 온라인 시키고 포맷 한다음 관리도구 디스크에서 온라인 시키고 포맷 한다음
 아까 만들어 놓은 고스트 이미지 새로연결된 iscsi 에 밀어 놓기 하면 끝납니다. 아까 만들어 놓은 고스트 이미지 새로연결된 iscsi 에 밀어 놓기 하면 끝납니다.
  • btrfs를_응용한_no-hdd_pc방_구축.txt
  • 마지막으로 수정됨: 2015/06/19 00:49
  • (바깥 편집)