[Linux]디스크 추가 및 파일 시스템 구성 절차

Oracle VM VirtualBox에서 디스크를 추가하고 파일 시스템을 구성하는 절차를 연습해 보겠습니다. 물리 서버에서도 동일한 절차로 파일 시스템을 구성할 수 있습니다. Logical Volume을 사용하지 않고 물리적 디스크를 2개의 파티션으로 분할해서 마운트시키겠습니다.

  1. 설치된 디스크 확인
    • VM을 선택하고 “설정 > 저장소” 페이지로 이동. SATA 컨트롤러에 1개의 디스크가 있습니다.
      VirtualBox 저장소 확인
    • VM에 접속해서 lsblk 명령어로 설치된 디스크(/dev/sda)를 확인해 봅니다.
      [root@centos8 ~]# lsblk
      NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 30G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 29G 0 part ├─cs-root 253:0 0 27G 0 lvm / └─cs-swap 253:1 0 2.1G 0 lvm [SWAP] sr0 11:0 1 10.6G 0 rom /run/media/root/CentOS-Stream-8-x86_64-dvd
  2. 가상 하드 디스크 추가 및 확인
    • VM의 종료한 후, “하드 디스크 추가” 버튼을 클릭합니다.
      가상 하드 디스크 만들기 절차
    • 하드 디스크 “만들기” 버튼을 클릭합니다.
      가상 하드 디스크 만들기 절차
    • 가상 하드 디스크이 타입을 선택합니다. 저는 “VDI”를 선택했습니다.
      가상 하드 디스크 만들기 절차
    • 가상 하드 디스크를 동적으로 할당할지, 정적으로 할당할지 선택합니다.
      “Pre-allocate Full Size”를 체크하지 않으면 동적으로 할당됩니다.
      가상 하드 디스크 만들기 절차
    • 가상 하드 드스크의 저장 위치 및 크기를 선택합니다.
      가상 하드 디스크 만들기 절차
    • 가상 하드 디스크의 생성이 완료되면 선택합니다.
      저장소에 추가된 가상 하드 디스크를 확인합니다.
      가상 하드 디스크 만들기 절차
      가상 하드 디스크 만들기 절차
    • VM을 시작한 후, 추가한 하드 디스크(/dev/sdb)를 확인합니다.
      [root@centos8 ~]# lsblk
      NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 30G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 29G 0 part ├─cs-root 253:0 0 27G 0 lvm / └─cs-swap 253:1 0 2.1G 0 lvm [SWAP] sdb 8:16 0 10G 0 disk sr0 11:0 1 10.6G 0 rom /run/media/root/CentOS-Stream-8-x86_64-dvd
  3. 디스크 파티션 생성
    • fdisk 명령어로 하드 디스크를 초기화하고 및 파티션를 생성할 수 있습니다.
      [root@centos8 ~]# fdisk /dev/sdb
      [root@centos8 ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.32.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x268e2a23. Command (m for help): m Help: DOS (MBR) a toggle a bootable flag b edit nested BSD disklabel c toggle the dos compatibility flag Generic d delete a partition F list free unpartitioned space l list known partition types n add a new partition p print the partition table t change a partition type v verify the partition table i print information about a partition Misc m print this menu u change display/entry units x extra functionality (experts only) Script I load disk layout from sfdisk script file O dump disk layout to sfdisk script file Save & Exit w write table to disk and exit q quit without saving changes Create a new label g create a new empty GPT partition table G create a new empty SGI (IRIX) partition table o create a new empty DOS partition table s create a new empty Sun partition table Command (m for help):
    • 신규 파티션을 추가하기 위해 “n” 명령어를 입력합니다. 5GB를 가진 2개의 파티션을 생성하겠습니다.
      Command (m for help): n
      Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (1-4, default 1): First sector (2048-20971519, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +5G Created a new partition 1 of type 'Linux' and of size 5 GiB.
      Command (m for help): n
      Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (2-4, default 2): First sector (10487808-20971519, default 10487808): Last sector, +sectors or +size{K,M,G,T,P} (10487808-20971519, default 20971519): Created a new partition 2 of type 'Linux' and of size 5 GiB.
    • 생성된 파티션을 확인하기 위해서는 “p” 명령어를 입력합니다. 2개의 파티션이 생성된 것을 확인할 수 있습니다.
      Command (m for help): p
      Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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 Disklabel type: dos Disk identifier: 0x268e2a23 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 10487807 10485760 5G 83 Linux /dev/sdb2 10487808 20971519 10483712 5G 83 Linux
    • 생성된 파티션을 저장하고 쉘 프롬프트로 돌아오기 위해 “w” 명령어를 입력합니다.
      Command (m for help): w
      The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
    • lsblk -f 명령어로 디스크에 생성된 파티션의 파일 시스템 타입(FSTYPE)과 마운트 포인트를 확인할 수 있습니다.
      /dev/sdb에 생성된 파티션(sdb1, sdb2)에는 아직 파일 시스템 타입(FSTYPE)과 마운트 포인트가 없습니다.
      [root@centos8 ~]# lsblk -f
      NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs b1bd24ba-cfac-49c8-9636-680808bda35e /boot └─sda2 LVM2_member AOBiCt-qK9S-mnH4-Vt1A-mqRe-4zWP-WeklXw ├─cs-root xfs 79ec5288-5a91-489d-bb11-2d76d674157b / └─cs-swap swap 3c4e5a64-c5c3-417f-b937-bfd324377227 [SWAP] sdb ├─sdb1 └─sdb2 sr0 iso9660 CentOS-Stream-8-x86_64-dvd 2022-05-13-16-37-52-00 /run/media/root/CentOS-Stream-8-86_64-dvd
  4. “/dev/sdb1″과 “/dev/sdb2″에 파일 시스템 생성
    • mkfs -t {FSTYPE} 장치명 명령어로 파일 시스템을 생성할 수 있습니다.
      [root@centos8 ~]# mkfs -V -t xfs /dev/sdb1
      mkfs from util-linux 2.32.1 mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
    • `mke2fs` 명령어로 파일 시스템을 생성할 수 있습니다.
      “/etc/mke2fs.conf” 파일에 설정된 값을 사용해서 ext2, ext3, ext4 등의 파일 시스템을 생성합니다.
      -j 옵션: 저널링 파일 시스템을 ext3로 생성합니다.
      [root@centos8 ~]# mke2fs -j /dev/sdb2
      mke2fs 1.45.6 (20-Mar-2020) Creating filesystem with 1310464 4k blocks and 327680 inodes Filesystem UUID: c34b4d75-80f2-4a11-a1df-671ea6652348 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
    • lsblk -f 명령어로 “/dev/sdb” 디스크에 생성된 파티션의 파일 시스템 타입(FSTYPE)을 다시 확인해 봅니다.
      [root@centos8 ~]# lsblk -f
      NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs b1bd24ba-cfac-49c8-9636-680808bda35e /boot └─sda2 LVM2_member AOBiCt-qK9S-mnH4-Vt1A-mqRe-4zWP-WeklXw ├─cs-root xfs 79ec5288-5a91-489d-bb11-2d76d674157b / └─cs-swap swap 3c4e5a64-c5c3-417f-b937-bfd324377227 [SWAP] sdb ├─sdb1 xfs a3a3a40b-9669-4810-8209-e3c8ab8f29d7 └─sdb2 ext3 c34b4d75-80f2-4a11-a1df-671ea6652348 sr0 iso9660 CentOS-Stream-8-x86_64-dvd 2022-05-13-16-37-52-00 /run/media/root/CentOS-Stream-8-x86_64-dvd
  5. 파일 시스템 무결성 검사
    • fsck, fsck.ext3, xfs_repair 등의 명령어를 사용해서 언마운트(umount)된 파일 시스템의 무결성을 검사하고 오류도 수정할 수 있습니다.
    • xfs 파일 시스템 타입을 가지고 있는 “/dev/sdb1” 파티션은 xfs_repair 명령어로 검사를 합니다.
      [root@centos8 ~]# xfs_repair /dev/sdb1
      Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify and correct link counts... done
    • ext3 파일 시스템 타입을 가지고 있는 “/dev/sdb2” 파티션은 fsck 명령어로 검사를 합니다.
      [root@centos8 ~]# fsck -t ext3 -V /dev/sdb2
      fsck from util-linux 2.32.1 [/usr/sbin/fsck.ext3 (1) -- /dev/sdb2] fsck.ext3 /dev/sdb2 e2fsck 1.45.6 (20-Mar-2020) /dev/sdb2: clean, 11/327680 files, 39535/1310464 blocks  
      fsck 명령어 옵션 -a: 발생한 에러를 사용자 확인절차 없이 자동으로 처리 -r: 복구할 때 사용자 확인 절차 -y: 파일시스템의 문제를 발견하였을 때 자동적으로 수정. 모든 질문에 yes로 대답 -n: 어떤 문제가 있을 때 이를 수정하지 않고, 문제점을 출력한다. -s : 대화형 모드에서 여러 파일 시스템을 점검할 때 fsck 동작을 시리얼화 함 -A: /etc/fstab에 정의된 모든 파일 시스템 점검 -P: -A옵션과 함께 사용할 때 루트 파일시스템과 그 외 파일시스템을 병렬로 점검 -R: -A옵션과 함께 사용할 때 루트 파일시스템의 점검을 제외 -N: 실제로 실행하지는 않고 작업 내용을 출력 -b 슈퍼블록: 슈퍼블록으로 지정한 백업 슈퍼블록을 사용 -f: 무조건 검사, fsck는 기본적으로 파일시스템에 이상이 없다고 판단하면 검사하지 않는다 -V: 점검상황을 자세히 설명
  6. 파일 시스템 마운트
    • mount 명령어를 사용해서 파일 시스템을 특정 디렉터리에 마운팅합니다.
      [root@centos8 mnt]# mount -t xfs /dev/sdb1 /home/jeus [root@centos8 mnt]# lsblk
      NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 30G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 29G 0 part ├─cs-root 253:0 0 27G 0 lvm / └─cs-swap 253:1 0 2.1G 0 lvm [SWAP] sdb 8:16 0 10G 0 disk ├─sdb1 8:17 0 5G 0 part /home/jeus └─sdb2 8:18 0 5G 0 part sr0 11:0 1 10.6G 0 rom /run/media/root/CentOS-Stream-8-x86_64-dvd  
      mount 명령어 옵션 -a: /etc/fstab 파일에 정의된 모든 파일 시스템 마운트 -t: 파일시스템 타입 지정(생략하면 -t ext4), "-t no+fs타입1,fs타입2"을 지정하면 제외 -o: 마운트 옵션 지정, 아래 [#4 필드 옵션] 참고 -f: 마운트할 수 있는지 점검만 한다 -r: -o ro와 동일 -w: -o rw와 동일 -v: 자세한 정보 출력 -n: /etc/mtab 파일을 변경하지 않고 마운트
    • 별도 옵션(-n) 없이 마운팅하면 “/etc/mtab” 파일에 등록됩니다. 부팅 시에도 자동 마운팅하려면 “/etc/fstab” 파일에 수작업으로 등록합니다.
      "/etc/mtab" 파일과 "/etc/fstab" 파일의 필드 설명
      #1 필드 : 장치명
      #2 필드 : 마운트 포인트
      #3 필드 : 파일 시스템의 종류
      #4 필드 : 파일 시스템의 속성을 지정하는 옵션
      #5 필드 : 덤프 여부, 0이면 백업되지 않고 1이면 백업을 위한 dump 명령 사용 가능
      #6 필드 : 부팅 시 파일시스템 점검 순서, 루트 파일시스템은 1을 지정, 나머지는 2를 지정, 0을 지정하면 부팅할 때 fsck 명령어로 점검하지 않는다.
      
      [#4 필드 옵션]
      defaults: rw, nouser, auto, exec, suid
      auto: 부팅 시 자동 마운트
      exec: 실행 파일의 실행 허용
      suid: setuid, setgid 사용 허용
      ro: 읽기 전용
      rw: 읽기 쓰기 가능
      user: 일반 사용자도 마운트 가능
      noauto: 부팅 시 자동 마운트하지 않음
      noexec: 실행 파일의 실행 불가
      nosuid: setuid, setgid 사용 불가
      nouser: root만 마운트 가능
      usrquota: 사용자별 디스크 쿼더 설정 가능
      grpquota: 그룹별 디스크 쿼더 설정 가능
      
  7. 언마운트 후 다시 마운트하기
    • umount 명령어로 마운트를 해제할 수 있습니다.
      [root@centos8 ~]# umount /dev/sr0 [root@centos8 ~]# mount -t iso9660 -o ro /dev/sr0 /mnt/cdrom [root@centos8 ~]# lsblk
      NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 30G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 29G 0 part ├─cs-root 253:0 0 27G 0 lvm / └─cs-swap 253:1 0 2.1G 0 lvm [SWAP] sdb 8:16 0 10G 0 disk ├─sdb1 8:17 0 5G 0 part /home/jeus └─sdb2 8:18 0 5G 0 part sr0 11:0 1 10.6G 0 rom /mnt/cdrom  
      umount 명령어 옵션 -a: /etc/mtab에 설정된 모든 파일시스템을 언마운트 -t fs타입 : 지정된 파일시스템 타입만 언마운트 -l: 장치의 사용이 끝날때 까지 대기 후 제거 -f: 강제 언마운트 -v: 정보 출력 -n: /etc/mtab 파일을 변경하지 않고 마운트를 해제

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다