1. 程式人生 > >磁盤存儲和文件管理

磁盤存儲和文件管理

價格 適用於 fat32 交換 交換文件 另一個 可見 proc gpt分區表

磁盤存儲

設備文件


I/O Ports: I/O設備地址
一切皆文件:open(), read(), write(), close() 
設備類型:    
    塊設備:block,存取單位“塊”,磁盤
    字符設備:char,存取單位“字符”,鍵盤
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
設備號碼: 
  主設備號:major number, 標識設備類型 
  次設備號:minor number, 標識同一類型下的不同設備  

硬盤接口類型


並行:
    IDE:133MB/s 
    SCSI:640MB/s  
串口:SATA:6Gbps 
      SAS:6Gbps
      USB:480MB/s 
rpm: rotations 
     per minute

機械硬盤和固態硬盤


 機械硬盤(HDD):Hard Disk Drive,即是傳統普通硬盤,主要由:盤片,磁頭,盤 片轉軸及控制電機,磁頭控制器,數據轉換器,接口,緩存等幾個部分組成。機械硬盤 中所有的盤片都裝在一個旋轉軸上,每張盤片之間是平行的,在每個盤片的存儲面上有 一個磁頭,磁頭與盤片之間的距離比頭發絲的直徑還小,所有的磁頭聯在一個磁頭控制 器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿盤片的半徑方向運動,加上盤片每 分鐘幾千轉的高速旋轉,磁頭就可以定位在盤片的指定位置上進行數據的讀寫操作。數 據通過磁頭由電磁流來改變極性方式被電磁流寫到磁盤上,也可以通過相反方式讀取。 硬盤為精密設備,進入硬盤的空氣必須過濾 
 固態硬盤(SSD):Solid State Drive,用固態電子存儲芯片陣列而制成的硬盤,由控 制單元和存儲單元(FLASH芯片、DRAM芯片)組成。固態硬盤在接口的規範和定義、 功能及使用方法上與普通硬盤的完全相同,在產品外形和尺寸上也與普通硬盤一致 
 相較於HDD,SSD在防震抗摔、傳輸速率、功耗、重量、噪音上有明顯優勢,SSD傳 輸速率性能是HDD的2倍
 相較於SSD,HDD在價格、容量、使用壽命上占有絕對優勢 
 硬盤有價,數據無價,目前SSD不能完全取代HHD   

設備文件


磁盤設備的設備文件命名:/dev/DEV_FILE 
虛擬磁盤:/dev/vd 
不同磁盤標識:a-z,aa,ab… /dev/sda, /dev/sdb, ...
同一設備上的不同分區:1,2, ... /dev/sda1, /dev/sda5 
硬盤存儲術語 
head:磁頭 
track:磁道 
cylinder: 柱面 
sector: 扇區,512bytes  

分區MBR,CPT


兩種分區方式:MBR,GPT 
MBR: Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T
如何分區:按柱面
0磁道0扇區:512bytes 
            446bytes: boot loader
            64bytes:分區表 
            16bytes: 標識一個分區 
            2bytes: 55AA
4個主分區;3主分區+1擴展(N個邏輯分區) 

MBR分區結構


硬盤主引導記錄MBR由4個部分組成
主引導程序(偏移地址0000H--0088H),它負責從活動分區中裝載,並運行 系統引導程序
出錯信息數據區,偏移地址0089H--00E1H為出錯信息,00E2H--01BDH全為 0字節
分區表(DPT,Disk Partition Table)含4個分區項,偏移地址01BEH--01FDH,
每個分區表項長16個字節,共64字節為分區項1、分區項2、分區項3、分區項4
結束標誌字,偏移地址01FE--01FF的2個字節值為結束標誌55AA  

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,使操作系統啟動  

管理分區


列出塊設備 
  ? lsblk 
創建分區使用: 
   ? fdisk創建MBR分區
   ? gdisk創建GPT分區
   ? parted高級分區操作
partprobe-重新設置內存中的內核分區表版本  

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   列出分區信息  

分區工具fdisk和fdisk


gdisk /dev/sdb 類fdisk 
fdisk -l 、dev/sda查看分區 
fdisk /dev/sdb 管理分區 子命令: 
p 分區列表
t 更改分區類型 
n 創建新分區 
d 刪除分區 
v 校驗分區 
u 轉換單位 
w 保存並退出 
q 不保存並退出   

同步分區表


查看內核是否已經識別新的分區
       cat/proc/partations
     fdisk分區後fdisk -l .dev.se1[查看硬盤]
     lsblk[查看內存硬盤]
centos6通知內核重新讀取硬盤分區表
     新增分區用:
              partx -a /dev/sr1
     刪除分區用:
              partx -d --nr M-N /dev/sr1
centos7同步使用:
            partprobe命令  

文件系統


文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;
即在儲存設備上組織文件的方法。操作系統中負責管理和儲存文件信息的軟件結構稱為文件管理系統,簡稱文件系統

從系統角度來看文件系統對文件儲存設備的空間進行組織和分配,負責文件儲存並對存入的文件進行保護和檢索的系統封。
具體的說,他負責為用戶創立文件,存入,讀取,修改,轉儲問價,控制問價的讀出,安全控制,日誌,壓縮,加密等 

支持的文件系統:
/lib/modules/‘uname -r‘ /kernel/fs
各種文件系統:
https://en.wikipedia.org/wiki/Comparison_of_file_systems 

文件系統類型


linux系統類型:
       ext2(Extended file system) :適用於那些分區容量不是太大,更新也不頻繁的情況, 例如 /boot 分區。 
       ext3:是 ext2 的改進版本,其支持日誌功能,能夠幫助系統從非正常關機導致的異常中 恢復。它通常被用作通用的文件系統 
       ext4:是 ext 文件系統的最新版。提供了很多新的特性,包括納秒級時間戳、創建和使 用巨型文件(16TB)、最大1EB的文件系統,以及速度的提升 xfs:SGI,支持最大8EB的文件系統 btrfs(Oracle), reiserfs, jfs(AIX), swap   
       光盤:iso9660
       windows:FAT32,NTFS
       Unix:FFS(fast),UFS(unix),JFS2
       網絡文件系統:NFS,CIFS
       集群文件系統:GFS2,OCFS2
       分布式文件系統: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre 
       RAW:未經處理或者未經格式化產生的文件系統

文件系統分類


根據其是否支持“journl”功能:
   日誌型文件系統:ext3,ext4,xfs,....
   非日誌文件系統:ext2,vfat
文件系統的組織部分:
    內核中的模塊:ext4, xfs, vfat 
    用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat 
linux 的虛擬文件系統:VFS
查看當前支持的文件系統:cat/proc/filesystems

創建文件系統


mkfs命令:
     (1):mkfs.ext4/der/...
                 xfs
                 btrfs
                 vfat

創建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:關閉指定特性

tune2fs


      tune2fs:重新設定ext系列文件系統可調整參數的值 
      -l:查看指定文件系統超級塊信息;super block 
      -L ‘LABEL‘:修改卷標 
      -m #:修預留給管理員的空間百分比 
      -j: 將ext2升級為ext3
      -O: 文件系統屬性啟用或禁用, –O ^has_journal 
      -o: 調整文件系統的默認掛載選項,–o ^acl 
      -U UUID: 修改UUID號
           tune2fs -U`uuidgen` /dev/sdb1
                uuidgen[這個命令可以自動生成UUID]
      dumpe2fs: 
          塊分組管理,32768塊
          -h:查看超級塊信息,不顯示分組信息

例:tune2fs -l /dev/sdr[查看文件系統]
tune2fs -o acl /dev/sdr [手工添加acl]
tune2fs -o ^acl /dev/sdr[刪除acl] 
[acl 類似於權限密碼]
如:setfacl -m u:dang:rw f1[給dang用戶rw權限對於f1文件]

文件系統檢測和修復


常發生於死機或者非正常關機之後
掛載為文件系統標記為“no clean”
註意:一定不要在掛載狀態下修復  

fsck: File System Check
fsck.FS_TYPE fsck -t FS_TYPE
-p: 自動修復錯誤 
-r: 交互式修復錯誤
FS_TYPE一定要與分區上已經文件類型相同
e2fsck:ext系列文件專用的檢測修復工具 
-y:自動回答為yes 
-f:強制修復
例:fsck -y /dev/sdb/[修復文件系統,,註意要取消掛載後再修復,否則會破壞數據]

掛載mount


掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此 目錄做為其它文件訪問入口的行為 
掛載:mount  +掛載設備+掛載點
卸載:umount  可以使用設備或掛載點
掛載點下原有的文件在掛載後會被臨時隱藏
掛載點目錄一般為空

mount常用命令選項


-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   

mount常見命令選型


-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

文件掛載配置文件


 /etc/fstab每行定義一個要掛載的文件系統 
 1、要掛載的設備或偽文件系統
    設備文件 
    LABEL:LABEL=""
    UUID:UUID=""
    偽文件系統名稱:proc, sysfs 
 2、掛載點 
 3、文件系統類型:ext4,xfs,nfs,none 
 4、掛載選項:defaults ,acl,bind 
 5、轉儲頻率:0:不做備份 1:每天轉儲 2:每隔一天轉儲 
 6、fsck檢查的文件系統的順序:允許的數字是0, 1, 和2
     0:不自檢
     1:首先自檢;一般只有rootfs才用 
    2:非rootfs使用  

處理交換文件和分區


交換分區是系統RAM的補充
基本設置包括: 
    ? 創建交換分區或者文件
    ? 使用mkswap寫入特殊簽名 
    ? 在/etc/fstab文件中添加適當的條目 
    ? 使用swapon -a 激活交換空間 

掛載交換分區


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

SWAP的優先級


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

磁盤存儲和文件管理