DAY_7 리눅스 디스크 관리

2021. 1. 4. 18:17
반응형

하드 디스크 장치명
-/dev/ 이름으로 시작한다.

가상 터미널
-외부에서 로그인을 하면 리눅스에 접속해서 명령어를 사용할 수 있는
터미널을 부여받는다.

자신의 터미널 번호를 확인하는 명령어 : tty
가상 콘솔 : /dev/tty1, /dev/tty2,,,,
가상 터미널 : /dev/pts/0, /dev/pts/1,,,,

일반 PC : SATA, SSD 방식을 사용한다.
서버 : SATA, SSD 방식과 SAS를 사용한다.

SATA, SSD 회전 속도 : 7200rpm
SAS 회전 속도 : 10000, 15000rpm

하드디스크 장치명은 아래와 같은 형식으로 되어 있습니다.
/dev/[디스크종류]d[하드순서][파티션순서]
ex) /dev/sda1, /dev/sdb2 ...
IDE 방식의 장치명 : /dev/hda, /dev/hdb, /dev/hdc, /dev/hdd ... (거의 사용하지 않는다.)
SCSI,SATA,SAS,SSD 방식의 장치명 : /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd ... 

파티션 번호 :
/dev/sda1, /dev/sda2, /dev/sda3 ...
연결방식에 따른 차이 :
a부터 차례대로 붙음 : /dev/sda, /dev/sdb, /dev/sdc

1. 리눅스 시스템을 종료하는 다양한 방법
: shutdown -h now
: init 0
: poweroff
: halt
2. 리눅스 시스템을 재부팅하는 다양한 방법
: shutdown -r now
: init 6
: reboot
: Ctrl + Alt + Del 키

 

파티션 : HDD를 분할해서 분리한 경우 이를 파티션이라고 한다.
마운트 : 장치를 디렉터리에 연결하는 작업을 의미한다.



HDD 파티션 분할
운영중인 리눅스 서버에 HDD 를 추가하는 일은 자주 일어나는 일은 아니고 가끔씩 일어나는 일이며 여기서는
리눅스 서버에 HDD 를 추가하는 방법을 설명합니다.

 

 1. HDD 준비

 

 2. 시스템 종료 후 HDD 연결 # init 0

 

 3. HDD 파티션 분할

   fdisk 로 HDD의 파티션을 분할합니다.

   # fdisk -l <-- 부팅 후 fdisk -l로 확인

   # fdisk /dev/sdb

 

  4. 파일시스템 생성(포맷)

  분할된 파티션에 파일시스템을 생성(포맷)한다.

  참고 : https://ko.wikipedia.org/wiki/XFS

  ext -> ext2 -> ext3 -> ext4

  CentOS 7 파일시스템 : xfs

  mkfs.ext4 : ext4 파일시스템 생성(포맷)하는 명령어

  mkfs.xfs : xfs 파일시스템 생성(포맷)하는 명령어

    # mkfs.ext4 /dev/sdb1

    # mkfs.xfs /dev/sdb2

 

 

  5. 마운트할 디렉터리 생성

    파티션과 연결할 디렉터리 /data, /home2 를 생성합니다.

    #mkdir /home2

    #mkdir /data

 

  6. 파티션을 마운트 할 디렉터리에 연결 (마운트)

    #mount /dev/sdb1 /home2

    #mount /dev/sdb2 /data

 

  7. /etc/fstab 수정

    # vi /etc/fstab

        :

        :

      (생략)

 

   /dev/sdb1   /data    ext4   defaults  1  2
  /dev/sdb2   /home2   xfs    defaults  1  2

 

- /etc/fstab 을 수정하는 이유는 수정하고 저장하지 않으면 마운트 된 것이 사라지기 때문이다.

 이전에도 변경된 설정을 저장 해 보았던 경험이 있다. 
   /etc/vimrc 
   $HOME /.vimrc 
   :set nu 

  $HOME /.bashrc 
  alias vi='vim' 

 


--실습--

서버에 HDD 추가하기

 - fdisk : 파티션 분할 명령어 (2T 이상은 사용할 수 없다.)

 - parted : 파티션 분할 명령어 (2T 이상 가능하다.)

파티션의 목록을 보는것 
fdisk /dev/sdb의 파티션을 분할한다. 

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition  <-- 파티션 삭제
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types  <-- 파티션 타입 확인
   m   print this menu  <-- 메뉴 출력
   n   add a new partition  <--   파티션 생성
   o   create a new empty DOS partition table
   p   print the partition table   <-- 파티션 테이블 출력
   q   quit without saving changes   <-- 저장하지 않고 종료
   s   create a new empty Sun disklabel
   t   change a partition's system id  <-- 파티션 system id 변경
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit  <-- 저장하고 종료
   x   extra functionality (experts only)

 

- 파티션 추가과 삭제

3번 ENTER 1번 파티션 할 용량
P : 파티션 출력

    fdisk 로 파티션을 분할하면 system ID : 83 (리눅스 파티션)

파티션 삭제


- 실습 : sdb를 2개의 파티션으로 나눠보기 

        20G
+-------------------+
|    /dev/sdb       |
+---------+---------+
|   10G   |   10G   |
+---------+---------+
 /dev/sdb1 /dev/sdb2

 

 fdisk 명령어 :

 n : 파티션 추가 p : 파티션 테이블 확인 d : 파티션 삭제 q : 저장하지 않고 종료 w : 저장하고 종료

 

실행 순서 

 n -> 엔터 -> 엔터 -> 엔터 -> +10G
 n -> 엔터 -> 엔터 -> 엔터 -> 엔터
 p
 w
 # fdisk -l /dev/sdb

4. - mkfs.ext4 : ext4 파일시스템 생성(포멧)하는 명령어

5. 마운트할 디렉터리 생성

  마운트 : 저장장치와 디렉터리를 연결하는 것이다.

  파티션과 연결할 디렉터리 /data, /home2 를 생성한다.

  # mkdir /data

  # mkdir /home2

우선 디렉터리를 만든다

6. 파티션을 마운트할 디렉터리에 연결 (마운트)

  파티션을 연결할 디렉터리에 마운트한다.

  mount : 마운트하는 명령어

  형식 : mount 저장장치 디렉터리

  # mount /dev/sdb1 /data

  # mount /dev/sdb2 /home2

  # df  ---> 디스크 용량 확인 

    :

    :

  /dev/sdb1 10190100 36888 9612540 1% /data

  /dev/sdb2 10474496 32992 10441504 1% /home2

 

7. /etc/fstab 수정

 영구적으로 마운트 하기 위해서 /etc/fstab 파일을 수정한다

 디바이스 마운트포인트 파일시스템타입 옵션 덤프 파일시스템체크순서

  # vi /etc/fstab

     :

     : (생략)

   /dev/sdb1 /data xfs defaults 1 2

   /dev/sdb2 /home2 ext4 defaults 1 2

 

8. 리부팅 후 확인

 서버를 리부팅한 후 서버가 잘 부팅이 되면 정상적으로 마운트가 잘 된 것이다.

 로그인해서 df로 마운트된 상태를 확인한다.

 # reboot

 # df

 


--실습--

 언마운트 : 마운트 된 장치를 분리하는 작업이다.

 umount 명령어를 사용한다.

 

 순서 

 1. #df 로 상태 확인

 2. /dev/sdc1의 마운트를 해제한다. (즉, 언마운트 한다.)

  #umount /dev/sdc1

 3. /backup2에 마운트 된 장치를 해제한다. (즉, 언마운트 한다.)

  #umount /backup2


- 파티션의 종류

  주파티션 (Primary Partition) : 데이터를 담을 수 있는 파티션

  확장 파티션 (Extended Partition) : 데이터를 담을 수 없는 파티션이고 논리 파티션을 담을 수 있는 파티션(그릇)

  논리 파티션 (Logical Partition) : 데이터를 담을 수 있는 파티션

 

  하나의 하드디스크에서 분할 가능한 개수가 정해져 있다

  주 파티션 : 4개

  확장 파티션 : 1개

  주 파티션 + 확장 파티션 ==> 주 파티션 3개 + 확장 파티션 1개

  ex) 파티션을 7개 만들고 싶다 (여러가지 방법이 있다) ---> 주 파티션 1개 + 확장 파티션 1개 + 논리 파티션 6개

                                                                       ---> 주 파티션 2개 + 확장 파티션 1개 + 논리 파티션 5개

                                                                       ---> 확장 파티션 1개 + 논리 파티션 7개 (거의 안씀)

 

 주 파티션 1개 + 확장 파티션 1개 + 논리 파티션 6개

   - 위 그림에서 핵심은 논리 파티션은 5부터 시작한다는 것이다.

 

- /etc/fstab 

 디바이스 : 장치명, LABEL명, UUID (고유ID) 

                 ----------------------> 화살표 방향으로 점차 사용하고 있다. 

 장치명 : /dev/sdb1, .... -> 장치명은 HDD를 장착하면 이미 정해져 있다.

 LABEL명 :  라벨명 (사용자 변경 가능하다.)

 UUID : 범용 고유 식별자 


--실습--

디바이스를 다양하게 변경해서 /etc/fstab 수정하기

 

/etc/fstab 수정

1. 디바이스 마운트포인트 파일시스템타입 옵션 덤프 파일시스템체크순서 <-- vi 편집기에서 /dev/sdb1,.... 이런식으로                                                                                                       수정 (예제 위에 있음)

2. 라벨명 마운트포인트 파일시스템타입 옵션 덤프 파일시스템체크순서 <-- e2label, xfs_admin 명령어를 사용

3. UUID 마운트포인트 파일시스템타입 옵션 덤프 파일시스템체크순서 <-- blkid 명령어 사용

 

 /dev/sdb1: ext4

 /dev/sdb2 :xfs

 /dev/sdc1 :xfs

 /dev/sdc2 :xfs

2. /etc/fstab 디바이스 LABEL명 설정하기

 ext4 : e2label 명령어로 변경 

  -> 형식 :  e2label device [ new-label ]

 xfs : xfs_admin 명령어로 변경

  -> 형식 : xfs_admin [-L label] device


 이전에 마운트 되어 있던것이 있으면 umount 해주기ㅣㅣㅣ

1. /dev/sdb1 장치의 label명을 확인한다.

  #e2label /dev/sdb1 ---> 아무것도 안나온다.

 

 2. /dev/sdb1 label명 붙이기 (아무 상관없지만 대부분 마운트 되는 디렉터리 명으로 붙인다.)

  #e2label /dev/sdb1 /data

 

 3. /dev/sdb2 label명 붙이기

  # xfs_admin -L /home2 /dev/sdb2

  # xfs_admin -l /dev/sdb2  --> label 명 확인

 

 4. /dev/sdc1, /dev/sdc2 도 바꿔주기

 

 5. /etc/fstab 수정해주기

  # vi /etc/fstab

       :

        :

   LABEL=/data /data ext4 defaults 1 2

   LABEL=/home2 /home2 xfs defaults 1 2

   LABEL=/backup1 /backup1 xfs defaults 1 2

   LABEL=/backup2 /backup2 xfs defaults 1 2

 

설정이 완료되면 리부팅한다.

# reboot

3. /etc/fstab 디바이스 UUID로 설정하기

1. 마운트된 디렉터리를 모두 언마운트한다.

  # umount /home2 /data /backup1 /backup2

 

 2. blkid 명령어를 사용한다.

  # blkid

     :

     :

  /dev/sdb1 : UUID 정보 복사하기

 

 3. vi /etc/fstab

     :

     :

  아래 그림과 같이 수정한다.

 4. 리부팅
  # reboot 


--실습--

 UUID 변경하기 

 #umount  /dev/sdc2

 # xfs_admin -U generate /dev/sdc2

 # blkid 

     :

     :

  UUID 값이 변한 것을 알 수 있다.


--실습--

================================================

부팅하다가 멈추면 /etc/fstab 내용이 잘못된 것이고

root 비번을 입력해서 로그인한 후에

# mount -o remount,rw /

================================================

 

변경된 UUID를 수정하지 않고 리부팅하면 부팅하다가 멈추게 된다.

 # reboot

 멈추는 이유는 HDD를 마운트를 해야 하는데 잘못된 마운트 정보 때문에 파일시스템을 마운트 못하기 때문이다.

 Give root password fror mainenance

 (or press Control-D to continue): <-- root 비번을 입력하고 로그인한다.

 

/etc/fstab 내용이 잘못된 것이고 root 비번을 입력해서 로그인한 후에 /etc/fstab 파일을

수정하고 저장한 후 reboot 잘 부팅되는 것을 확인한다.

:r !blkid <-- 현재 문서에 blkid의 결과값을 얻어온 후 수정한다.

 

[root@localhost ~]# vi /etc/fstab

:

:

UUID=bc35eada-56ef-4e51-89d9-cd87c6da772a /data ext4 defaults 1 2

UUID=fdc867ff-f86f-44e8-ac32-5ee791777602 /home2 xfs defaults 1 2

UUID=6a1dafa9-be65-4f2f-9fec-deeff3781835 /backup1 xfs defaults 1 2

# 이전 값

#UUID=65825429-d5a9-441a-921a-59759cf62235 /backup2 xfs defaults 1 2

# 새로운 값

UUID=bb75c755-9955-4276-88f9-06b9c847e670 /backup2 xfs defaults 1 2

 

# reboot


쉘이란?

- 사용자와 커널 사이에 연결시켜주는 역할을 하며 사용자가 입력한 명령어를 해석하여 커널로 전달하여 해당

  운영체제가 명령어를 실행시켜 줍니다.

 

쉘의 종류 

  Bourne Shell 

  /bin/sh 

  벨 연구소의 스티브본이 개발, 많은 셸 스크립트의 기반이 되는 셸 

 

  C Shell 

  /bin/csh 

  C 언어 구문과 유사, Bourne Shell 을 확장하여 히스토리, 작업제어, 엘리어스 등 기능 추가 개발자들에게

  유용한 기능들을 제공 

 

  TC Schell

  /bin/tcsh 

  C Shell 에 명령 행 완성 과 명령 행 편집 기능을 추가

 

  Korn Shell

  /bin/ksh 

  Bourne Shell 가 호환되며 C Shell 의 많은 기능을 포함, Unix 계열에서 많이 사용

 

  Bourne Again Shell (bash) 

  /bin/bash 

 리눅스에서 가장 많이 사용되는 쉘로 본쉘 + C 셸 + Korn Shell 의 기능들을 통합시켜 개발

 

 

- 최상위 루트파일시스템의 리스트를 확인한다.

  # ls /

 

- CentOS 7 에서는 /bin 이 /usr/bin과 통합되어 있다.

  bin -> usr/bin

 

- /dev 디렉터리의 파일 리스트를 확인한다.

 # ll /dev

 

TUI (TEXT USER INTERFACE)

---> vmware workstation에서

 : Alt + F1 : /dev/tty1   -> 첫 번째 가상 콘솔

 : Alt + F2 : /dev/tty2   -> 두 번째 가상 콘솔

 : Alt + F3 : /dev/tty3   -> 세 번째 가상 콘솔

 : Alt + F4 : /dev/tty4   -> 네 번째 가상 콘솔

 : Alt + F5 : /dev/tty5   -> 다섯 번째 가상 콘솔

 : Alt + F6 : /dev/tty6   -> 여섯 번째 가상 콘솔

 

 

GUI 환경

Alt + F1 : GUI 로그인 환경

[Ctrl + ]Alt + F2 : /dev/tty2 (두 번째 가상 콘솔)

[Ctrl + ]Alt + F3 : /dev/tty3 (세 번째 가상 콘솔)

[Ctrl + ]Alt + F4 : /dev/tty4 (네 번째 가상 콘솔)

[Ctrl + ]Alt + F5 : /dev/tty5 (다섯 번째 가상 콘솔)

[Ctrl + ]Alt + F6 : /dev/tty6 (여섯 번째 가상 콘솔)

 

Alt + F1 -> 여섯 번째 가상콘솔로 전환하는 단축키는 Ctrl + Alt + F6

 

[1-6] : 1 ~ 6을 의미한다.

/dev/tty1 ~ /dev/tty6까지 ls로 확인한다.  --> PuTTY에서 확인

# ls -l /dev/tty[1-6]

crw--w----. 1 root tty 4, 1 14 15:54 /dev/tty1

crw--w----. 1 root tty 4, 2 14 16:42 /dev/tty2

crw--w----. 1 root tty 4, 3 14 16:44 /dev/tty3

crw--w----. 1 root tty 4, 4 14 16:44 /dev/tty4

crw--w----. 1 root tty 4, 5 14 16:44 /dev/tty5

crw--w----. 1 root tty 4, 6 14 16:44 /dev/tty6

 

# rm -f /dev/tty4  ---> PuTTY에서 

 

Alt + F4 로 전환한 후 로그아웃하면 터미널이 삭제되었기 때문에 로그인

화면이 나오지 않는다.

mknod 명령어를 이용해서 /dev/tty4를 다시 생성하면 로그인창이 다시 활성화된다.

crw--w----. 1 root tty 4, 4 1 4 16:44 /dev/tty4  ---> 삭제 되었던 tty4 정보

 

mknod 형식 :

Usage: mknod [OPTION]... NAME TYPE [MAJOR MINOR]

-m : permission

 

# mknod -m 640 /dev/tty4 c 4 4

# chgrp tty /dev/tty4

# ls -l /dev/tty4

crw--w----. 1 root tty 4, 4 14 16:55 /dev/tty4

 

/dev/sdb1, /dev/sdb2, /dev/sdc1, /dev/sdc2 를 확인한다.

# ls -l /dev/sd[bc][12]

brw-rw----. 1 root disk 8, 17 14 15:54 /dev/sdb1

brw-rw----. 1 root disk 8, 18 14 15:54 /dev/sdb2

brw-rw----. 1 root disk 8, 33 14 15:54 /dev/sdc1

brw-rw----. 1 root disk 8, 34 14 15:54 /dev/sdc2

 

- 자신의 가상 터미널을 확인한다.

 # ll /dev/pts/0

 

- 장치 파일(/dev) : 가상 콘솔, 터미널, HDD 등이 여기에 해당된다.

- /etc : 환경설정 파일을 가지고 있는 디렉터리이다.

  대표적인것으로

  /etc/passwd : 사용자 정보를 저장하고는 파일

  /etc/shadow : 사용자 비밀번호를 저장하는 파일

  /etc/fstab : 파일시스템의 정보를 담고 있는 파일

  /etc/init.d/network : 네트워크 재시작 스크립트 파일

  /etc/resolv.conf : DNS 서버의 주소 정보를 가지고 있는 파일  ---> 만약 정보가 없다면 이름으로 접근하는

                                                                                       모든 것이 안됨

 

  /etc/sysconfig/network-scripts/ifcfg-ens33 : 네트워크(이더넷) 설정 파일

 

내 컴퓨터에서도 확인할 수 있다

- 네트워크 및 인터넷 설정 열기 -> 이더넷 -> 어뎁터 옵션 변경 -> 이더넷 -> 속성

  -> 인터넷 프로토콜 버전 4(TCP/IPv4)

 

**참고**

인터넷을 사용하기 위한 설정 : 4가지

IP주소 

서브넷마스크

게이트웨이 주소

DNS 서버 주소


--실습--

네트워크 파일 수정하기

 

!! : 바로 이전 명령어 실행

!c : 바로 이전에 c로 시작하는 명령어 실행

!s : 바로 이전에 s로 시작하는 명령어 실행

!v : 바로 이전에 v로 시작하는 명령어 실행

 

 # cat /etc/resolv.conf

 # Generated by NetworkManager

    nameserver 168.126.63.1

 

 # vi /etc/sysconfig/network-scripts/ifcfg-ens33

     :

     :

   DNS1=168.126.63.2  -> 수정한것

 # service network restart

 # !c

   cat /etc/resolv.conf

 # Generated by NetworkManager

   nameserver 168.126.63.2

 

 # !v

   vi /etc/sysconfig/network-scripts/ifcfg-ens33

       :

   DNS1=168.126.63.1

 # !s

  service network restart

 # !c

  cat /etc/resolv.conf

 # Generated by NetworkManager

  nameserver 168.126.63.1


--실습-- 

서버의 호스트명 설정하기

 

형식 : hostname.domainname

 - 호스트명 변경하는 명령어 

   # nmtui를 사용

임의로 호스트 이름 적어보기
설정한 호스트 네임 출력

 - # hostnamectl set-hostname ---> 호스트명을 변경하는 명령어

 - # hostname ---> 호스트명을 확인하는 명령어이다.

- 호스트명이 저장되는 파일 : /etc/hostname

 

 /etc/hostname 파일의 내용을 확인한다.

 # cat /etc/hostname

  test.linux.co.kr

 

 hostnamectl 명령어를 이용해서 변경한다.

 hostnamectl : 호스트명을 변경하는 명령어

 # hostnamectl set-hostname test.linuxmaster.co.kr

 # cat /etc/hostname

  test.linux.co.kr

 # hostname

  test.linux.co.kr

 

호스트명을 변경하고 /etc/hosts 파일에 호스트명을 추가한다.

 # vi /etc/hosts

  127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

     :

     :

  1 localhost localhost.localdomain localhost6 localhost6.localdomain6

  192.168.8.3 test test.linux.co.kr

 

반응형

BELATED ARTICLES

more