차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
btrfs를_응용한_no-hdd_pc방_구축 [2015/03/04 06:54] – [2. 서버 프로그램 인스톨] admin | btrfs를_응용한_no-hdd_pc방_구축 [2015/06/18 15:49] (현재) – 바깥 편집 127.0.0.1 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
====== btrfs를 이용한 No-HDD PC방 구축 ====== | ====== btrfs를 이용한 No-HDD PC방 구축 ====== | ||
- | |||
:!: 원글 링크 : http:// | :!: 원글 링크 : http:// | ||
- | |||
- | |||
===== 0. 우분투 설치 ===== | ===== 0. 우분투 설치 ===== | ||
줄 10: | 줄 7: | ||
/iscsi < | /iscsi < | ||
- | * DHCP 서버 | + | * DHCP 서버 |
- | * TFTP 서버 | + | * TFTP 서버 |
- | * ISCSI 서버 | + | * ISCSI 서버 |
- | * BTRFS 화일 시스템 | + | * BTRFS 화일 시스템 |
- | + | ||
===== 1. 네트웍 설정 ===== | ===== 1. 네트웍 설정 ===== | ||
- | 서버의 IP 어드레스를 설정 합니다 | + | 서버의 IP 어드레스를 설정 합니다 |
<code vim> | <code vim> | ||
- | / | + | / |
- | + | ||
- | 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 |
</ | </ | ||
- | | + | |
===== 2. 서버 프로그램 인스톨 ===== | ===== 2. 서버 프로그램 인스톨 ===== | ||
- | | ||
- | 우분투는 인터넷에 연결되어 있으면 필요한 프로그램을 설치하기가 쉽습니다.. | ||
- | | + | 우분투는 인터넷에 연결되어 있으면 필요한 프로그램을 설치하기가 쉽습니다.. |
+ | |||
+ | | ||
< | < | ||
- | root:/# | + | root:/# |
</ | </ | ||
- | * #TFTP 서버 프로그램 설치 | + | * #TFTP 서버 프로그램 설치 |
< | < | ||
- | root:/# | + | root:/# |
- | root:/# | + | root:/# |
root:/# | root:/# | ||
</ | </ | ||
- | * # | + | * # |
< | < | ||
- | root:/# | + | root:/# |
</ | </ | ||
- | * #iscsi 서버 설치 | + | * #iscsi 서버 설치 |
< | < | ||
- | root:/# | + | root:/# |
</ | </ | ||
- | | + | |
===== 3. ISCSI 볼륨 만들기 ===== | ===== 3. ISCSI 볼륨 만들기 ===== | ||
- | | + | |
- | - 위의 프로그램이 전부 인스톨 되어 있으면 프로그램 세팅에 들어갑니다.. | + | - 위의 프로그램이 전부 인스톨 되어 있으면 프로그램 세팅에 들어갑니다.. ISCSI TARGET 설정으로 하드가 없는 클라이언트에 하드 디스크 볼륨을 만들어 줍니다.. |
- | | + | |
- | + | - 처음에 리눅스 인스톨할때 BTRFS 파일 시스템 100G 로 /iscsi 로 마운트 해서 만들 었습니다. | |
- | - 처음에 리눅스 인스톨할때 BTRFS 파일 시스템 100G 로 /iscsi 로 마운트 해서 만들 었습니다. | + | 주의 : 100G 가 파일시스템을 만들었으면 새로 생성될 이미지 크기는 50% 정도만 사용해야 사용중 |
- | 주의 : 100G 가 파일시스템을 만들었으면 새로 생성될 이미지 크기는 50% 정도만 사용해야 사용중 | + | |
- | full 상태가 안날수 있습니다. | + | |
- | + | ||
< | < | ||
- | root:/# mkdir / | + | root:/# mkdir / |
- | root:/# chmod 755 / | + | root:/# chmod 755 / |
- | root:/# btrfs subvolume create / | + | root:/# btrfs subvolume create / |
- | root:/# chmod 755 / | + | root:/# chmod 755 / |
</ | </ | ||
- | - 볼륨 이미지 생성 | + | - 볼륨 이미지 생성 |
< | < | ||
root:/# dd if=/ | root:/# dd if=/ | ||
</ | </ | ||
- | 50기가의 빈 파일을 생성합니다 | + | 50기가의 빈 파일을 생성합니다 |
- | + | ||
- | * / | + | |
- | ISCSITARGET_ENABLE=true | + | |
- | * / | + | |
+ | ISCSITARGET_ENABLE=true | ||
+ | |||
+ | | ||
<code vim> | <code vim> | ||
- | Target iqn.2014-08.vitamin.com: | + | Target iqn.2014-08.vitamin.com: |
- | Lun 0 Path=/ | + | Lun 0 Path=/ |
- | Alias client1 | + | Alias client1 |
- | MaxConnecions | + | MaxConnecions |
</ | </ | ||
- | * Iscsi target 재시작 | + | * Iscsi target 재시작 |
< | < | ||
- | root:/# service iscsitarget restart | + | root:/# service iscsitarget restart |
</ | </ | ||
- | | + | |
- | + | ||
- | | + | |
===== 4. 클라이언트가 연결할 DHCP, TFTP, gPXE 설정 ===== | ===== 4. 클라이언트가 연결할 DHCP, TFTP, gPXE 설정 ===== | ||
- | http:// | + | http:// |
- | 에서 undionly.kpxe 를 다운로드 합니다.. | + | 에서 undionly.kpxe 를 다운로드 합니다.. |
- | + | ||
* dhcp 설정 | * dhcp 설정 | ||
<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, | + | option domain-name-servers 164.124.101.2, |
- | 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: | + | hardware ethernet 00: |
- | fixed-address 192.168.0.10; | + | fixed-address 192.168.0.10; |
- | option host name " | + | option host name " |
- | if exists user-class and option user-class = " | + | if exists user-class and option user-class = " |
- | filename ""; | + | filename ""; |
- | option root-path " | + | option root-path " |
- | } else { | + | } else { |
- | filename " | + | filename " |
- | } | + | } |
- | } | + | } |
</ | </ | ||
- | | + | |
- | 위에서 중요한것은 클라이언트의 맥어드레스 입니다.. | + | 위에서 중요한것은 클라이언트의 맥어드레스 입니다.. |
- | 클라이언트의 CMOS SETUP 에 들어가 랜카드로 부팅이 가능하도록 Boot from LAN 을 Enable 로 | + | 클라이언트의 CMOS SETUP 에 들어가 랜카드로 부팅이 가능하도록 Boot from LAN 을 Enable 로 |
- | 바꾸고 부팅순서도 NETWORK 을 1 번으로 바꾸고 부팅을 하면 | + | 바꾸고 부팅순서도 NETWORK 을 1 번으로 바꾸고 부팅을 하면 |
- | + | ||
- | + | ||
- | + | ||
- TFTP 설정 | - TFTP 설정 | ||
- | | + | |
- | / | + | / |
- | <code vim> | + | <code vim> |
- | service tftp | + | service tftp |
- | { | + | { |
- | disable | + | disable |
- | socket_type | + | socket_type |
- | protocol | + | protocol |
- | wait = yes | + | wait = yes |
- | user = nobody | + | user = nobody |
- | server | + | server |
- | server_args | + | server_args |
- | | + | } |
</ | </ | ||
- | ############################# | + | ############################# |
- | + | ||
- | 아까 다운받은파일 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 서버 재시작 |
< | < | ||
- | root:/# | + | root:/# |
</ | </ | ||
이렇게 되면... 원본 마스터 서버가 만들어져습니다. | 이렇게 되면... 원본 마스터 서버가 만들어져습니다. | ||
- | 이제 10개에서 100개 무한대로 파일 시스템 스냅샷입니다. | + | 이제 10개에서 100개 무한대로 파일 시스템 스냅샷입니다. |
< | < | ||
- | btrfs subvolume snapshot / | + | btrfs subvolume snapshot / |
- | btrfs subvolume snapshot / | + | btrfs subvolume snapshot / |
- | btrfs subvolume snapshot / | + | btrfs subvolume snapshot / |
</ | </ | ||
사용할 pc대수 만큼 만들어 줍니다. | 사용할 pc대수 만큼 만들어 줍니다. | ||
/ | / | ||
- | 새로만든 스넵샷 pc에 연결 하기 | + | 새로만든 스넵샷 pc에 연결 하기 |
- | 위에 / | + | 위에 / |
<code vim> | <code vim> | ||
- | Target iqn.2014-08.vitamin.com: | + | Target iqn.2014-08.vitamin.com: |
- | Lun 0 Path=/ | + | Lun 0 Path=/ |
MaxConnecions 1 | MaxConnecions 1 | ||
- | Target iqn.2014-08.vitamin.com: | + | Target iqn.2014-08.vitamin.com: |
- | Lun 0 Path=/ | + | Lun 0 Path=/ |
MaxConnecions 1 | MaxConnecions 1 | ||
- | Target iqn.2014-08.vitamin.com: | + | Target iqn.2014-08.vitamin.com: |
- | Lun 0 Path=/ | + | Lun 0 Path=/ |
MaxConnecions 1 | MaxConnecions 1 | ||
</ | </ | ||
- | dhcp에 연결설정 합니다 / | + | dhcp에 연결설정 합니다 / |
- | 아까 만들어 놓은 파일에 추가 합니다. | + | 아까 만들어 놓은 파일에 추가 합니다. |
/ | / | ||
- | <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, | + | option domain-name-servers 164.124.101.2, |
- | 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: | + | |
- | fixed-address 211.168.0.10; | + | |
- | option host name " | + | |
- | if exists user-class and option user-class = " | + | |
- | filename ""; | + | |
- | option root-path " | + | |
- | } else { | + | |
- | filename " | + | |
- | } | + | |
} | } | ||
- | host pc01 { | + | host master |
- | hardware ethernet 00: | + | hardware ethernet 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 = " | + | if exists user-class and option user-class = " |
- | filename ""; | + | filename ""; |
- | option root-path " | + | option root-path " |
- | } else { | + | } else { |
- | filename " | + | filename " |
- | } | + | |
} | } | ||
- | host pc02 { | ||
- | hardware ethernet 00: | ||
- | fixed-address 211.168.0.12; | ||
- | option host name " | ||
- | if exists user-class and option user-class = " | ||
- | filename ""; | ||
- | option root-path " | ||
- | } else { | ||
- | filename " | ||
- | } | ||
} | } | ||
- | host pc03 { | + | host pc01 { |
- | hardware ethernet 00: | + | hardware ethernet 00: |
- | fixed-address 211.168.0.13; | + | fixed-address 211.168.0.11; |
- | option host name " | + | option host name " |
- | if exists user-class and option user-class = " | + | if exists user-class and option user-class = " |
- | filename ""; | + | filename ""; |
- | option root-path " | + | option root-path " |
- | } else { | + | } else { |
- | filename " | + | filename " |
- | } | + | } |
+ | } | ||
+ | host pc02 { | ||
+ | hardware ethernet 00: | ||
+ | fixed-address 211.168.0.12; | ||
+ | option host name " | ||
+ | if exists user-class and option user-class = " | ||
+ | filename ""; | ||
+ | option root-path " | ||
+ | } else { | ||
+ | filename " | ||
+ | } | ||
+ | } | ||
+ | host pc03 { | ||
+ | hardware ethernet 00: | ||
+ | fixed-address 211.168.0.13; | ||
+ | option host name " | ||
+ | if exists user-class and option user-class = " | ||
+ | filename ""; | ||
+ | option root-path " | ||
+ | } else { | ||
+ | filename " | ||
+ | } | ||
} | } | ||
</ | </ | ||
- | 위에 | + | 위에 |
- | pc01 스냅샷 파일을 만들고 iscsi에서 연결할 스냅샷 이미지을 path을 설정하고 | + | pc01 스냅샷 파일을 만들고 iscsi에서 연결할 스냅샷 이미지을 path을 설정하고 |
- | tftp 부팅시 iscs에서 pc01에 만들어 놓은 이미지을 연결합니다. | + | tftp 부팅시 iscs에서 pc01에 만들어 놓은 이미지을 연결합니다. |
- | + | ||
만약 pc01번을 사용하다 초기화 해야될 상항이 생기면 | 만약 pc01번을 사용하다 초기화 해야될 상항이 생기면 | ||
< | < | ||
- | #ietadm --op delete --tid=1 --lun=0 | + | #ietadm --op delete --tid=1 --lun=0 |
- | #btrfs subvolume delete / | + | #btrfs subvolume delete / |
- | #btrfs subvolume snapshot / | + | #btrfs subvolume snapshot / |
#ietadm --op new --tid=1 --lun=0 --params Path=/ | #ietadm --op new --tid=1 --lun=0 --params Path=/ | ||
</ | </ | ||
이렇게 명령어 치시면 0.1초도 안되 초기화가 됩니다. | 이렇게 명령어 치시면 0.1초도 안되 초기화가 됩니다. | ||
- | 프로그램 추가 하거지 삭제 하실꺼면 처음 만들어 놓은 master 이미지로 부팅해서 | + | 프로그램 추가 하거지 삭제 하실꺼면 처음 만들어 놓은 master 이미지로 부팅해서 |
추가 하거나 삭제 하시고 | 추가 하거나 삭제 하시고 | ||
- | master 이미지에 윈도우 넣기는 | + | master 이미지에 윈도우 넣기는 |
일반 pc에 하드 달고 정상적이 윈도우 설치하고 다른 파티션에 고스트 이미지 만든다음 | 일반 pc에 하드 달고 정상적이 윈도우 설치하고 다른 파티션에 고스트 이미지 만든다음 | ||
- | 윈도우 제어판 관리도구에 iscsi 클릭 | + | 윈도우 제어판 관리도구에 iscsi 클릭 |
- | 연결에 만들어놓은 서버 ip 넣구 연결 | + | 연결에 만들어놓은 서버 ip 넣구 연결 |
그러면 master, pc01, pc02 pc03, 나오면 master 연결 | 그러면 master, pc01, pc02 pc03, 나오면 master 연결 | ||
- | 그러면 윈도우에 물리적하드가 생성됩니다. | + | 그러면 윈도우에 물리적하드가 생성됩니다. |
관리도구 디스크에서 온라인 시키고 포맷 한다음 | 관리도구 디스크에서 온라인 시키고 포맷 한다음 | ||
아까 만들어 놓은 고스트 이미지 새로연결된 iscsi 에 밀어 놓기 하면 끝납니다. | 아까 만들어 놓은 고스트 이미지 새로연결된 iscsi 에 밀어 놓기 하면 끝납니다. |