학과서버관리 - 운영 #328 장애 # 323 ( 거절 ): x3650 M3 펌웨어업데이트중시스템보드손상추정운영 # 326 ( 거절 ): x3650 M3 의운영형태변경 FreeNAS 의이전시나리오 2016/05/07 06:32 - 성제호 상태 : 완료시작시간 : 2016/05/07 우선순위 : 보통완료기한 : 담당자 : 성제호진척도 : 0% 범주 : titan.cs.gnu.ac.kr 추정시간 : 0.00 시간 목표버전 : 시작 설명 FreeNAS 는 NAS 에특화된배포판으로써, FreeBSD 를기반으로한다. ZFS 를사용하기위하여선정하였다. 본래 x3650 M3 서버 2 기를기준으로 1. 하나는 NAS 의역할로사용하고 2. 하나는가상화서버로사용하려고하였으나 현재 #323 으로인해 1 기만동작중이다. FreeNAS 를효과적으로운영하기위해서는 Bare-Metal( 물리서버 ) 에직접설치하는것이좋지만, 현운영해야한다. 그러나 XenServer 에서 VM 으로운영할시 FreeNAS 본연의장점이많이퇴색하게되는문제가있다. 이를위해 #327에서 XenServer 에서도 FreeNAS 에대해직접디스크에접근할수있도록조치하였다. 현재 FreeNAS 는 VM 으로동작중이지만 #323이슈가, 해결되면다시실서버로이전할계획이다. 이때최소한의노력으로데이터를옮길수있도록이전시나리오를구상하고테스트한다. 이력 #1-2016/05/07 06:40 - 성제호 현재 FreeNAS 는 XenServer 상에서 VM 으로동작중이다. 다만 Disk 를직접다룰수있도록 Passthrough 설정을하였기때문에추후 FreeNAS 만다시설치하고 Disk 곧바로동작할것으로생각된다. 시나리오는다음과같다. 1.Disk 를 Passthrough 하게접근하도록 VM 을구성하여 FreeNAS 를운영디스크를직접제어하기때문에, 이는실제물리서버에설치하고동작시키는것과큰차이는없다. ( 적어도디스크입장에서는 ) 2.FreeNAS 의 Config 파일을내려받음. 3. 여기서부터는새로구성하려는서버에서실시한다. 4. 새로구성한서버에, FreeNAS VM 에서직접제어하던디스크를모두옮김 ( 순서는상관없을것으로보인다.) 5.RAID 카드가있다면, 그대로 import 를실시한다. 이때, 각디스크는묶지말고독립적인 vdev 로생성한다. ( 사실 ZFS 를고려한다면 RAID 는없는편이더낫지만, 이것을강제로제거할수가없다. 이것이최선이다.) 6.USB 에 FreeNAS 설치이미지를넣고, USB 로부팅 7. 추가로 USB x 2ea 를설치하고, 이것을 Mirror 볼륨을구성하여 FreeNAS 를설치 8. 설치된 USB x 2ea 에서 FreeNAS 를직접구동. 이로서 Bare-metal ( 물리서버 ) 에서직접동작한다고볼수있다. 9.FreeNAS 가무사히올라오면, FreeNAS 업데이트를진행 10. 업데이트완료후, 미리받아놓은 Config 를 upload 하여 VM 에서동작하던설정을모두복구 11. 정상적으로데이터가이전되었는지확인 2019/01/09 1/8
#2-2016/05/07 06:54 - 성제호 현재는시나리오테스트이기때문에, 1 기의장비상에서 USB 부팅만수행하여진행하였다. 1.Disk 를 Passthrough 하게접근하도록 VM 을구성하여 FreeNAS 를운영디스크를직접제어하기때문에, 이는실제물리서버에설치하고동작시키는것과큰차이는없다. ( 적어도디스크입장에서는 ) 2.FreeNAS 의 Config 파일을내려받음. 3. 여기서부터는새로구성하려는서버에서실시한다. 4. 새로구성한서버에, FreeNAS VM 에서직접제어하던디스크를모두옮김 ( 순서는상관없을것으로보인다.) 5.RAID 카드가있다면, 그대로 import 를실시한다. 이때, 각디스크는묶지말고독립적인 vdev 로생성한다. ( 사실 ZFS 를고려한다면 RAID 는없는편이더낫지만, 이것을강제로제거할수가없다. 이것이최선이다.) 이시나리오테스트는 1 기의동일한장비에서수행하였으므로, 상기의요구사항은모두만족한것으로한다. 1.USB 에 FreeNAS 설치이미지를넣고, USB 로부팅 2. 추가로 USB x 2ea 를설치하고, 이것을 Mirror 볼륨을구성하여 FreeNAS 를설치 3. 설치된 USB x 2ea 에서 FreeNAS 를직접구동. 이로서 Bare-metal ( 물리서버 ) 에서직접동작한다고볼수있다. 4.FreeNAS 가무사히올라오면, FreeNAS 업데이트를진행 5. 업데이트완료후, 미리받아놓은 Config 를 upload 하여 VM 에서동작하던설정을모두복구 6. 정상적으로데이터가이전되었는지확인 주의할점은다음과같다. 만약 FreeNAS 의업데이트가제대로수행되지않으면 Config 업로드가거절된다. Config 가제대로올라가면몇차례재부팅을수행하며 Config 사항이적용된다. Config 상에서바라보고있는 ZPOOL 정보가존재하는데, 이것은 DISK 의고유번호를참조하기때문에그대로인식만약 DISK 의고유번호가변경된다거나하는경우에는, zpool 을 import 하여 ZPOOL 을다시불러올수있다다만, RAIDZ2 를구성할때 5개의 2Tb 하드디스크로구성했기때문에모든디스크가존재해야한다. 만약 2개이상의디스크가손실될경우 Rebuild 가불가능하여전체디스크가손상된다. SSD 디스크는 L2ARC 캐쉬로사용되기때문에날아가도큰문제는없다. 2019/01/09 2/8
#3-2016/05/07 07:57 - 성제호 - 파일에 2016-05-07_07-56-41.png 이 ( 가 ) 추가되었습니다. FreeNAS 를 2 개의 USB 로 Mirror 를구성하여설치하였을경우의 zpool status freenas-boot [root@titan] ~# zpool status freenas-boot pool: freenas-boot state: ONLINE scan: none requested NAME STATE READ WRITE CKSUM freenas-boot ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 da0p2 ONLINE 0 0 0 da1p2 ONLINE 0 0 0 두개의 USB 가 Mirror 구성된것을알수있다. 이것중하나가손상되었다고가정하고, USB 를제거해보았다. 2 개의 USB 중하나를제거하였을때, /var/log/messages 에다음의메세지가발생하였다. May 7 07:52:11 titan ugen6.2: <SanDisk> at usbus6 (disconnected) May 7 07:52:11 titan umass0: at uhub6, port 5, addr 2 (disconnected) May 7 07:52:11 titan da0 at umass-sim0 bus 0 scbus6 target 0 lun 0 May 7 07:52:11 titan da0: <SanDisk Cruzer Blade 1.27> s/n 4C5300116003 May 7 07:52:11 titan (da0:umass-sim0:0:0:0): Periph destroyed May 6 22:52:16 titan devd: Executing 'logger -p kern.notice -t ZFS 'vd 551120 vdev_guid=2919567237631315845'' May 7 07:52:16 titan ZFS: vdev is removed, pool_guid=54718285082565511 그리고 zpool status freenas-boot 결과이다. 상태가 DEGRADED 된것을알수있다. 동작은하지만서둘러복구해야한다는의미를담고있다. [root@titan] ~# zpool status freenas-boot pool: freenas-boot state: DEGRADED status: One or more devices has been removed by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device wi 'zpool replace'. scan: none requested NAME STATE READ WRITE CKSUM freenas-boot DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 2919567237631315845 REMOVED 0 0 0 was /dev/da0p2 da1p2 ONLINE 0 0 0 사용자에게는다음과같은형태의메세지로보인다. 2019/01/09 3/8
#4-2016/05/07 08:07 - 성제호 USB 를완전히포맷하고, MBR 방식으로포맷하였다. 완전히새로운 USB 로생각하고서버에꼽으면다음과같이메세지가생성된다. May 7 08:00:42 titan ugen6.2: <SanDisk> at usbus6 May 7 08:00:42 titan umass0: <SanDisk Cruzer Blade, class 0/0, rev 2.0 May 7 08:00:42 titan umass0: SCSI over Bulk-Only; quirks = 0x8100 May 7 08:00:42 titan umass0:6:0:-1: Attached to scbus6 May 7 08:00:42 titan da0 at umass-sim0 bus 0 scbus6 target 0 lun 0 May 7 08:00:42 titan da0: <SanDisk Cruzer Blade 1.27> Removable Direct May 7 08:00:42 titan da0: Serial Number 4C530011600308113255 May 7 08:00:42 titan da0: 40.000MB/s transfers May 7 08:00:42 titan da0: 14907MB (30529536 512 byte sectors) May 7 08:00:42 titan da0: quirks=0x2<no_6_byte> May 6 23:00:42 titan devd: Executing '[ -e /tmp/.sync_disk_done ] && L /bin/python /usr/local/www/freenasui/tools/sync_disks.py da0' 마지막메세지는, 새로운 USB 가삽입되면 /tmp/.sync_disk_done 가존재하면 /usr/local/www/fre 실행된다. 시간이뒤로간것처럼보이는 GMT 것은, 기준으로표시되었기때문인것같다. 시간은동일하나 KST, (GMT+9) 기준으로표현한것인지 GMT, 기준으로표현한것인지의차이인것같다. #5-2016/05/07 08:16 - 성제호 2019/01/09 4/8
- 파일에 2016-05-07_08-12-05.png 이 ( 가 ) 추가되었습니다. - 파일에 2016-05-07_08-11-20.png 이 ( 가 ) 추가되었습니다. 시스템 -> boot -> status 를누르면현재 boot 디스크의상태가출력된다. 새로교체한디스크를클릭하고, replace 를누르면 Mirror 구성된 USB 가 sync 된다. 정상적으로 sync 되고있는상황에서는, CLI 에서다음과같이출력된다. [root@titan] ~# zpool status freenas-boot pool: freenas-boot state: DEGRADED status: One or more devices is currently being resilvered. The pool wi continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Sat May 7 08:12:44 2016 2.26M scanned out of 970M at 70.1K/s, 3h55m to go 1.63M resilvered, 0.23% done <---- 이곳이 100% 가되어야 sync 가완료된다 NAME STATE READ WRITE CKSUM freenas-boot DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 replacing-0 REMOVED 0 0 0 2919567237631315845 REMOVED 0 0 0 was /dev/da0 da0p2 ONLINE 0 0 0 (resilvering da1p2 ONLINE 0 0 0 #6-2016/05/07 08:21 - 성제호 - 파일에 IMG_0386.png 이 ( 가 ) 추가되었습니다. 2019/01/09 5/8
#7-2016/05/07 11:03 - 성제호 USB 로부팅하여, 디스크를무사히 import 하였다. 그러나다음의문제가있었다. 1.Config 를내려받아올리더라도완벽하게복구가안되는것같다. 예를들면, 네트워크설정의경우다시해줘야하는것같다. 2. 디스크구성은같지만 pool 의이름이다른경우는, 명시적으로 pool 을 Webgui 상에서삭제하고다시 impor 문제는, CLI 상에서이미 pool 이 import 되어있는경우는 export 하여야, Webgui 상에서 import 즉, 이미 pool 이 import 되어있는상황이라면 webgui 상에서 import 가불가능한것같다. USB 로조작을해보다가, 다시 XenServer 를부팅하여 VM 으로올렸다. 완벽하게 pool 이인식되지않았으나, pool 을삭제하고다시 import 하니문제없었다. 1.Config 를반드시저장하여, 이전후복구할것 2.pool 이인식안될경우 export 후다시 import 할것 데이터를다루는일이니굉장히조심해야한다. 바램이라면, 스토리지서버는가능하면그냥아무도건들지말았으면한다... #8-2016/05/07 11:30 - 성제호 VM 상에서하드를강제로빼버렸을경우, 즉하드디스크가급사했을경우를상정해보았다. 실제로는특정섹터가읽히지않는등의문제로일어나겠지만, 이경우에는하드디스크전체가인식되지않는다고가정하였다. 운영중갑자기하드디스크한개를뺐더니, 엄청난로그가화면에출력되었다. 5 개의하드디스크가독립적으로동작하는것이아닌, 한번에묶여서동작하기때문에빠져버린하드디스크에쓰기시도를하던도중에러로보인다. 문제는, 이상황에서어떤동작도먹히지않는다. 더심각한문제는, 이상황에서디스크한개가여전히꼽혀있는것처럼인식된다. 이것이 VM 의한계중에하나이다. 장치가추상화되어있기때문에실제장치의상황에대해파악이어렵다. 다행히도, 한참오류를뿜어대더니자기혼자재부팅을해버렸다. 위급 : 2016 년 5 월 7 일 11:07:48 오전 - The volume MAIN (ZFS) state is DEGRADED: uld not be opened. Sufficient replicas exist for the pool to continue f 그리고해당디스크가지탱하고있던 ZPOOL 은 DEGRADED 되었다. 이상황이되면문제가된디스크를파악하고, 재빨리교체하여 rebuild 하여야한다. 이경우엔기존에빠져있던하드디스크를동작중에다시꼽아보았다. 그러나곧바로다시인식되지는않았다. 이유는 RAID 컨트롤러에서 Unconfigured BAD 로표시되었기때문에다시꼽는다고시스템이인식하지않았다. 이것을동작중에온라인으로수정하려면 MegaCli 도구나 mfiutils 가있어야할것이다. 그렇지않다면, 시스템재부팅중에 RAID 설정펌웨어를띄워서설정하여야한다. 이과정을수행하면, RAID 카드에서 scan device 메뉴에서기존설정을불러올수있다. 2019/01/09 6/8
#9-2016/05/07 11:48 - 성제호 하드디스크한번강제로뽑았더니할일이많다. 1.RAID 카드상에서디스크인식시키고 2.XenServer 에서 VM 과끊어진하드디스크다시연결시키고 3.VM (FreeNAS) 안에서 RAIDZ2 끊어진것다시연결시키는작업을해야했다. 특히, FreeNAS 에서는자동으로복구가안되어다음과같은펼쳐에러가보기펼쳐... 떴다보기.... [root@titan] ~# zpool status MAIN pool: MAIN state: ONLINE status: One or more devices has experienced an unrecoverable error. An attempt was made to correct the error. Applications are unaffected action: Determine if the device needs to be replaced, and clear the err using 'zpool clear' or replace the device with 'zpool replace'. see: http://illumos.org/msg/zfs-8000-9p scan: resilvered 4.18M in 0h0m with 0 errors on Sat May 7 11:42:16 2 NAME STATE READ WRI TE CKSUM MAIN ONLINE 0 0 0 raidz2-0 ONLINE 0 0 gptid/95e8afe9-13c7-11e6-8809-a73f0054c548 ONLINE 0 gptid/96536087-13c7-11e6-8809-a73f0054c548 ONLINE 0 gptid/96c68db0-13c7-11e6-8809-a73f0054c548 ONLINE 0 gptid/97300261-13c7-11e6-8809-a73f0054c548 ONLINE 0 gptid/97942a0b-13c7-11e6-8809-a73f0054c548 ONLINE 0 cache gptid/97db3d56-13c7-11e6-8809-a73f0054c548 ONLINE 0 zpool clear 명령으로펼쳐해결보기되었다펼쳐... 보기... [root@titan] ~# zpool clear MAIN [root@titan] ~# zpool status MAIN pool: MAIN state: ONLINE scan: resilvered 4.18M in 0h0m with 0 errors on Sat May 7 11:42:16 2 NAME STATE READ WRI TE CKSUM MAIN ONLINE 0 0 0 raidz2-0 ONLINE 0 0 gptid/95e8afe9-13c7-11e6-8809-a73f0054c548 ONLINE 0 gptid/96536087-13c7-11e6-8809-a73f0054c548 ONLINE 0 gptid/96c68db0-13c7-11e6-8809-a73f0054c548 ONLINE 0 gptid/97300261-13c7-11e6-8809-a73f0054c548 ONLINE 0 gptid/97942a0b-13c7-11e6-8809-a73f0054c548 ONLINE 0 cache gptid/97db3d56-13c7-11e6-8809-a73f0054c548 ONLINE 0 2019/01/09 7/8
Powered by TCPDF (www.tcpdf.org) #10-2016/05/07 11:50 - 성제호 - 상태을 ( 를 ) 신규에서완료 ( 으 ) 로변경되었습니다. 현재 VM 으로동작하는 FreeNAS 를물리서버에옮기는시나리오를테스트하였다. 디스크손상시디스크를교체하는시나리오를테스트했다. 파일 2016-05-07_07-56-41.png 15.9 KB2016/05/06 성제호 2016-05-07_08-11-20.png 59.1 KB2016/05/06 성제호 2016-05-07_08-12-05.png 42.3 KB2016/05/06 성제호 IMG_0386.png 191 KB 2016/05/06 성제호 2019/01/09 8/8