Linux磁盤和文件系統管理

    Linux系統中的磁盤和文件系統管理,之所以將二者放在一起總結,是因爲在平時的工作中,二者是相輔相成的,常常用來一起使用。


首先介紹下磁盤分區的管理工具

常用的磁盤分區管理工具有fdisk,parted,sfdisk

這裏我們介紹下常用的fdsik工具

fdisk -l [DEVICE]... :列出指定磁盤設備上的分區情況

fdisk [DEVICE]:創建分區

fdisk提供了一個交互式接口來管理分區,它有許多子命令,分別用於不同的管理功能;所有的操作均在內存中完成,沒有直接同步到磁盤;直到使用w命令保存至磁盤上;

常用命令:

n:創建新分區

d:刪除已有分區

t:修改分區類型

l:查看所有已有ID

w:保存並退出

q:不保存退出

m:查看幫助信息

p:顯示現有分區信息

注意:在已經分區並且已經掛載其中某個分區的磁盤設備上創建的新分區,內核可能在創建完成後無法直接識別;

這時我們查看內核是否已經識別新的分區:cat /proc/partitions

對於已有分區處於使用狀態的磁盤來講,新建分區後需要讓內核重讀其分區表:

通知內核強制重讀磁盤分區表:

centos5:partprobe[device]

centos6,7:partx,kpartx

partx -a [device]

kpartx -af [device]

這裏給大家補充下刪除磁盤分區後的同步方法:

centos5,7:partprobe[device]

centos6:partx -d --nr #(分區號) [DEVICE]

有時我們添加新的物理磁盤時,通常情況下我們需要重啓系統才能讓系統檢查新加入的磁盤,這裏給大家介紹一種小技巧,可是在不重啓的情況下檢查新加入的硬盤

echo "- - -" > /sys/class/scsi_host/host2/scan 


介紹完磁盤管理工具,下面來說說Linux文件系統管理

首先來說下Linux文件系統的分類

VFS:Virtual File System

Linux的文件系統:ext2,ext3,ext4,xfs,reiserfs,btrfs

光盤:iso9660

網絡文件系統:nfs,cifs

集羣文件系統:gfs2,ocfs2

內核級分佈式文件系統:ceph

Windows文件系統:vfat,ntfs

僞文件系統:proc,sysfs,tmpfs,hugepagefs

unix的文件系統:UFS,FFS,JFS

交換文件系統:swap

用戶空間的分佈式文件系統:mogilefs,moosefs,glusterfs

根據是否支持日誌功能還可分爲:

日誌型文件系統:ext3,ext4,xfs

非日誌型文件系統:ext2,vfat


在介紹如何創建文件系統之前,先爲大家介紹下文件系統的管理工具

創建文件系統工具:mkfs

mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs..

檢測及修復文件系統的工具:fsck

fsck.ext2,fsck.ext3,...

查看其屬性的工具:dumpe2fs,tune2fs

調整文件系統特性:tune2fs


下面我們們來詳細介紹下以上提到的文件系統的管理工具

mkfs命令:make file system

-t FSTYPE [DEVICE]

mkfs -t FSTYPE=mkfs.FSTYPE

mkfs -t ext4=mkfs.ext4

-L'LABEL':設定卷標

ext系列文件系統專用管理工具:mke2fs

mke2fs[OPTIONS] device

-t {ext2|ext3|ext4}:指明要創建的文件系統類型

mkfs.ext4=mkfs -t ext4=mke2fs -t ext4

-b {1024|2048|4096}:指明文件系統的塊大小;

-L LABEL:指明卷標;

-j:創建有日誌功能的文件系統ext3;

mke2fs -j =mke2fs -t ext3 =mkfs -t ext3 =mkfs.ext3

-i#:bytes-per-inode,指明inode與字節的比率;既每多少字節創建一個inode;

-N#:直接指明要給此文件系統創建的inode的數量;

-m#:指定預留的空間,百分比;

-O[^]FEATURE:以指定的特性創建目標文件系統;加^表示關閉此特性;


e2label命令:卷標的查看與設定

查看:e2label device

設定:e2label device LABEL

tune2fs命令:查看或修改ext系列文件系統的某些屬性

adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems

注意:塊大小創建後無法改變

tune2fs [OPTIONS] device

-l:查看超級塊兒內容;

修改指定文件系統的屬性:

-j:ext2-->ext3;

-L LABEL:修改卷標;

-m #:調整預留空間百分比

-O [^]FEATURE:開啓或關閉某種特性

-o [^] mount_options:開啓或關閉某種默認掛載選項;

acl:啓用acl

^acl:關閉acl


dumpe2fs命令:顯示ext系列文件系統的屬性信息

dumpe2fs [-h] device


fsck:用於實現文件系統檢測的工具

因進程意外終止或系統崩潰等原因導致操作系統非正常終止時,可能會造成文件損壞;此時,應檢測並修復文件系統;建議:離線進行;

ext系列文件系統的專用工具:e2fsck

e2fsck [OPTIONS] device

-y:對所有文件自動回答爲yes;

-f:即使文件系統處於clean狀態,也要強制進行檢測;

fsck:check and repair a linux file system

-t fstype:指明文件系統類型;

fsck -t ext4=fsck.ext4

-a:無須交互而自動修復所有錯誤;

-r:交互式修復


blkid命令:

blkid device

blkid -L LABEL:根據LABEL定位設備

blkid -U UUID:根據UUID定位設備


文件系統的掛載

此前我們創建的磁盤分區,在格式化完成之後要想被使用,就必須先掛載,

根文件系統之外的其它文件系統要想被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此關聯操作即爲"掛載";此目錄即爲“掛載點”;

Linux系統上的固定掛載點爲:/mnt,/media

掛載點:mount_point,用於作爲另一個文件系統的訪問入口;

1.事先存在;

2.應該使用未被或不會被其它進程使用到的目錄;

3.掛載點下原有的文件將會被隱藏;

mount命令:

mount [-nrw] [-t vfstype] [-o options] device dir

命令選項:

-r:readonly,只讀掛載;

-w:read and write,讀寫掛載;

-n:默認情況下,設備掛載或卸載的操作會同步更新至/etc/mtab文件中;-n用於禁止此特性;

-t vfstype:指明要掛載的設備上的文件系統的類型;多數情況下可省略,此時mount會通過blkid來判斷要掛載的文件系統類型;

-L LABEL:掛載時以卷標的方式指明設備

mount -L LABEL dir

-U UUID:掛載時以UUID的方式指明設備;

mount -U UUID dir

-o options:掛載選項

sync/async:同步/異步操作;

atime/noatime:文件或目錄在被訪問時是否更新其訪問時間戳;

diratime/nodiratime:目錄在被訪問時是否更新其訪問時間戳;

remount:重新掛載;

acl:支持使用facl功能;

# mount -o acl device dir

# tune2fs -o acl device

ro:只讀

rw:讀寫

dev/nodev:此設備上是否允許創建設備文件;

exec/noexec:是否允許運行此設備上的程序文件;

auto/noauto:

user/nouser:是否允許普通用戶掛載此文件系統;

suid/nosuid:是否允許程序文件上的suid和sgid特殊權限生效;

defaults:Use  default  options:  rw,  suid,  dev, exec, auto, nouser, async, and relatime.

一個使用技巧:

可以實現將目錄綁定至另一個目錄上,作爲其臨時訪問入口;

mount --bind 源目錄 目標目錄

查看當前系統所有已經掛載的設備;

# mount

# cat /etc/mtab

# cat /proc/mounts

掛載光盤:

mount -r /dev/cdrom mount_point

光盤設備文件:/dev/cdrom,/dev/dvd

掛載U盤:

事先識別U盤的設備文件:

掛載本地的迴環設備:

#mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT

umount命令:

umount device | dir

注意:正在被訪問到的掛載點無法被卸載;

查看被哪個或哪些進程所佔用;

#lsof MOUNT_POINT

#fuser -v MOUNT_POINT

終止所有正在訪問某掛載點的進程:

#fuser -km MOUNT_POINT



掛載交換分區

交換分區的啓用和禁用:

創建交換分區的命令:mkswap

啓用:swapon

swapon[OPTION][DEVICE]

-a :定義在/etc/fstab文件中的所有swap設備

禁用:swapoff

swapoff DEVICE

設定除根文件系統以外的其它文件系統能夠開機時自動掛載:/etc/fstab文件

每行定義一個要掛載的文件系統及相關屬性;

6個字段:

1.要掛載的設備;

設備文件;

LABEL

UUID

僞文件系統:如sysfs,proc,tmpfs等

2.掛載點

swap類型的設備的掛載點爲swap;

3.文件系統類型;

4.掛載選項:

defaults:使用默認掛載選項;

如果要同時指明多個掛載選項,彼此之間使用逗號隔開;

5.轉儲頻率:

0:從不備份;

1:每天備份;

2:每隔一天備份

6.自檢次序

0:不自檢

1:首先自檢,通常只能是根文件系統可用1;

2:次級自檢:

...

mount -a:可自動掛載定義在此文件中的所有支持自動掛載的設備;

兩個命令:df和du

df命令:

df[OPTION]...[FILE]...

-l:僅顯示本地文件的相關信息;

-h:human-readable

-i:顯示inode的使用狀態而非blocks

du命令:

du [OPTION]...[FILE]...

-s:sumary 顯示目錄時顯示所有文件大小之和

-h:human-readable


文件系統的卸載

卸載:掛載點沒有被進程訪問時方可被卸載;

卸載命令:umonut DEVICE 或者 unmont MOUNT_POINT

在卸載之前最好是查看下哪些進程正在訪問掛載的設備,可使用:

fuser -v 掛載點

如果有程序正在使用該設備,並且想終止正在此掛載點的進程,則可使用:

fuser -km 掛載點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章