NanoPi-NEO2로 USB mass store→iSCSI 타겟 테스트

개시하다


목적 구성은 다음과 같다.
PC ---(USB)---> NanoPi NEO2 ---(LAN)---> iSCSI Target(NAS)
나노피네오2를 USB로 PC에 연결하면 PC에서 USB∼HDD로 접근할 수 있지만, 이 파일 등이 저장된 위치가 NAS의 iSCSI 타겟이 된다는 것이다.그렇습니다.
능숙하게 사용할 수 있다면 TV 녹화용 USB 하드디스크의 대안이 될 수 있다.
RAID 등을 통한 데이터 보호, 데이터 자동 백업, USB 하드 드라이브로는 불가능한 대용량 데이터 보호 기능도 제공합니다.
USB 하드 드라이브가 분산되어 어려움을 겪는 사람에게도 적합합니다(웃음)
비글보네블랙 시대에도 같은 실험이 진행됐는데, 나노피네오2의 기가비트 Ehter의 은혜는 얼마나 될까.라는 주제를 담았다.

왼쪽은 주인공의 아이다.

필요한 물건


하드웨어

  • PC 호스트
  • Micro USB 케이블 1개(전원 공급 가능)
  • NanoPi NEO 2대
  • LAN 케이블 및 허브
  • iSCSI 타겟을 지원하는 NAS(Synology에서 실험)
  • 소프트웨어


  • NanoPi-NEO2 Official Image
  • nanopi-neo2_ubuntu-oled_4.11.2_20170531.img.zip

  • 상기 이미지에 대응하는 내부 원본
  • linux_4.11.2_20170525.tar.gz
  • 설정


    1. 마이크로SD로 부트 보내기


    dd 또는 Win32 DiskImager-9.5-binary 등을 사용하여 MicrosD에 부트 이미지를 쓰고 NEO2를 삽입하여 부트합니다.

    2. 내부 원본 컴파일


    Open-ISCSI 패키지, iscsi 사용tcp.코가 없어서 오류가 발생했습니다.따라서 내부 핵을 재구성해야 한다.릴리스에 따라 원래부터 포함돼 있었다.
    다음 단계에 따라 Kernel에 iSCSI Initiator over TCP/IP를 컴파일하여 구축하면 OK입니다.
    NanoPi-NEO2
    apt-get install libncurses5-dev libncursesw5-dev bc
    
    cd ~
    wget http://www.mediafire.com/file/ica7ti6bxmag03o/linux_4.11.2_20170525.tar.gz
    tar xf linux_4.11.2_20170525.tar.gz
    
    cd linux
    touch .scmversion
    make sunxi_arm64_defconfig
    make menuconfig
    ------------------------
    Device Drivers --->
        SCSI device support --->
            SCSI low-level drivers -->
                [space] & [enter]
    
    <*> iSCSI Initiator over TCP/IP [space][space]
    ------------------------
    make -j4
    
    mkdir /boot/old
    mv /boot/Image /boot/old
    mv /boot/*.dtb /boot/old
    cp arch/arm64/boot/Image /boot/
    cp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb /boot/
    reboot
    
    NanoPi NEO2의 Linux 커널을 컴파일하는 데 1~2시간 정도 소요되므로 기다려 주십시오.
     

    3. 필요한 패키지 설치


    apt-get install open-iscsi
    그게 다야.

    4. iSCSI 이니시에이터의 구성


    NanoPi-NEO2
    iscsiadm -m discovery -t sendtargets -p 192.168.1.9
    iscsiadm -m node --targetname "iqn.2000-01.com.synology:nas.target1" --portal "192.168.1.9:3260" --login
    
    ※ NAS의 IP 주소, targetname 설정에 사용되는 아이템입니다.
    ※ NAS 측 iSCSI 타겟은 별도로 제작해야 합니다.
    성공하면/dev/sda 블록 장치가 생성됩니다.
    내부 핵을 구축하지 않으면 iscsitcp.코가 없어요.시스템 오류입니다.

    5. USB 하드 드라이브화


    /dev/sda가 생성되었으므로 다음 명령을 사용하여 가상 USB HDD를 만듭니다.
    이렇게 되면 PC에 연결되면 USB HDD로 인식된다.
    물론 USB 하드디스크만 포맷해야 한다(웃음)
    NanoPi-NEO2
    modprobe g_mass_storage file=/dev/sda
    

    6.NEO2 시작 시 자동 연결


    위 4, 5는 다시 시작하면 사라집니다.
    필요에 따라.local 등을 통해 자동으로 시작합니다.
    네트워크 활성화 시점에 따라 오류가 발생하기 때문에 슬립(Sleep) 등을 통한 조정이 필요한 경우도 있다.

    성능 측정 결과.


    BeagleBoneBlack의 결과


    당시의 결과지만 100Mbps의 LAN은 병목이어서 성능이 전혀 나오지 않습니다...
    -----------------------------------------------------------------------
    CrystalDiskMark 3.0.2 x64 (C) 2007-2012 hiyohiyo
                               Crystal Dew World : http://crystalmark.info/
    -----------------------------------------------------------------------
    * MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
    
               Sequential Read :    11.471 MB/s
              Sequential Write :     7.710 MB/s
             Random Read 512KB :    10.053 MB/s
            Random Write 512KB :     5.635 MB/s
        Random Read 4KB (QD=1) :     0.637 MB/s [   155.5 IOPS]
       Random Write 4KB (QD=1) :     3.356 MB/s [   819.4 IOPS]
       Random Read 4KB (QD=32) :     0.679 MB/s [   165.8 IOPS]
      Random Write 4KB (QD=32) :     3.062 MB/s [   747.6 IOPS]
    
      Test : 1000 MB [F: 0.8% (0.1/10.0 GB)] (x1)
      Date : 2014/08/15 0:21:21
        OS : Windows 7 Home Premium Edition SP1 [6.1 Build 7601] (x64)
    

    NanoPi NEO2


    1Gbps LAN의 이점은 약간 있는 것 같습니다.
    USB2.0 병목에서 25~30MB/sec 정도를 기대했지만 많이 떨어졌다.서운하다
    -----------------------------------------------------------------------
    CrystalDiskMark 5.2.1 (C) 2007-2017 hiyohiyo
                               Crystal Dew World : http://crystalmark.info/
    -----------------------------------------------------------------------
    * MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
    * KB = 1000 bytes, KiB = 1024 bytes
    
       Sequential Read (Q= 32,T= 1) :    15.884 MB/s
      Sequential Write (Q= 32,T= 1) :    15.860 MB/s
      Random Read 4KiB (Q= 32,T= 1) :     1.702 MB/s [   415.5 IOPS]
     Random Write 4KiB (Q= 32,T= 1) :     8.901 MB/s [  2173.1 IOPS]
             Sequential Read (T= 1) :    15.728 MB/s
            Sequential Write (T= 1) :    15.729 MB/s
       Random Read 4KiB (Q= 1,T= 1) :     3.162 MB/s [   772.0 IOPS]
      Random Write 4KiB (Q= 1,T= 1) :     7.581 MB/s [  1850.8 IOPS]
    
      Test : 1024 MiB [D: 0.0% (0.1/255.9 GiB)] (x1)  [Interval=5 sec]
      Date : 2017/06/07 21:03:16
        OS : Windows 10 Professional [10.0 Build 15063] (x86)
    

    기타


    병목의 원인을 조사하기 위해 우리는 인터넷 방면에 대해 측정을 진행하였다.

     iSCSI Target : Synology DS216j (2TB x2, RAID 1)

    $ hdparm -Tt /dev/sda
    /dev/sda:
     Timing cached reads:   1094 MB in  2.00 seconds = 546.39 MB/sec
     Timing buffered disk reads: 294 MB in  3.01 seconds =  97.61 MB/sec
    
    # FATでフォーマットした場合
    $ dd if=/dev/zero of=/nas/write_bench bs=1M count=4096
    4294967295 bytes (4.3 GB, 4.0 GiB) copied, 54.7855 s, 78.4 MB/s
    
    # EXT4 でフォーマットした場合
    $ dd if=/dev/zero of=/nas/write_bench bs=1M count=4096
    4294967296 bytes (4.3 GB, 4.0 GiB) copied, 45.5653 s, 94.3 MB/s
    

     iSCSI Target : Synology DS412+ (3TB x4, RAID 6)

    # EXT4 でフォーマットした場合
    $ dd if=/dev/zero of=/nas/write_bench bs=1M count=4096
    4294967296 bytes (4.3 GB, 4.0 GiB) copied, 46.271 s, 92.8 MB/s
    
    # CIFS共有先へのdd (NAS側のファイルシステムは、Ext4)
    $ dd if=/dev/zero of=/nas_cifs/write_bench bs=1M count=4096
    4294967296 bytes (4.3 GB, 4.0 GiB) copied, 47.475 s, 90.5 MB/s
    
    측정 결과로 기가비트 hter는 대체로 USB 주변이 병목이 됐다는 결론을 내렸다.
    대신 iSCSI 등의 성능은 기가비트 이더의 은혜를 입어 마이크로소프트의 대안으로 활용하자!이런 상황이라고 할 수 있죠.

    좋은 웹페이지 즐겨찾기