rsync를 이용 라즈베리파이에 USB 외장하드 ROOT 마운트 (Raspberry Pi)



  •  라즈베리파이는 SD카드를 저상소로 사용합니다
  •  SD카드 특성상 일정회수 이상 write하면 수명을 다하는데요 서버로 오래 운영하기에는 불안함 느낌이 들어 외장하드를 root로 사용하는 방법을 찾아 봤습니다
  •  리눅스 시스템에 대해 아는게 없어 애를 먹고있는 중에 [횡수] 라즈베리 파이.. HDD로 루트 마운트 성공 글이 있어 참고해서 시도해 봤습니다
  •  위 글을 작성하신분은 시스템을 잘 아는 분이셔서 그런지 간단한 명령어들로 적어주셔서 제가 실제 적용하는데 시간이 좀걸렸습니다
  •  이 블로그에 작성한 내용은 참고한 글에 있는 명령어를 포함하고 제가 추가한 명령을포함해 익숙하지 않은 분들도 도움이 될 수 있도록 정리를 해봤습니다


  • 부팅은 SD카드로하고 저장소는 마운트된 외장하드를 이용하게 됩니다


  • 구성 환경
    • 500G 외장하드 (외부 전원 사용)
    • SD카드 8G
    • 라즈베리파이 B





  1. 라즈베리파이가 USB 외장하드를 인식했다는 조건으로 시작합니다
    1. 대부분 자동으로 인식합니다


  2. root 계정으로 로그인


  3. fdisk를 이용해서 디스크 파시션 생성 (파티션 구분만 합니다. 포맷은 이후에 진행)
    1. 저는 파티션을 2개로 나눴습니다. 약 5G swap영역, 나머지 모두 ext4영역
    2. $ fdisk /dev/sda 명령 설정된 파티션을 삭제

      root@raspberrypi:/# fdisk /dev/sda

      Command (m for help): d                        <---- 삭제 명령

      Partition number (1-4): 1


      Command (m for help): d

      Selected partition 2


      Command (m for help): d

      No partition is defined yet!                        <---- 다 삭제 되었다는 안내


      Command (m for help): 




  4. 디스크 파티션을 구분 (용량을 설정함)

    위 명령에서 이어 계속 fdisk를 실행하고 있는 상태 입니다

    Command (m for help): 
    n                        <---- 새 파티션 생성 명령
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p                        <---- p타입으로 명령
    Partition number (1-4, default 1): 1
    First sector (2048-976773167, default 2048): 2048                        <---- 파티션 시작값을 적음
    Last sector, +sectors or +size{K,M,G} (2048-976773167, default 976773167): 9767731                        <---- 피티션 끝 값을 적음

    시작 값과 끝 값으로 용량이 정해 집니다

    Command (m for help): n                        <---- 다시한번 새로운 파티션을 만드는 명령
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): p                        <---- p타입으로 명령
    Partition number (1-4, default 2): 2
    First sector (9767732-976773167, default 9767732): 9767732                        <---- 두번째 파티션 시작 위치
    Last sector, +sectors or +size{K,M,G} (9767732-976773167, default 976773167): 976773167                        <---- 두번째 파티션 끝나는 위치

    Command (m for help): w                        <---- 저장 (fdisk종료됨)
    The partition table has been altered!

    Calling ioctl() to re-read partition table.

    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.

    root@raspberrypi:/# 




  5. 구분된 파티션을 확인
    1. root@raspberrypi:/# fdisk /dev/sda
      sda   sda1  sda2        <--------- 이렇게 3개가 생겼음
      sda는 라즈베리파이가 인식한 외장하드
      sda1는 2048부터 9767731까지 설정한 부분
      sda2는 9767732 부터 976773767까지 설정한 부분

    2. $fdisk /dev/sda를 실행해서 p명령을 하면 내부적으로 나눠진 파티션 sda1, sda2를 볼수 있습니다

      root@raspberrypi:/# fdisk /dev/sda

      Command (m for help): p                        <---- 현재 디스크 정보 출력

      Disk /dev/sda: 500.1 GB, 500107862016 bytes
      255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0xa4b57300

         Device Boot      Start         End      Blocks   Id  System
      /dev/sda1            2048     9767731     4882842   83  Linux                        <---- 디스크의 첫번째 파티션
      /dev/sda2         9767732   976773167   483502718   83  Linux                        <---- 디스크의 두번째 파티션

      Command (m for help): 




  6. 파티션 포맷 
    1. swap로 포맷
      $ mkswap /dev/sda1 

      root@raspberrypi:/# mkswap /dev/sda1

      Setting up swapspace version 1, size = 4882836 KiB

      no label, UUID=4fd3b952-e23e-40eb-8ecc-66cea9a23c14


    2. ext4로 포맷
      $ mkfs.ext4 /dev/sda2

      root@raspberrypi:/# mkfs.ext4 /dev/sda2

      mke2fs 1.42.5 (29-Jul-2012)

      Filesystem label=

      OS type: Linux

      Block size=4096 (log=2)

      Fragment size=4096 (log=2)

      Stride=0 blocks, Stripe width=0 blocks

      30220288 inodes, 120875679 blocks

      6043783 blocks (5.00%) reserved for the super user

      First data block=0

      Maximum filesystem blocks=0

      3689 block groups

      32768 blocks per group, 32768 fragments per group

      8192 inodes per group

      Superblock backups stored on blocks:

              32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

              4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

              102400000


      Allocating group tables: done

      Writing inode tables: done

      Creating journal (32768 blocks): done

      Writing superblocks and filesystem accounting information: done


      root@raspberrypi:/#




  7. rsync를 이용해서 새로 만들어진 파티션에 모든 파일을 옮김

    1. $ mkdir /newfs 
      $ mount /dev/sda2 /newfs
      아래 모든 명령을 실행

      rsync -av bin /newfs

      rsync -av dev /newfs

      rsync -av home /newfs

      rsync -av lost+found /newfs

      rsync -av mnt /newfs

      rsync -av opt /newfs

      rsync -av root /newfs

      rsync -av sbin /newfs

      rsync -av srv /newfs

      rsync -av tmp /newfs

      rsync -av var /newfs

      rsync -av boot /newfs

      rsync -av etc /newfs

      rsync -av lib /newfs

      rsync -av media /newfs

      rsync -av proc /newfs

      rsync -av run /newfs

      rsync -av selinux /newfs

      rsync -av sys /newfs                        <---- 해야되는지 확실하게 모름

      rsync -av usr /newfs

       


    2. 추가 rsync 설명
      -a 는 archive mode (심볼릭 링크, 속성, 퍼미션, 소유권 등 보존)
      -v 진행상황을 상세히 보여줌


  8. 12시간걸림
    옮기는데 오류가 많이나는데 왜 나는지 파악은 안되었습니다 그로인해 시간이 오래 걸리는 것으로 보입니다

  9. 부팅 설정 변경

    1. vi /boot/cmdline.txt

      dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait

      처럼 root=/dev/sda2 로 하면 끝 

    2. 원본

      dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait 




  10. swap 설정
    vi /etc/fstab에 아래 내용 추가

    /dev/sda1       swap                    swap    defaults        0 0 




  11. 모든 설정을 마치고 재부팅

  12. 용량 확인을 위해 df -h로 확인




리눅스의 전체적인 환경을 모르고 설정 내용만 따라해서 이게 제대로 된것인지에 대한 판단은 안서있는 상태입니다

이 상태로 계속 사용해 보면서 문제가 있는지는지 파악해 봐야될거 같습니다






참고


신고





Posted by 파란물

티스토리 툴바