linux class(new) 2 페이지

본문 바로가기
사이트 내 전체검색


회원로그인

linux class(new)

파일시스템 mount / umount

페이지 정보

작성자 admin 작성일16-02-05 22:07 조회2,506회 댓글2건

본문

리눅스나 유닉스에서는 파일시스템을 사용하기 위해서 마운트라는 개념을 사용한다.
- mswindows 의 C: 나 D: 같은 드라이버 문자를 통해서 장치파일에 접근할 수는 없다.
파일시스템의 마운트 정보는 df(disk free)명령 및 mount 명령어로 확인할 수 있다.

/root# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 15528880 7121660 7618384 49% /
tmpfs 506176 0 506176 0% /dev/shm
/dev/sda5 2014800 36604 1875848 2% /data
/dev/sda2 1032088 47528 932132 5% /home
/dev/sdb1 507732 10510 471009 3% /home2
/root#



/root# df -h(--human) ; h 를 사용하면 좀 더 보기 쉽게 출력할 수 있다.
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 6.8G 7.3G 49% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda5 2.0G 36M 1.8G 2% /data
/dev/sda2 1008M 47M 911M 5% /home
/dev/sdb1 496M 11M 460M 3% /home2
/root#


mount 명령어 기본 사용법
mount -t 파일시스템타입 -o 옵션 device 마운트포인터 ; 기본 형식
mount device 마운트포인터 ; 리눅스 타입인 경우 타입옵션 생략가능,옵션없이 마운트 하면
디폴트 옵션으로 마운트 된다.
mount ; 옵션과 인수를 모두 생략하면 현재 마운트 되어 있는 정보를 자세히 출력한다.

ex) mount -t ext4 -o ro,nosuid /dev/sdc1 /mnt/data1 (읽기전용, setuid/setgid 적용 안함)
mount /dev/sdc2 /mnt/data2 (default 옵션 적용)
mount /dev/sdc3 /mnt/data3 -o noexec (파일실행금지)

파일시스템의 종류.

minix : 과거에 리눅스가 minix 머신에서 돌아갈 때, 리눅스가 사용한 파일시스템. 현재는 사용안됨.
xiafs,extfs : 과거의 리눅스 파일시스템. 지금은 사용하지 않는다.
ext2fs : 리눅스 파일시스템. 현재는 많이 사용하지는 않는다.
ext3fs : 리눅스 파일시스템. ext2 파일시스템에 이어서 나온 파일시스템, 요즘은 ext2fs 대신 이 파일시스템이 많이 사용된다.
ext4fs : 리눅스 파일시스템. centos 인 경우 6.x 버전부터 지원한다.
xfs : 대용량 파일시스템 100테라바이트 이상을 지원한다.
jfs : 저널링 파일시스템
reiserfs : suse 리눅스가 개발한 저널링 파일시스템
vfat : fat16, fat32를 리눅스에서 지원하기 위해서 개발된 가상의 파일시스템.
ntfs : windows nt 파일시스템
- centos 에서 ntfs 를 지원하기 위해서는 아래의 ntfs 관련 패키지를 설치해야한다.
(rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum --enablerepo=rpmforge install fuse fuse-ntfs-3g dkms dkms-fuse)
iso9660 : 시디롬 파일 시스템
nfs : network file system. 이 파일 시스템을 사용하기 위해서는 nfs 서버가 구성되어 있어야 한다.

ext2 와 ext3 파일시스템 비교
ext2 의 단점
- 시스템이 다운(또는 비정상종료) 되었을 경우 파일시스템이 손상될 가능성이 많다.
- fsck 로 점검 및 복구를 하더라도 시간이 오래걸린다.

ext3
- 시스템이 다운 되더라도 ext2 타입에 비해서 빠르고 안정적인 복구기능을 지원한다.
(디스크에 데이터를 기록하기전에 저널영역에 로그를 먼저 기록한다. 그래서 디스크에
데이터를 쓰기전에 시스템이 다운되더라고 저널영역의 로그를 이용해서 파일시스템을
일일 체크하지 않고도 복구 할수 있다.
*. 저널링 파일 시스템의 종류에는 ext3, ext4, reiserfs, XFS등이 있다.

xfs
- 이론상 900만 테라바이트 까지 지원한다.
- 사용가능한 inode 갯수가 ext3 이나 ext4 에 비해서 더 많다.
- 파일시스템 생성 속도가 매우 빠르다.
- 마운트 된 상태에서도 파일시스템 확장이 가능하다.
* xfs 지원을 위한 패키지가 설치되어 있어야 한다. (xfsprogs, xfsdump)

블록장치가 더 이상 필요하지 않으면 마운트 해제(umount) 할 수 있다.
unmount 한 장치는 다시 마운트 할때까지 사용할 수 없다.
만약 시디롬을 사용하고 시디를 꺼내려면(eject) 반드시 시디롬 장치파일을
마운트 해제 하여야 한다.

umount - 마운트 해제
umount 마운트포인터 또는 디바이스파일명.

/home2# umount /home2
umount: /home2: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
/home2#

마운트 되어 있는 장치가 사용중이면 마운트가 해제 되지 않는다.
마운트포인터에 들어와 있으면 장치를 사용중인것이 되므로 해제 되지 않는다.

/home2# cd ..
/# umount /home2
umount: /home2: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))

그래도 사용중이면 다른 사용자나 다른 프로세스가 사용중임을 의미한다.
이런경우에는 fuser 명령어로 사용중인 프로세스를 찾을 수 있다.

/# fuser /home2
/home2: 2603c
/# ps -ef | grep 2603 | grep -v grep
user1 2603 2602 0 21:35 pts/1 00:00:00 -bash
/# fuser -k /home2
/home2: 2603c
/#

*. 마운터포인터를 사용중인 프로세스가 한개라도 있으면 마운터는 해제되지
않는다.
ex) fuser /home2
[root /]# fuser /home2
/home2: 4571c <--- PID 4571 프로세스가 사용중.
- 하지만 이런경우에는 /home2 의 하위디렉토리를 사용중인 프로세스는
출력되지 않는다. 만약 어떤 사용자가 /home2 아래의 어떤 디렉토리안에
있으면 프로세스가 출력되지 않으므로
fuser /home2/* <--- 이렇게 와일드카드(*)문자를 사용하면 된다.
*. 마운트 포인터를 사용중인 프로세스를 fuser 명령어로 모두 제거할수 있다.

fuser -k /nehome <--- k(kill) 옵션을 사용하면 /newhome 을 사용중인 프로세스를 강제종료.
fuser -k /newhome/* <--- 하위디렉토리를 사용중인 프로세스를 강제 종료.

*. 마운트 설정 파일 - /etc/fstab
아래는 centos 5.9 에서 파티션 자동설정으로 설치한경우의 fstab 파일내용
--------------------------------------------------------------------------------------
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
--------------------------------------------------------------------------------------


아래는 fstab 의 다른 예이다.
[root /]# cat /etc/fstab
-------------------------------------------------------------------------------------------------
UUID=8bd23abd-ca18-4609-a374-c407bf0b84b2 / ext3 defaults 1 1
/dev/sdb1 /home ext3 nosuid defaults 1 2
LABEL=/data /data ext3 ro,nosuid defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
UUID=30aa3f23-7e43-4599-9e1a-a2700c26b77e swap swap defaults 0 0
-------------------------------------------------------------------------------------------------

/etc# 아래는 CentOS 6.5 버전인 경우
-------------------------------------------------------------------------------------------------
#
# /etc/fstab
# Created by anaconda on Wed Apr 9 02:58:07 2014
#
# 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=55c7f442-1c10-48e8-9029-bd60e23ca0ff / ext4 defaults 1 1
UUID=f2783d44-870c-4f9b-bfd4-f521f24c028f /data ext4 defaults 1 2
UUID=a4524fd5-4b45-4690-ab7b-cf71d63c8352 /home ext4 defaults 1 2
UUID=7b37b84c-39ec-46ce-a6b7-ab204a2b7b49 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
-------------------------------------------------------------------------------------------------
첫번째 항목 : 장치이름이나 LABEL 또는 UUID 값이 올수 있다.
두번째 항목 : 마운트 포인터
세번째 항목: 파일시스템 타입
네번째 항목: 마운트 옵션
다섯번째 항목: 0 또는1 - 백업가능성 유무로서 0(백업x) , 1(백업o)
여섯번째 항목: 0 또는 1이나 2 - 부팅시 파일시스템 자동체크 여부
--> 0 은 파일시스템 체크 안함
---> 1 또는 2는 파일시스템 체크함( / 파티션인경우는 1 로한다. 그외는 2로 설정)

첫번째 항목중
UUID (Universal Unique IDentifier) 는 네트워크 상에 있는 개체 식별자라는 의미로
디스크 장치도 서버상에서 하나의 개체 식별자로서 구분하겠다는 의미.
UUID 값은 파일시스템 생성시 자동으로 할당되며 수정할 수도 있다.
UUID 값 수정 및 확인은 tune2fs 명령어 또는 dumpe2fs 로 할수 있다.


[root /]# tune2fs -l /dev/sda3 | grep UUID
Filesystem UUID: 69a544e6-4c4a-4a6f-a16a-0b3e6cb99d10


*. UUID 값을 변경하려면 아래와 같이 하면 된다.

[root /root]# tune2fs -l /dev/sdb1 | grep -i uuid
Filesystem UUID: bddeadaa-f9db-489d-b919-2700c4807fc6
[root /root]# dumpe2fs /dev/sdb1 | grep -i uuid
dumpe2fs 1.39 (29-May-2006)
Filesystem UUID: bddeadaa-f9db-489d-b919-2700c4807fc6

*. UUID 값을 아래처럼 임의의 값으로 변경할 수 있다.

[root /]# tune2fs -U random /dev/sdb5
tune2fs 1.40.8 (13-Mar-2008)
[root /]# tune2fs -l /dev/sdb5 | grep UUID
Filesystem UUID: f75ca609-97c1-4802-b8fe-164d376aed8d <= 변경됨.
[root /]#

*. UUID 값을 제거하는것은 위에 random 대신에 clear 를 적어주면 된다.
그리고 random 대신에 time 을 적어주더라도 마찬가지로 무작위로 UUID 값을
할당하게 됩니다. 그러나 file system 생성시 UUID 값이 할당되므로 특별한
경우가 아니면 직접 생성할 필요가 없다.

*. 첫번째 항목에 장치명이나 UUID 값 대신에 label 이름을 사용할 수 있다.
[root /]# e2label ; label 을 출력하거나 설정하는 명령어
Usage: e2label device [newlabel] <= label 을 설정하거나 수정할때.
[root /]# e2label /dev/sda1 <= 장치의 label을 확인할때.
/ <-- label 이름이 / 로 설정되어 있음.
[root /]# e2label /dev/sda3
/home <== /dev/sda3 의 label 이름은 /home 으로 설정되어 있다.
[root /]#

*.첫번째 항목에 장치명을 사용할 수도 있으며 이것은 가장 전통적인 방식.

** 마운트할때 디폴트로 적용되는 옵션과 fstab 에 설정되어 있는 defaults 항목은
메뉴얼 페이지를 보면 아래의 옵션이 적용된다고 되어 있다.
defaults
Use default options: rw, suid, dev, exec, auto, nouser, and async.

옵션설명 -
rw : 읽기,쓰기
ro : 읽기전용
suid : setuid 퍼미션 허용
nosuid:setuid 퍼미션 허용하지 않음
exec : 실행파일 실행권한 허용
noexec: 실행파일 실행권한 허용하지 않음
user:일반유저에게 마운트권한 허용
nouser : 일반사용자에게는 마운트 권한 허용하지 않음
auto : mount -a 명령어로 마운트할 경우 자동마운트 허용

*. 나머지 옵션에 대해서는 fstab file및 mount 명령의 메뉴얼 페이지를
참고 바랍니다.
-----------------------------------------------------------------------
*** 마운트 설정 예제 ***
/var/log 디렉토리의 모든 파일을 다른 파티션으로 옮겨서
로그파일을 옮긴 파티션에서 계속 관리를 하도록 하시오.


solve)
옮기는 디스크 파티션을 /dev/sdc1 으로 가정한다.
fdisk   /dev/sdc 로 주 파티션을 전체크기로 하나로 만든다.
그다음 mkfs   -t   ext4   /dev/sdc1
mount   /dev/sdc1   /mnt/d3p1
cp   -rp   /var/log/*   /mnt/d3p1
그다음 rm   -rf   /var/log/*
그리고 /etc/fstab 파일을 편집기로 열어서 맨 아래에
LABEL=/var/log   /var/log   ext4   defaults   1   2
추가한다.
그리고 e2label   /dev/sdc1   /var/log 로 라벨명을 설정한다.
그다음 확인은
umount   -a ; mount   -a 한다음
df 명령어로 확인하였을때
/dev/sdc1   198M   7.4M   180M   4%   /var/log

장치명과 마운터포인터가 제대로 표시되면 성공.

----------------------------------------------------------------------------


---------------------------------------------------------------------------------
예제 3. centos의 모든 email 계정을 (/mailhome/*)   /dev/sdf1 으로 옮기기
(/dev/sdf1 은 전체크기로 주파티션을 하나만 설정.)
fdisk /dev/sdf1 ; 주파티션을 전체크기로 하나만 설정
그리고 파일시스템 생성 -> mkfs.ext4 /dev/sdf1
임시 마운터포인 생성 -> mkdir /mnt/newdisk
mount /dev/sdf1 /mnt/newdisk
df 명령어로 마운트가 제대로 되었는지 확인후
cp -rp /mailhome/* /mnt/newdisk
복사후 확인 --> ls /mnt/newdisk
복사 제대로 되었으면 원래데이터는 필요없으므로 삭제 -> rm -rf /mailhome/*
마지막으로 마운트 포인터를 원래대로 설정
umount /dev/sdf1
mount /dev/sdf1 /mailhome

-------- 계정 옮기는 작업이 긑났으면
아래의 명령으로 확인
su - muser1 <-- 에러나 경고없이 user1 계정으로 변경되면 성공)

댓글목록

mycolor님의 댓글

mycolor 작성일

swap 확장
---------
- 가상메모리 영역

/dev/sdb 에서 2기가를 swap 영역에 할당하고자 한다.

1. 파티션을 설정하고 파티션 타입을 swap 타입으로 설정한다.



[root@system1 etc]# 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 0x7071a423.

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 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: 0x7071a423

  Device Boot      Start        End      Blocks  Id  System

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): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +2G
Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 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: 0x7071a423

  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1            2048    4196351    2097152  83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 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: 0x7071a423

  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1            2048    4196351    2097152  82  Linux swap / Solaris

Command (m for help):

-----------------------------------------

2. /dev/sdb1 을 swap 영역으로 지정한다.

[root@system1 etc]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=6a6bad7c-97a8-4faa-acce-d8c0d9b01a70
[root@system1 etc]#

3. swap 영역을 활성화

[root@system1 etc]# swapon /dev/sdb1

4. 확인

[root@system1 etc]# free
            total      used      free    shared    buffers    cached
Mem:      1878212    626840    1251372      9176        884    227168
-/+ buffers/cache:    398788    1479424
Swap:      4210680          0    4210680


[root@system1 etc]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-0                              partition      2113532 0      -1
/dev/sdb1                              partition      2097148 0      -2
[root@system1 etc]#

*. 가상메모리가 두개 이상있을때에는 priority 값이 작을수록 먼저 참조된다.
만약 priority 숫자가 같으면 round-robin 방식으로 참조된다.


5. 리부팅하더라도 영구적으로 계속 사용하고 싶으면 fstab 파일에 등록

[root@system1 etc]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Aug 27 01:12:07 2017
#
# 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
#
/dev/mapper/centos-root /                      xfs    defaults        1 1
UUID=d421a98d-f5a6-4ef6-8308-9513b9d10277 /boot                  xfs    defaults        1 2
/dev/mapper/centos-swap swap                    swap    defaults        0 0
UUID=6a6bad7c-97a8-4faa-acce-d8c0d9b01a70  swap  swap  defaults  0  0
[root@system1 etc]#

*. prioriy 값을 옵션으로 설정할 경우에는
옵션 자리에 defaults,pri=1 이런식으로 적을수 있다.(옵션으로 지정할경우 양의정수만 사용가능)

fstab 파일에 설정된 swap 영역을 바로 적용되게 하려면
swapon -a

* swap 영역을 비활성화 하려면 swapoff /dev/sdb1

[root@system1 ~]# swapoff -v /dev/sdb1
swapoff /dev/sdb1
[root@system1 ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-0                              partition      2113532 0      -1
[root@system1 ~]#

mycolor님의 댓글

mycolor 작성일

manuan page를 다른 디스크로 옮겨서 서비스하기
fdisk /dev/sdd
mkfs.ext4  /dev/sdd1
mkdir /mnt/d4p1
mount /dev/sdd1  /mnt/d4p1
df -h /dev/sdd1
cp -rp /usr/share/man/*  /mnt/d4p1
rm -rf /usr/share/man/*
man mkdir ; man page가 보이지 않음.
(도움말은 기본적으로 /usr/share/man 디렉토리에서
찾는다.)
umount /dev/sdd1
mount /dev/sdd1  /usr/share/man
man ls  ; /usr/share/man 에 도움말이 있으므로
도움말이 출력됨.
리부팅했을때도 영구적으로 사용할수 있도록 하는게
편리하므로 /etc/fstab에 등록
blkid /dev/sdd1 <-- 출력된 UUID 값을 복사해서
/etc/fstab 파일에 아래처럼 붙여넣으면 됨.
UUID=35be8dac-413f-4dab-9d22-1a2b28c60629 /usr/share/man  ext4        defaults 1 2
umount /dev/sdd1  ;  ls --> 도움말 출력 안됨.
mount -a  ; man ls --> 도움말 출력됨


접속자집계

오늘
74
어제
75
최대
611
전체
448,124
개인정보취급방침 서비스이용약관 twoseven.kr All rights reserved.
상단으로