天天看點

Centos磁盤管理和檔案系統管理

Linux磁盤及檔案系統管理

檔案接口:open(), read(), write(), close()

裝置類别:

塊(block):随機通路,資料交換機關為“塊”

字元(character):線性,資料交換機關為字元

裝置檔案:FHS(LSB)

/dev/: 裝置

裝置檔案,關聯至裝置的驅動程式

裝置号:

major:主裝置号,差別裝置類别,用于标明所需驅動程式

minor:次裝置号,

磁盤裝置檔案:

IDE接口(ATA):并行, 133MB/s

兩個IDE控制器:每個控制器可通過線纜接入兩塊磁盤,一主一從;

/dev/hd[a-z][#]

/dev/hda, /dev/hdb,

/dev/hdc, /dev/hdd

SCSI接口: 并行,Small Computer System Interface

UltraSCSI 320, 320MB/s

SATA接口:串行,Serial ATA,

    6Gpbs

USB接口:串行,480MB/s

SAS接口:串行

裝置檔案:/dev/sd[a-z][#]

[a-z]:标記裝置

[#]:磁盤分區

track: 磁道

sector: 扇區

cylinder: 柱面

尋道時間:平均尋道時間

MBR:0磁道0扇區,主引導扇區(master boot record)

三部分:

446bytes: bootloader,程式

64bytes: 分區表

16bytes:标記一個分區

4個主分區:3主,1擴充-->n邏輯分區

2bytes: 55AA, 目前MBR資訊是否有效的标記;

分區辨別方式:

主分區或擴充分區:1-4

邏輯分區:5+

fdisk指令:

1、檢視已經識别的磁盤裝置:

# fdisk -l /dev/[hs]d[a-z]

2、管理分區

# fdisk DEVICE

fdisk提供了一個互動式接口來管理分區,它有許多子指令,分别用于不同的管理功能;所有的操作均在記憶體中完成,沒有直接同步到磁盤;

常用指令:

p: 顯示現有分區表;

    n: 建立新分區

d: 删除現有分區

t: 修改分區ID

l: 檢視支援哪些分區ID

w: 儲存退出

q: 不儲存退出

m: 顯示幫助資訊

示例:/dev/sdb

3主+1擴充(3個邏輯)

2主+1擴充(4個邏輯)

檢視核心是否已經識别建立分區:

# cat /proc/partitions

通知核心強制重讀分區表:

CentOS 5: partprobe /dev/DEVICE

CentOS 6: partx, kpartx

partx -a /dev/DEVICE

kpartx -af /dev/DEVICE

注意:成功讀取分區,可能需要指令重複執行2次或以上;

建立檔案系統:

檔案系統:

中繼資料:每個索引項稱一個inode, (index node)

/var/logs/messages 

根的inode --> 根目錄對應的磁盤塊 --> var對應的inode編号 --> 查inode table, 找到編号對應的inode --> var目錄的磁盤塊 --> logs 的inode編号 --> 查inode table, 找到logs目錄的inode --> logs目錄的磁盤塊 --> 找到messages檔案名對應的inode編号 -->查inode表,找到messages的inode編号對應的inode --> messages的磁盤塊

連結檔案:通路同一個檔案資料不同路徑

硬連結:兩個檔案路徑指向了同一個inode;

建立方法:

# cp -l SRC DEST

# ln SRC DEST

特性:

(1) 目錄不支援硬連結;

(2) 硬連結不能跨檔案系統;

(3) 硬連結檔案與原檔案是指向同一個inode,建立硬連結檔案會增加inode的引用計數;

符号連結:連結檔案是一個完全獨立的新檔案,但其指向了原檔案的檔案路徑;

(1) 符号連結檔案與原檔案是兩個各自獨立檔案;

(2) 目錄可以建立符号連結;

(3) 可以跨檔案系統;

(4) 删除連結不影響原檔案;但删除原檔案,符号連結指向的檔案路徑将不複存在,是以,此時連結檔案将變成失效的連結;

其大小并非真正原檔案大小,而是指向的原檔案的檔案路徑字元串所包含的位元組數;

ln -s SRC DEST

bitmap索引

block group: 

bitmap: inode, block

VFS: Virtual File System

Linux檔案系統:ext2, ext3, ext4, reiserfs, xfs, btrfs

光驅:iso9660

網絡檔案系統:nfs, cifs

叢集檔案系統:gfs2, ocfs2

分布式檔案系統:ceph

windows檔案系統:ntfs, vfat

僞檔案系統: tmpfs, hugepagefs, proc, sysfs

Unix的檔案系統:FFS, UFS, JFS

交換檔案系統:swap

檔案系統管理工具:

建立檔案系統

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

檢測檔案系統

fsck.ext2, fsck.ext3, fsck.ext4, fsck.xfs .

檢視其屬性

dumpe2fs, tune2fs

mkfs.FSTYPE /dev/DEVICE

blkid /dev/DEVICE

mkfs -t FSTYPE /dev/DEVICE

ext系列:

Linux檔案系統管理:

VFS:

日志檔案系統:加速檔案檢測并修複的過程

ext3, ext4, xfs

非日志型檔案系統:ext2

非一緻性:

ext系列檔案系統:mke2fs

mke2fs [OPTION]... /dev/DEVICE

-t {ext2|ext3|ext4}:指明要建立的檔案系統類型

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

-b {1024|2048|4096}:其上限由page frame決定

-L LABEL:指定要使用的卷标

-j: 相當于使用-t ext3

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

-i #: 指明inode與位元組的比率;即,每多少位元組給建立一個inode;

-N #: 直接指明給此檔案系統建立多少個inode

-m #:指定預留白間的百分比;預設為5;

-O [^]FEATURE

UUID: 全局惟一辨別符

e2label: 

檢視:e2label /dev/DEVICE

設定卷标:e2label /dev/DEVICE LABEL

tune2fs:檢視或修改ext系列檔案系統的某些屬性

檢視超級塊中的資料資訊:

tune2fs -l /dev/DEVICE

修改指定檔案系統的屬性:

-j: ext2 --> ext3

-L LABEL: 修改卷标;

-m #: 調整預留白間的百分比;

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

-o [^]mount_options: 開啟或關閉某種預設挂載選項

-o acl

-o ^acl

dumpe2fs指令:顯示ext系列檔案系統屬性資訊

dumpe2fs [-h] /dev/DEVICE

檔案系統檢測:

因程序意外中止或系統崩潰等原因導緻寫入操作非正常終止時,可能會導緻檔案損壞;此時,應該修改修複檔案系統;

注意:應該離線進行;

fsck:

-t FSTYPE

fsck -t FSTYPE = fsck.FSTYPE

-a:自動修複所有錯誤

-r: 互動式修複錯誤

ext系列檔案系統的專用工具:

e2fsck

-y: 對所有問題自動回複為yes; 

-f: 即使檔案系統處于clean狀态,也要強制進行檢測;

Windows無法識别Linux上專用的檔案系統,是以,有儲存設備需要兩種系統之間交叉使用時,應該使用windows支援的檔案系統:

# mkfs -t vfat /dev/DEVICE

swap檔案系統:

Linux上交換空間必須使用獨立的磁盤分區;

fdisk /dev/DEVICE

t指令調整其ID為82; 

建立交換分區檔案系統:mkswap指令

mkswap [-L LABEL] /dev/DEVICE

注意:在Linux系統上,所有的檔案系統必須通過根檔案系統的某個分支來通路;

根檔案系統:根關聯到的分區

有一定的要求:FHS

其餘所有的其它檔案系統如果想要被通路,都隻能夠通過“關聯”至根檔案系統上的某個目錄來實作;

這種操作即所謂的“挂載”,也即mount;相反動作,即解除安裝,指令為umount

挂載點:mount_point,即用于作為另一個檔案系統通路入口的目錄;

mount指令:

mount DEVICE MOUNT_POINT

挂載點

1、事先存在;

2、應該使用别的程序未使用的目錄;

3、挂載點下原有的檔案将被隐藏;

mount:将顯示目前系統已經挂載的所有檔案系統的相關資訊;

mount [OPTION]... [-t FSTYPE] [-o OPTION] [DEVICE] MOUNT_POINT

指令選項:

-r: 隻讀挂載

-w: read and write,讀寫挂載

-t FSTYPE: 被挂載的裝置上的檔案系統類型;可省略,此時mount會自動使用blkid指令來判斷之;

-L LABEL: 以卷标的方式指定要挂載的裝置,是以,此時DEVICE可省;

-U UUID:以UUID的方式指定要挂載的裝置,是以,此時DEVICE可省;

-a: 自動挂載所有的支援自動挂載的裝置(/etc/fstab檔案中定義的支援自動挂載的裝置);

-n: 預設情況下,裝置挂載與否的改變結果會被儲存于/etc/mtab中一份;-n選項用于變動時不更新此檔案

示例:

# mount -U dea669ee-e769-46d9-86a8-88925a10278b /data/mydata

-o OPTION,挂載選項:

async:異步寫入

sync:同步寫入,即使用同步I/O;

atime/noatime:檔案或目錄在被通路時是否更新其通路時間戳;

diratime/nodiratime:目錄在文中時是否更新其通路時間戳;

auto/noauto:裝置是否支援mount指令使用-a選項時自動挂載;

dev/nodev:此裝置上是否建立裝置檔案;

exec/noexec:是否允許執行此檔案系統上的程式檔案;

suid/nosuid:是否支援此裝置上的檔案上使用suid權限;

remount: 重新挂載;

acl: 支援使用facl;

# mount -o acl

# tune2fs -o acl /dev/DEVICE: 打開acl為預設挂載選項;

ro: 隻讀

rw: 讀寫

user/nouser: 是否允許普通挂載此檔案系統

所有挂載選項均未指明時,其預設為:

defaults

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

              另外一個使用技巧:

              将某目錄綁定至指定目錄下,作為臨時通路入口;

              mount --bind 源目錄  目标目錄

            檢視所有已經挂載裝置的方法:

            # mount

            # cat /etc/mtab

            # cat /proc/mounts

umount指令:

umount DEVICE

umount MOUNT_POINT

注意:正在被某程序通路的裝置是不可以被解除安裝的;檢視被什麼程序所占用:

# lsof MOUNT_POINT

# fuser -v MOUNT_POINT

# fuser -km MOUNT_POINT: 終止正通路挂載點的程序;

df指令:

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

-l: 僅顯示本地檔案系統的相關系統;

-h: 機關換算;

-i: 顯示inode的使用情況而非磁盤塊的;

du指令:

用于評估檔案大小

-s: 統計整個目錄及内部所有檔案總體大小;

-h: human-readable

交換分區:

建立交換分區檔案系統:mkswap

free指令:檢視記憶體使用狀況

-m

-g

啟動交換分區:

swapon [OPTION] [DEVICE]

-a: 啟用/etc/fstab檔案中定義的所有交換分區

禁用交換分區:

swapoff DEVICE