파일시스템 및 파티션

2022. 10. 20. 10:51리눅스

파일시스템

 - 파일을 저장하기 위한 운영체제의 논리적인 구조
 ‐ 각 OS들은 여러 개의 파일 시스템을 지원한다.
 ‐ Linux : xfs, ext4, ext3, jfs, ReiserFS…
 ‐ Windows : FAT, FAT32, NTFS 등
 ‐ UNIX : UFS(UNIX File System), ZFS
 ‐ IOS : APFS(Apple File System), HFS+

 

파티션

 - 물리적인 디스크를 논리적인 저장영역으로 구별한 것

 

MBR

 - 디스크의 앞쪽이 물리적으로 정의되어있는 sector
 - OS가 직접 사용하지 않으며 부트로더가 저장된다.

 

정리 

 - 예전에는 하드드라이브용량이 작아서 파티션을 많이 나눴었다.파일중 일부는 용량이 계속 늘어나서 

   시스템을 사용못하게 될수도 있습니다.그래서 파티션을 많이 나눠서 파티션으로 나눈 용량이상을

   못쓰기때문에 파티션으로 많이나눴었음 요즘에는 용량이 많아서 파티션을 할 필요가 없습니다.

 

Primary partition (1, 2, 3)

 - 물리적인 디스크에 독립적으로 존재하며 파일시스템을 생성, 운영체제가 직접 사용 가능하다. 각 물리적인 디스크마다 4개까지 생성할 수 있다.


Extended partition (4)

 - 디스크마다 1개까지 생성 가능하며 직접 사용할 수 없고 logical partition으로 분할 사용한다.

 

Logical partition (5, 6, 7, 8 5번째부터 Logical)

 - Extended partition내에 만들어지며 사용은 parimary partition과 동일하다.
 - P+E는 최대 4개까지 생성 가능하다.

                                                                                                                                                                     

IDE

‐ 디스크 : /dev/hda, /dev/hdb, /dev/hdc
‐ 파티션 : /dev/hda1,  /dev/hda2,  /dev/hda3…

 

SCSI, SATA

‐ 디스크 : /dev/sda, /dev/sdb, /dev/sdc
‐ 파티션 : /dev/sda1,  /dev/sda2,  /dev/sda3…                    

 

df

 - 디스크의 마운트 상태와 용량 확인.
 - ‐T : 파일 시스템 타입까지 출력한다.
 - ‐h : 읽기 쉬운 단위로 출력한다.

 

실습)

[root@Linux1 ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  471M     0  471M   0% /dev
tmpfs          tmpfs     487M     0  487M   0% /dev/shm
tmpfs          tmpfs     487M  8.2M  479M   2% /run
tmpfs          tmpfs     487M     0  487M   0% /sys/fs/cgroup
/dev/sda3      xfs        29G  4.2G   25G  15% /
/dev/sda1      xfs       497M  162M  335M  33% /boot
tmpfs          tmpfs      98M  8.0K   98M   1% /run/user/42
tmpfs          tmpfs      98M     0   98M   0% /run/user/0

 

/dev/sdb  - fdisk : /dev/sdb1, /dev/sdb2

                 (format)파일시스템을 생성한다.

 

fdisk

 - 물리적인 디스크에 논리적인 파티션을 생성하는데 사용하는 명령어. 만들어진 파티션에는 mkfs 명령으로 파일시스템이 생성되고 mount 명령을 통해 특정 디렉토리에 마운트 된다음 사용된다.
 - # fdisk   디스크명
 - # fdisk  /dev/sda

 

fdisk 프롬프트에서 사용하는 명령

p : 현재 파티션 상태 출력
d : 파티션삭제
n : 파티션 생성
t : 파티션 변경
w : 저장 후 종료
q : 취소 후 종료

 

실습) 1P 1E 1L 생성

[root@Linux1 dev]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

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
Building a new DOS disklabel with disk identifier 0x47915015.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x47915015

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
Partition number (2-4, default 2):
First sector (20973568-41943039, default 20973568):
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039):
Using default value 41943039
Partition 2 of type Extended and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x47915015

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568    41943039    10484736    5  Extended

Command (m for help): n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (20975616-41943039, default 20975616):
Using default value 20975616
Last sector, +sectors or +size{K,M,G} (20975616-41943039, default 41943039):
Using default value 41943039
Partition 5 of type Linux and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x47915015

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568    41943039    10484736    5  Extended
/dev/sdb5        20975616    41943039    10483712   83  Linux

Command (m for help): w

 

mkfs

 - 파티션에 파일시스템을 만들어준다.
 # mkfs –t  [파일시스템 타입]  파티션명

 

파일시스템 타입과 명령어

 - mkfs ‐t xfs ‐>  mkfs.xfs
 - mkfs ‐t ext3   ‐>  mke2fs  ‐j
 - mkfs ‐t ext2   ‐>  mke2fs

 

EX) mkfs –t xfs /dev/sda1  ‐> mkfs.xfs ‐f /dev/sda1

 - 파일 시스템이 재구성 되는 경우 mkfs.xfs에서 사용하는 –f 가 반드시 필요한 경우가 있다.

 

EX)

[root@Linux1 ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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

 

mount

 - 파일시스템은 지정한 디렉토리에 연결해서 사용 가능하도록 한다.

# mount  [‐a]  [‐t  [FStype]]  [장치명]  [디렉토리]
옵션
 - ‐a  : /etc/fstab의 내용을 읽어 모두 mount 한다.
 - ‐t  : 파일 시스템 양식을 정한다.
 - ‐o  : 마운트 옵션을 추가로 지정한다.
 - noatime : atime을 갱신하지 않는다. .
 - remount : 옵션을 변경을 위해 재마운트한다.
 - ro : Read Only로 정의한다.


EX)

#  mount  ‐t  ext3  /dev/sdb1    /data1
#  mount  ‐t  iso9660  /dev/cdrom  /cdrom
#  mount  ‐o  ro  /dev/sdb1   /home2
#  mount  ‐a

 

UMOUNT

 - mount된 파일시스템을 시스템으로 부터 제거한다.
 # umount [디렉토리명] 또는 [장치명]

 

EX)

[root@Linux1 ~]# df | grep sd
/dev/sda3       29881084 4380960  25500124  15% /
/dev/sda1         508580  165880    342700  33% /boot
[root@Linux1 ~]# mkdir /home2
[root@Linux1 ~]# mount /dev/sdb1 /home2
[root@Linux1 ~]# df | grep sd
/dev/sda3       29881084 4380980  25500104  15% /
/dev/sda1         508580  165880    342700  33% /boot
/dev/sdb1       10475520   32992  10442528   1% /home2
[root@Linux1 ~]# umount /home2
[root@Linux1 ~]# df | grep sd
/dev/sda3       29881084 4380980  25500104  15% /
/dev/sda1         508580  165880    342700  33% /boot

 

BLKID

 - 파티션의 정보 확인

# blkid ***********
 - UUID는 파티션의 고유 정보로 디스크의 위치가 바뀌어도 동일하게 유지된다.
 - UUID는 mount 명령에서 이용 가능하다.

 

EX)

/dev/sda1: UUID="eb7033c7-2f05-4258-8653-5fe0f3b41a57" TYPE="xfs"
/dev/sda2: UUID="0dc62f31-143e-411e-996c-6c6ae2433818" TYPE="swap"
/dev/sda3: UUID="4bebf12b-c696-4358-92e9-49a7cad2cb70" TYPE="xfs"
/dev/sdb1: UUID="dadc2046-fe02-4c8a-8523-fbdd2e4296d4" TYPE="xfs"
/dev/sdb5: UUID="88c64412-0427-4fdd-97d1-51466b2c9332" TYPE="xfs"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"

 

실습

[root@Linux1 ~]# mkfs.xfs -f /dev/sdb1

[root@Linux1 ~]# mkfs.xfs -f /dev/sdb5

[root@Linux1 ~]# mkdir /data1

[root@Linux1 ~]# mkdir /data2

[root@Linux1 ~]# cd /

[root@Linux1 /]# ls

[root@Linux1 /]# cd data1

[root@Linux1 data1]# ls

[root@Linux1 data1]# pwd

[root@Linux1 data1]# echo 1 > a.txt

[root@Linux1 data1]# cd ..

[root@Linux1 /]# umount /dev/sdb1 /data1

[root@Linux1 ~]# cd ~
[root@Linux1 ~]# mount /dev/sdb5 /data2
[root@Linux1 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          482052       0    482052   0% /dev
tmpfs             497836       0    497836   0% /dev/shm
tmpfs             497836    8368    489468   2% /run
tmpfs             497836       0    497836   0% /sys/fs/cgroup
/dev/sda3       29881084 4380528  25500556  15% /
/dev/sda1         508580  165880    342700  33% /boot
tmpfs              99568      12     99556   1% /run/user/42
tmpfs              99568       0     99568   0% /run/user/0
/dev/sdb5       10473472   32992  10440480   1% /data2
[root@Linux1 ~]# reboot
[root@Linux1 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          482052       0    482052   0% /dev
tmpfs             497836       0    497836   0% /dev/shm
tmpfs             497836    8368    489468   2% /run
tmpfs             497836       0    497836   0% /sys/fs/cgroup
/dev/sda3       29881084 4380528  25500556  15% /
/dev/sda1         508580  165880    342700  33% /boot
tmpfs              99568      12     99556   1% /run/user/42
tmpfs              99568       0     99568   0% /run/user/0
[root@Linux1 ~]# cd /
[root@Linux1 /]# ls
[root@Linux1 /]# mount /dev/sdb1 /data1

[root@Linux1 /]# mount /dev/sdb5/data2

[root@Linux1 /]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          482052       0    482052   0% /dev
tmpfs             497836       0    497836   0% /dev/shm
tmpfs             497836    8368    489468   2% /run
tmpfs             497836       0    497836   0% /sys/fs/cgroup
/dev/sda3       29881084 4380528  25500556  15% /
/dev/sda1         508580  165880    342700  33% /boot
tmpfs              99568      12     99556   1% /run/user/42
tmpfs              99568       0     99568   0% /run/user/0
/dev/sdb1       10475520   32992  10442528   1% /data1
/dev/sdb5       10473472   32992  10440480   1% /data2

[root@Linux1 /]# cd ~
[root@Linux1 ~]# blkid
ex)

/dev/sda1: UUID="eb7033c7-2f05-4258-8653-5fe0f3b41a57" TYPE="xfs"
/dev/sda2: UUID="0dc62f31-143e-411e-996c-6c6ae2433818" TYPE="swap"
/dev/sda3: UUID="4bebf12b-c696-4358-92e9-49a7cad2cb70" TYPE="xfs"
/dev/sdb1: UUID="dadc2046-fe02-4c8a-8523-fbdd2e4296d4" TYPE="xfs"
/dev/sdb5: UUID="88c64412-0427-4fdd-97d1-51466b2c9332" TYPE="xfs"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"

 

하드디스크 사용하는 과정 

fdisk : 하드드라이브 파티션 나누는 작업

 ↓

mkfs : 파일시스템 생성

 ↓

mount : 특정 디렉토리에 연결

 

xfs_admin

 - 파티션에 다양한 파라미터를 변경하거나 확인한다.
 - # xfs_admin ‐L  [라벨명]  [장치명]   
 - # xfs_admin ‐L  "‐‐" [장치명]
 - # xfs_admin ‐l(소문자) [장치명]

 

 - 리눅스 설치시에 생성되는 파티션의 경우 자동으로 마운트되는 디렉토리 이름을 라벨명으로 할당한다.

   사용자가 임의로  할당하는 경우 'abc', '123' 등과 같이 라벨명을 지정해도 되지만 보통 디폴트 명명 규칙에 따라

   마운트될 디렉토리 명으로 할당한다.

 

EX)

[root@linux1 ~]# xfs_admin ‐l /dev/sdb1
label = ""
[root@linux1 ~]# xfs_admin ‐L /home2 /dev/sdb1
writing all SBs
new label = "/home2"
[root@linux1 ~]# mount LABEL="/home2" /home2
[root@linux1 ~]# df | grep sdb
/dev/sdb1       10474496   32992  10441504   1% /home2
[root@linux1 ~]# umount LABEL="/home2"
[root@linux1 ~]# xfs_admin ‐L "‐‐" /dev/sdb1
writing all SBs
new label = ""
[root@linux1 ~]# xfs_admin ‐l /dev/sdb1
label = ""

 

findfs

 - UUID나 라벨명으로 장치명을 확인.
 - # findfs LABEL=[라벨명]
 - # findfs UUID=[uuid]

 

[root@linux1 ~]# xfs_admin ‐L /home2 /dev/sdb1
writing all SBs
new label = "/home2"
[root@linux1 ~]# blkid | grep sdb1
/dev/sdb1: LABEL="/home2" UUID="45112a26‐0d6c‐46a0‐ac8a‐790e7696cb8a" TYPE="xfs"
[root@linux1 ~]# findfs UUID="45112a26‐0d6c‐46a0‐ac8a‐790e7696cb8a"
/dev/sdb1
[root@linux1 ~]# findfs LABEL="/home2"
/dev/sdb1

 

xfs와 ext4

 

자동 마운트 ‐ /etc/fstab

/etc/fstab 파일은 시스템 시작 시 자동으로 mount할 파일 시스템의 목록이나 옵션을 저장한다.
장치,  마운트위치,  파일 시스템 타입,  옵션,  dump,  점검여부

# mount –a  :  fstab의 모든 목록을 mount한다.

 

EX)

[root@Linux1 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Wed Oct  5 16:23:36 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=4bebf12b-c696-4358-92e9-49a7cad2cb70 /                       xfs     defaul                 ts        0 0
UUID=eb7033c7-2f05-4258-8653-5fe0f3b41a57 /boot                   xfs     defaul                 ts        0 0
UUID=0dc62f31-143e-411e-996c-6c6ae2433818 swap                    swap    defaul                 ts        0 0

 

오타가나면 문제가 생길수있다.그래서 rc.local에 저장해서 리눅스가 켜질때마다 자동으로 실행하게 한다. 

저렇게하면 만약 오타가나도 문제가 안생긴다.

 

# cat /etc/fstab
......
......
/dev/sdb1         /data1             ext3         defaults,noatime 1  3
/dev/sdb2         /data2             ext3         defaults,noatime 1  4
/dev/sdc1         /d1                ext3         defaults           1  5
/dev/sdc5         /d2                ext3         defaults           1  6
/dev/sdc6         /d3                ext3         defaults           1  7
/dev/sdc7         /d4                ext3         defaults           1  8
/dev/sdc8         /d5                ext3         defaults           1  9

 

실습) sdb1, sdb5를  자동으로 마운트되게 설정

cd /dev

mkdir /data1

mkdir /data2

cd .. -> cd ~

blkid -> UUID확인

 

첫번째 방법

vi /etc/fstab 

UUID=dadc2046-fe02-4c8a-8523-fbdd2e4296d4     /data1          xfs     defaul                 ts        0 0

UUID="88c64412-0427-4fdd-97d1-51466b2c9332   /data2          xfs     defaul                 ts        0 0

입력후 reboot -> df 입력 -> 마운트됐는지 확인

 

두번째 방법

vi /etc/rc.d/rc.local

mount UUID="dadc2046-fe02-4c8a-8523-fbdd2e4296d4" /data1
mount UUID="88c64412-0427-4fdd-97d1-51466b2c9332" /data2
입력후 reboot -> df 입력 -> 마운트됐는지 확인

'리눅스' 카테고리의 다른 글

PING, NETSTAT, ARP, HOST, LOOKUP, DIG, IP ALIASES  (0) 2022.10.20
네트워크  (0) 2022.10.20
파일 구조 및 퍼미션  (0) 2022.10.19
사용자 관리  (0) 2022.10.19
리눅스 기초명령어 3(tar, gzip, bzip, clock, date, rdate)  (0) 2022.10.19