LVM을 이용한 계정별 HDD 할당

업데이트:

Ubuntu는 2TB가 넘는 하드 디스크는 따로 인식을 할 수 있도록 설정해 주어야합니다. 이렇게 인식된 하드 디스크는 혼자 컴퓨터를 사용하는 경우에는 일반적으로 /home/hdd에 hdd를 마운트 하지만, 한 대의 컴퓨터에 여러 계정이 hdd를 공유해서 사용해야하므로, 아래의 방법으로 계정마다 400GB씩 hdd를 할당하고자 합니다.

서버 컴퓨터 hdd 확장

hdd를 컴퓨터로 인식시키기

  • 4TB hdd는 일단, parted를 이용하여 디스크 할당을 먼저합니다 (https://wikidocs.net/16272)

      # 4TB는 fdisk가 아닌 parted를 이용
      sudo parted /dev/sdb
      mklabel gpt
      # TB 단위로 단위를 설정
      unit TB
      # 파티션을 만들기 위해 아래 명령어 입력
      mkpart primary 0TB 4TB
      # 만들어진 파티션 번호를 lvm으로 설정 (print 명령어를 통해 디스크 번호 확인 가능)
      set 1 lvm on
      # parted를 빠져나옵니다
      quit
    
      ## 사용전에 디스크를 포맷
      sudo mkfs.ext4 /dev/sdb1
    
  • 가상 머신 사용하기

      # lvm2, udev requirements
      sudo apt-get install lvm2
      sudo apt-get install -y udev
    
      # 물리적 공간 할당
      sudo pvcreate /dev/sdb1
      # 가상 머신 생성
      sudo vgcreate vg1 /dev/sdb1
      # 논리적 공간 할당
      sudo lvcreate -n [account] -L 400G vg1
      # 논리적 공간 포맷
      mkfs.ext4 /dev/vg1/[account]
    

계정에 생성된 lvm mount

  • 내 계정에서 hdd 디렉토리를 만들고 hdd를 mount 합니다.

      mkdir hdd
      sudo mount /dev/vg1/[계정명]/ hdd
      sudo chown 계정명 hdd
      sudo chgrp 계정명 hdd
    
  • 이후에 pc가 껐다 켜져도 로그인 할때마다 자동 마운트 되도록 위해서 ~/.bashrc에 아래 코드를 추가합니다.

      Filename="/home/[account]/hdd/lost+found"
      if [ -d "$Filename" ]; then
              echo ''
      else
          echo '[password]' | sudo -S mount /dev/vg1/[account] /home/[account]/hdd
      fi
    
  • 아래 명령어 입력

      chattr +i ~/.bashrc
    

디스크 용량 추가 할당

  • lvm에 용량 추가

      lvextend -L +200G /dev/vg1/[lvm이름]
    
  • filesystem에 용량 증설

      resize2fs -p /dev/mapper/vg1-[lvm이름]
    

lvm 삭제

  • 삭제는 생성과 역순으로 해줘야 한다.
    • disk umount -> lv -> vg -> pv -> fdisk 삭제 (연구실 컴퓨터의 경우에는 lv가 모두 같은 vg안에 생성되었기 때문에 lv만 삭제하면 된다.)
    • lv에 대한 포맷은 따로 필요가 없다
  • mount 해제

      $ df -h
          Filesystem              Size  Used Avail Use% Mounted on
          .
          .
          .
          /dev/loop18             219M  219M     0 100% /snap/gnome-3-34-1804/66
          tmpfs                    11G   16K   11G   1% /run/user/121
          /dev/mapper/vg1-user     295G  111G  169G  40% /home/user/hdd  # 지우고자 하는 대상
      $ umount /home/user/hdd
    
  • lvm 제거

      $ lvscan
          .
          .
          ACTIVE            '/dev/vg1/user' [300.00 GiB] inherit
    
      $ lvremove /dev/vg1/user
          Do you really want to remove active logical volume user? [y/n]: y
          Logical volume 'user' successfully removed
    

Reference

댓글남기기