天天看點

Linux基礎管理——磁盤管理及檔案系統(全)

1、裝置檔案

I/O Ports: I/O裝置位址。

裝置檔案的使用:

   通過将檔案關聯至一個裝置驅動程式,進而能夠跟與之對應硬體裝置進行通信。
    一切皆檔案,是以磁盤的也是也是基于裝置檔案與之通信的:open(), read(), write(), close()      

裝置号碼:

    主裝置号:major number, 辨別裝置類型;
    次裝置号:minor number, 辨別同一類型下的不同裝置。      

硬碟接口類型:

    并行:    
        IDE:133MB/s
        SCSI:640MB/s
    序列槽:
        SATA:6Gbps
        SAS:6Gbps
    USB:480MB/s
        rpm: rotations
        per minute      

磁盤裝置的裝置檔案命名:

    /dev/DEV_FILE
    
    SCSI, SATA, SAS, IDE,USB: /dev/sd;
    虛拟磁盤:/dev/vd;
    
    不同磁盤辨別:a-z,aa,ab…/dev/sda, /dev/sdb, ...;
    同一裝置上的不同分區:1,2, .../dev/sda1, /dev/sda5;      

2、磁盤結構

2.1、機械硬碟(HDD)

Linux基礎管理——磁盤管理及檔案系統(全)
Linux基礎管理——磁盤管理及檔案系統(全)

2.2、固态硬碟(SSD)和機械硬碟(HDD)

Linux基礎管理——磁盤管理及檔案系統(全)

2.3、硬碟存儲術語及扇區結構

head:磁頭;

track:磁道;

cylinder: 柱面;

sector: 扇區,512bytes;

(1)早期扇區結構

Linux基礎管理——磁盤管理及檔案系統(全)

(2)區位記錄磁盤扇區結構:ZBR(Zoned Bit Recording)

Linux基礎管理——磁盤管理及檔案系統(全)

2.4、CHS和LBA

CHS:

   采用24bit位尋址;
    最大尋址空間8GB;      

LBA(logical block addressing)

   LBA采用48個bit位尋址
    最大尋址空間128PB      

    注意:

    由于CHS尋址方式的尋址空間在大概8GB以内,是以在磁盤容量小于大概8GB時,可以使用CHS尋址方式或是LBA尋址方式;在磁盤容量大于大概8GB時,則隻能使用LBA尋址方式。      

2.5、使用分區空間

    裝置識别;
    裝置分區;
    建立檔案系統;
    标記檔案系統;
    在/etc/fstab檔案中建立條目;
    挂載新的檔案系統;      

2.5、磁盤分區的意義及分區類型

磁盤分區意義:

    優化I/O性能
    實作磁盤空間配額限制
    提高修複速度
    隔離系統和程式
    安裝多個OS
    采用不同檔案系統      
兩種分區方式:MBR,GPT      

2.5.1、MBR

MBR:

    Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T;    
    按柱面      

MBR分區結構:

硬碟主引導記錄MBR由4個部分組成:

    主引導程式(偏移位址0000H--0088H):它負責從活動分區中裝載,并運作系統引導程式。
    出錯資訊資料區:偏移位址0089H--00E1H為出錯資訊,0E2H--01BDH全為0位元組。
    
    分區表(DPT,Disk Partition Table):含4個分區項,偏移位址01BEH--01FDH,每個分區表項長16個位元組,共64位元組;為分區項1、分區項2、分區項3、分區項4
    結束标志字:偏移位址01FE--01FF的2個位元組值為結束标志55AA。      

2.5.2、GPT分區

GPT:

    GUID(Globals Unique Identifiers) partition table;    
    支援128個分區,使用64位,支援8Z(512Byte/block)、64Z (4096Byte/block);
    使用128位UUID(Universally Unique Identifier) 表示磁盤和分區;
    
    GPT分區表自動備份在頭和尾兩份,并有CRC校驗位UEFI;
    (統一擴充固件接口)硬體支援GPT,使作業系統啟動      

3、分區管理

3.1、圖形化

圖形化磁盤管理功能工具:

    點選“應用程式” ->“系統工具” ->“磁盤”;
    執行指令gnome-disks      

3.2、分區管理

列出塊裝置:lsblk;
建立分區使用:
    fdisk 建立MBR分區;
    gdisk 建立GPT分區;
    parted 進階分區操作;
    
partprobe-重新設定記憶體中的核心分區表版本;      

3.3、parted指令

注意:parted的操作都是實時生效的,小心使用

文法:

    parted [選項]... [裝置 [指令 [參數]...]...]      

示例:

    parted /dev/sdb mklabel gpt|msdos
    parted /dev/sdb print
    parted /dev/sdb mkpart primary 1 200 (預設M)
    parted /dev/sdb rm 1
    parted -l      

3.3、分區工具:fdisk & gdisk

    gdisk /dev/sdb:類fdisk 的GPT分區工具;

    fdisk -l [-u] [device...] 檢視分區;
    fdisk /dev/sdb 管理分區;      

子指令:

    p 分區清單
    t 更改分區類型
    n 建立新分區
    d 删除分區
    v 校驗分區
    u 轉換機關
    w 儲存并退出
    q 不儲存并退出      
檢視核心是否已經識别新的分區:
    cat /proc/partations      

同步分區表:

centos6通知核心重新讀取硬碟分區表:
    新增分區用:
        partx -a /dev/DEVICE
        kpartx -a /dev/DEVICE -f: force
    删除分區用:
        partx -d --nr M-N /dev/DEVICE

CentOS 5,7:使用partprobe
    partprobe [/dev/DEVICE]      

4、檔案系統管理

4.1、檔案系統類型

    Linux檔案系統:ext2(Extended file system), ext3,ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
    CD光牒:iso9660
    Windows:FAT32, exFAT,NTFS
    Unix:FFS(fast), UFS(unix), JFS2
    
    網絡檔案系統:NFS, CIFS
    叢集檔案系統:GFS2, OCFS2(oracle)
    分布式檔案系統: fastdfs,ceph, moosefs, mogilefs,glusterfs, Lustre
    RAW:未經處理或者未經格式化産生的檔案系統      
    查前支援的檔案系統:cat /proc/filesystems      

4.2、建立檔案系統

mkfs指令:
    (1) mkfs.FS_TYPE /dev/DEVICE
        ext4
        xfs
        btrfs
        vfat
    (2) mkfs -t FS_TYPE /dev/DEVICE
    -L 'LABEL': 設定卷标      

建立ext檔案系統:

mke2fs:
    ext系列檔案系統專用管理工具;
    -t {ext2|ext3|ext4}
    -b {1024|2048|4096}
    -L 'LABEL'
    -j: 相當于 -t ext3;
        mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
        
    -i #: 為資料空間中每多少個位元組建立一個inode;此大小不應該小于block的大小;
    -N #:指定分區中建立多少個inode;
    -I 一個inode記錄占用的磁盤空間大小,128---4096;
    -m #: 預設5%,為管理人員預留白間占總空間的百分比;
    -O FEATURE[,...]:啟用指定特性;
    -O ^FEATURE:關閉指定特性;      

檔案系統标簽:

    指向裝置的另一種方法    
    與裝置無關      
blkid:
    塊裝置屬性資訊檢視;
    文法:
        blkid [OPTION]... [DEVICE]
            -U UUID: 根據指定的UUID來查找對應的裝置
            -L LABEL:根據指定的LABEL來查找對應的裝置      
e2label:管理ext系列檔案系統的LABEL
    e2label DEVICE [LABEL]      
findfs :查找分區
    findfs [options] LABEL=<label>
    findfs [options] UUID=<uuid>      

tune2fs:

    重新設定ext系列檔案系統可調整參數的值;
    
    -l:檢視指定檔案系統超級塊資訊;super block
    -L 'LABEL':修改卷标
    -m #:修預留給管理者的空間百分比
    -j: 将ext2更新為ext3
    -O: 檔案系統屬性啟用或禁用, –O ^has_journal
    -o: 調整檔案系統的預設挂載選項,–o ^acl
    -U UUID: 修改UUID号      

dumpe2fs:

    塊分組管理,32768塊    
    -h:檢視超級塊資訊,不顯示分組資訊      

4.3、檔案系統檢測和修複

    常發生于當機或者非正常關機之後;    
    挂載為檔案系統标記為“ no clean”;
    注意:一定不要在挂載狀态下修複;      
fsck: File System Check

fsck.FS_TYPE
fsck -t FS_TYPE
    -p: 自動修複錯誤
    -r: 互動式修複錯誤
    FS_TYPE一定要與分區上已經檔案類型相同;      
e2fsck:ext系列檔案專用的檢測修複工具
    -y:自動回答為yes
    -f:強制修複      

5、挂載

挂載:

    将額外檔案系統與根檔案系統某現存的目錄建立起關聯關系,
    進而使得此目錄做為其它檔案通路入口的行為      

注意:

    挂載點下原有檔案在挂載完成後會被臨時隐藏;    
    挂載點目錄一般為空;
    事先存在;建議使用空目錄;
    程序正在使用中的裝置無法被解除安裝;      
mount DEVICE MOUNT_POINT
mount [-fnrsvw] [-t vfstype] [-o options] device dir      
    -t vsftype:指定要挂載的裝置上的檔案系統類型
    -r: readonly,隻讀挂載
    -w: read and write, 讀寫挂載
    -n: 不更新/etc/mtab,mount不可見
    -a:自動挂載所有支援自動挂載的裝置(定義在了/etc/fstab
    檔案中,且挂載選項中有auto功能)
    -L 'LABEL': 以卷标指定挂載裝置
    -U 'UUID': 以UUID指定要挂載的裝置
    -B, --bind: 綁定目錄到另一個目錄上
    
    檢視核心追蹤到的已挂載的所有裝置
    cat /proc/mounts      

-o options:(挂載檔案系統的選項),多個選項使用逗号分隔

    async:異步模式    
    sync:同步模式,記憶體更改時,同時寫磁盤
    atime/noatime:包含目錄和檔案
    diratime/nodiratime:目錄的通路時間戳
    auto/noauto:是否支援自動挂載,是否支援-a選項
    exec/noexec:是否支援将檔案系統上運作應用程式
    dev/nodev:是否支援在此檔案系統上使用裝置檔案
    suid/nosuid:是否支援suid和sgid權限
    remount:重新挂載
    ro:隻讀
    rw:讀寫
    user/nouser:是否允許普通使用者挂載此裝置,/etc/fstab使用
    acl:啟用此檔案系統上的acl功能
    loop: 使用loop裝置      
defaults:相當于rw, suid, dev, exec, auto, nouser, async      

6、解除安裝指令

檢視挂載情況

findmnt MOUNT_POINT|device      

檢視正在通路指定檔案系統的程序

lsof MOUNT_POINT
fuser -v MOUNT_POINT      

終止所有在正通路指定的檔案系統的程序

fuser -km MOUNT_POINT      

解除安裝

umount DEVICE
umount MOUNT_POINT      

7、檔案挂載配置檔案

注意:使用mount -a 指令挂載/etc/fstab中的所有檔案系統

/etc/fstab每行定義一個要挂載的檔案系統:

1)要挂載的裝置或僞檔案系統;
    裝置檔案;
    LABEL:LABEL="";
    UUID:UUID="";
    僞檔案系統名稱:proc, sysfs;

2)挂載點;

3)檔案系統類型;

4)挂載選項:defaults;

5)轉儲頻率:0:不做備份 1:每天轉儲 2:每隔一天轉儲;

6)自檢次序:
    0:不自檢;
    1:首先自檢;一般隻有rootfs才用1;      

8、處理交換檔案和分區

交換分區是系統RAM的補充。

8.1、基本設定

    建立交換分區或者檔案    
    使用mkswap寫入特殊簽名
    在/etc/fstab檔案中添加适當的條目
    使用swapon -a 激活交換空間      

交換分區的啟用與禁用:

    啟用:swapon      
    swapon [OPTION]... [DEVICE]
        -a:激活所有的交換分區;
        -p PRIORITY:指定優先級
        /etc/fstab:pri=value      
    禁用:swapoff [OPTION]... [DEVICE]      

8.2、SWAP的優先級

    可以指定swap分區0到32767的優先級,值越大優先級越高;    
    
    如果使用者沒有指定,那麼核心會自動給swap指定一個優先級,這個優先級從-1開始,
    每加入一個新的沒有使用者指定優先級的swap,會給這個優先級減一;
    
    先添加的swap的預設優先級比較高,除非使用者自己指定一個優先級,
    而使用者指定的優先級(是正數)永遠高于核心預設指定的優先級(是負數);
    
    優化性能:分布存放,高性能磁盤存放;