linux系統中的磁盤管理

磁盤管理
介紹
文件系統
磁盤介紹
磁盤管理
製作文件系統
掛載文件系統
卸載文件系統
設置文件系統
檢查文件系統
swap文件系統
磁盤介紹
 1.磁盤的構造
磁盤的構造
機械硬盤的基本組成
一般硬盤由若干張盤片組成。磁盤中不管是磁面磁柱磁道還是扇區都有自己的編號,從0開始編號
磁面:每一張磁盤的表面
磁柱:每個盤片上同一編號的磁道組成一個磁柱
磁道:以磁盤中心爲圓點以固定長度爲半徑畫圓
扇區:從磁道中切割出來的存儲區塊,硬盤中最小存儲單位,512字節
2.磁盤分類:硬盤、軟盤、光盤、磁帶、閃存(一般爲usb的設備)遠離電磁干擾
硬盤:IDE硬盤  ATA接口 識別爲/dev/hd(a.b…)
SATA接口 識別/dev/sd(a.b…)

轉速有4200/轉、5400/轉、7200/轉

  臺式機:3.5寸硬盤

  筆記本:2.5寸硬盤

  超極本:1.8寸硬盤(價格介於2.5寸硬盤與固態硬盤之間)

    SCSI硬盤 識別爲/dev/sd(a.b…)    

      一般是在服務器上使用的企業級硬盤,轉速有10000/轉、15000/轉,轉速越快,硬盤的讀寫速度越快,但是相對硬盤的壽命越短。如果硬盤數量超過26塊,第26塊命名爲sdaa,第27塊命名爲sdab,以此類推 … (另一種控制途徑:scsi控制卡專門用來管理硬盤的)

    SSD固態硬盤

          優點:寫入速度快,讀寫速度快(500M/s)、功耗低、抗震、工作產生噪音低

          缺點:性價比低,壽命限制只有3000-5000個PE(按照擦寫次數計算)

      製作手段有兩種

          一、利用固態存儲芯片(類似於U盤)

          二、利用內存條(不適用,斷電數據丟失)

      軟盤:識別爲/dev/fd(0-7)

    移動磁盤 USB
1394 (IEEE1394,數字化家庭使用的物聯網接口)
PCMCIA  這三種被統一識別爲/dev/sd
注意:linux rescue修復模式下,不管磁盤是什麼類型的都被識別爲hd的設備
    計算機、服務器是如何將哪塊磁盤識別爲a、哪塊識別爲b的呢?
1.由BIOS指定啓動順序
2.由操作系統來判斷
一臺主機上有兩塊磁盤,分別插在1口、2口上,兩塊盤上都有操作系統,啓動哪塊盤上的系統哪塊盤就被識別爲a,沒啓動的那塊盤被識別爲b。
MBR(master boot record) 
主引導記錄 MBR (整個磁盤的0號磁柱 0號磁面的0號扇區是MBR)
IPL initial program loader 
初始化程序加載器 IPL  佔用446字節  
用來存儲操作系統的相關信息
partition table  
分區表佔用64字節
校驗用來存放 IPL的檢查碼 保證64字節數據正確  佔用2個字節
MBR備份(備份到U盤)

插上U盤後執行命令

              dd if=/dev/sda of=/dev/sdb  bs=512 count=1  備份    

              dd if=/dev/sdb of=/dev/sda  bs=512 count=1  還原

dd 實現硬盤對克、保存、備份數據等

if infile 從哪讀入數據

of outfile 指定數據寫入的位置

bs block size 塊大小

count=1 表示整條命令執行的結果是 讓系統從指定的硬盤上讀取一塊512字節的數據寫到U盤上(正常情況下dd在操作的時候是從硬盤開始的部分讀入,按順序去寫,這裏指定只讀一塊也就是MBR)

#dd if=/dev/zero  of=/tmp/abc bs=1M count=100
/* dd if=/dev/zero 永遠輸出恆爲空的數據 */ 
#ll –h /tmp/abc  查看abc屬性信息
#-rw-r—r— 1 root root 100M 05-09 11:08 /tmp/abc
#cat /tmp/abc  無內容  
  abc文件夾爲空,但佔用空間爲100M。
文件系統
文件系統決定計算機存取數據的方式(NTFS、EXT3)
不管是什麼文件系統,每一個磁盤空間(分區)只能使用同一個文件系統。
不管什麼類型的磁盤,都可以建立多個分區。
MBR扇區共有512個字節,其中分區表佔用64個字節。每塊磁盤可以存儲若干條分區信息,每條分區信息代表着磁盤的某一個分區,每條分區信息佔用了16個字節,由於分區表爲64個字節容量,所以每塊磁盤最多隻能建立4個主分區或者說能建立3個主分區和一個擴展分。
分區信息記錄的內容:
開始磁柱編號:定義這個分區是從第幾號磁柱編號開始的
所有磁柱數量:定義這個分區一共佔用了多少個磁柱
分區系統標識符:聲明這個分區可以創建什麼類型的文件系統
分區信息可以存儲在MBR扇區,還可以存儲在其他位置,主分區和擴展分區是存儲在MBR扇區中的,而邏輯分區存儲在別的扇區中。
根據分區信息存儲的位置可以分爲:
主分區分區信息存儲在MBR扇區的分區表中
擴展分區特殊類型的主分區,本身的分區信息也是寫在分區表中。
特性:只能存儲分區信息,不能存儲數據
邏輯分區存儲在擴展分區當中的分區,每一個邏輯分區可以存儲一個文件系統
建立邏輯分區的個數取決於擴展分區的類型和磁盤的類型。
擴展分區的類型 由系統標識符區分
系統標識符id=5   邏輯分區=12個
系統標識符id=85   ide=60  scsi=12
磁盤標識命名順序
主分區&擴展分區1-4 (eg:/dev/sda1、/dev/sda2…)
邏輯分區 5-63 (eg: /dev/hda10、/dev/sdb16)
eg:
/dev/sda1 第一塊硬盤上的主分區
/dev/sdb16 第二塊硬盤上第12個邏輯分區
/dev/hda10 第一塊硬盤上的第6個邏輯分區
hdparm跟磁盤管理相關的一個命令(使用不好,對硬盤會有傷害,慎用)
查看磁盤信息,調整磁盤參數,目的:對磁盤性能的優化
   #hdparm /dev/sda    查看整塊硬盤的信息

          hdparm  -d 0/1  DMA=direct memory access 是否啓用磁盤效能

          -B 0-255 設置磁盤的電源管理功能(數值越小,代表硬盤越省電,但效率越低;數值越大越費電,效率越高,但是255表示停用此功能)

          -C   檢查ide磁盤的狀態

          -g  顯示磁盤的結構信息(磁柱、磁面、扇區的數量)

          -S 1-255   (1-240 5s的倍數  241-251 30min的倍數   252 21min  253 8-12h  254 unknone   255  21分15秒)

          -u num  設定中斷屏蔽標籤(IRQ)

磁盤管理工具

Linux中有三種: fdisk   sfdiskparted

  fdisk 最常用的工具,主要是用來對硬盤進行操作的: (支持2T以上的分區)擁有家友好的交流界面,操作容易上手

  fdisk /dev/sda 硬盤統計信息 出現操作界面 按 m 是進入幫助菜單提示那個按鍵起到哪個作用

[root@localhost ~]# fdisk /dev/sda                                

The number of cylinders for this disk is set to 2610.          

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:              

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other Oss

(e.g., DOS FDISK, OS/2 FDISK)                              

Command (m for help): m                                        

Command action                                                

 a   toggle a bootable flag   #切換分區的啓動標籤

 b   edit bsd disklabel  #編輯bsd系統中的磁盤卷標

 c   toggle the dos compatibility flag

 d   delete a partition  #刪除一個分區

 l   list known partition types  #列出支持的分區類型信息

 m   print this menu #打印這個菜單

 n   add a new partition  #增加一個分區

 o   create a new empty DOS partition table                  

 p   print the partition table #打印分區表

 q   quit without saving changes#不保存提出

 s   create a new empty Sun disklabel # 建立空的sun 分區表

 t   change a partition's system id # 改變一個分區的分區類型id

 u   change display/entry units # 更改顯示的單位

 v   verify the partition table # 檢查分區表數據

 w   write table to disk and exit #保存退出

 x   extra functionality(experts only)#高級功能(類似分區魔術師)

Command (m for help):

  建議分區完成之後要執行命令:partprobe強制內核更新分區表

  fdisk –l 顯示硬盤的容量 磁盤驅動器的內部結構以及分區表信息

  如果分區時,在分區起始結束的位置沒有剛好在柱面的邊界處結束,就會出現一個“+”號。eg: 20860402+

[root@localhost ~]# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device   Boot  Start    End     Blocks   Id  System

/dev/sda1   *     1       13     104391   83  Linux

/dev/sda2         14     274    2096482+  82  Linux swap /Solaris

/dev/sda3         275    2610    18763920   83  Linux

  Id 號表示分區類型,十六進制

Linux中常用的id號:
82(Linux swap / So)、83(Linux)、85(Linux extended)
8e(Linux LVM)、fd(Linux raid auto)
Windows常用的id號:
7(HPFS/NTFS)、b(W95 FAT32)、c(W95 FAT32 (LBA)) 
文件系統
block塊  1k 2k 4k
作用:不管是什麼操作系統,創建文件系統的目的就是把多個扇區組合起來形成塊。
建立文件系統時,會在磁盤上建立包含若干個扇區的塊,塊是用來對數據進行存儲的,磁盤的最小存儲單位是扇區,假如有10M的數據,以扇區爲單位進行存取,這10M的數據會被讀取10*1024*1024/512=20480次,這樣就嚴重的影響了磁盤的效率。如果把多個扇區組合起來使用的話就會好很多,因爲減少了磁盤的讀取次數。
塊分爲兩種:
資料塊——用來存放文件內容 
超級塊——用來存儲資料塊信息的
如果塊比較大,讀取速度比較快IO性能好,但是會造成空間的浪費。(對於大數據來說有一個比較好的性能,塊大的話,數據延續的磁頭只管讀就行了)
如果塊小的話會浪費一定的IO,但是會節省空間。
建議:搭建文件服務器時,如果存儲的文件不是很大的話,那麼磁盤塊的大小可以分小些,避免空間的浪費。如果存放的是數據庫類型文件(一般爲幾個G或十幾個G)的話,磁盤的塊就分的大一些,保證磁盤的IO性能。

inode 索引節點(i節點)  128bit

  作用:用來存儲一個文件信息的。

      包含的文件信息有:文件類型、權限、連接數量、所有者信息(包括所有者組) 、大小 、數據塊位置、時間(atime ctime mtime)

      每一個索引節點用來存儲一個文件的信息,所以每個分區有多少個索引節點就代表可以存儲多少個文件。正常情況下,系統提示磁盤空間不足,就是磁盤存儲空間不足,但是還有另一種可能,那就是索引節點使用完了,即使磁盤空間還有空間也寫不了東西。

dentry 目錄項

  作用:將索引節點和數據塊關聯起來

      當新建一個文件的時候系統會分配給這個文件一個I節點和一個對應大小的塊(塊容量大小至少容得下文件內容大小);當新建一個文件夾的時候系統會分配給這個文件夾一個I節點和一個塊。文件夾只是一個容器,真正存儲數據的而是文件,系統分配給文件夾的塊是用來存儲包含在文件夾下文件的I節點信息的。

      軟連接

          優點:可以跨分區,可以鏈接目錄。

          缺點:源文件刪除之後,鏈接文件打不開。創建新的I節點。

      硬鏈接

          優點:源文件刪除後,鏈接文件照樣可以打開。

          缺點:不能跨分區,不能鏈接目錄。與源文件共用I節點。

Linux文件系統的種類

linux專用文件系統:ext2 ext3 ext4 swapfs  
其他平臺:msdos vfat ntfs
    系統運行類文件系統:procfs(與系統內存數據相關) devfs(跟系統設備相關) tmpfs(跟系統緩存相關)
網絡文件系統:NFS smbfs

ext2 ext3 ext4簡單介紹

  ext2  linux系統中標準的文件系統

      特點:較好的文件存取性能,尤其是對中小型文件 IO性能較爲突出

      單一文件的大小上限爲2048G    

      文件系統(單一分區)的大小上限爲16384G

      以前 2.4版本內核的linux系統單一分區大小不會超過2T

  ext3  基於ext2的基礎上 加了文件系統的日誌的功能

      在ext3文件系統的中,一個8G的分區它的日誌只佔了3-5k的空間。單一分區文件系統支持                16TB,單一文件的大小上限爲2TB  

     支持子目錄的個數在32000以內 /a/b/c/……

  ext4  兼容ext3 使用fsck檢測磁盤速度比ext3的明顯快很多

        日誌功能比ext3多了校驗的功能

        從2.6.28版本的內核開始正式支持ext4

      在ext3文件系統當中,只需要執行一些命令就可以將文件系統從ext3轉換到ext4類型,並且不需要重新格式化也不需要備份數據,原有的數據不但保存完整,而且轉換後的文件系統獲得了ext4更大的容量和性能上的提升。

默認 inode 大小爲 256 bit
單一分區文件系統支持1EB 
單一文件的大小上限爲16TB 
對子目錄的個數沒有限制 
換算規則:1EB=1024PB 1PB=1024TB 1TB=1024GB
製作文件系統
VFS(virtual filesystem) 虛擬文件系統
Linux系統內核採用了虛擬文件系統層的結構,這個文件系統層規定了目錄樹上的所有東西,包括:文件,目錄,設備節點,符號連接(鏈接),必須由inode(i節點)、block(數據塊)、dentry(目錄項)組成。
mkfs命令建立 linux 檔案系統在特定的 partition 上
#ls /sbin/mkfs.*  查看linux默認支持的文件系統類型
如果要把當前的文件系統格式化成另一個文件系統需要執行如下的一條命令:
   #mkfs.ext2 /dev/sdb1  /* 將當前分區的文件系統格式成ext2的文件系統*/
#mkfs.ext2 /dev/sdb1  /* 將當前分區的文件系統格式成ext2的文件系統*/
mke2fs命令 與mkfs等效(格式化文件系統有其他要求是使用此命令)
mke2fs 默認格式化成ext2的文件系統  mke2fs /dev/sda1
命令參數
mke2fs -b 格式化時指定文件系統大小  1024 2048 4096
           -c 即check,建立文件系統時檢查是否有壞損塊
           -i/-N  -i指定i節點的密度,-N指定i節點的數量(絕對數目)
           -L  定義文件系統的卷標  eg:mke2fs -L vfast /dev/sdb1

         -m  定義保留區塊的大小 默認ext2與ext3會爲root用戶保留5%的區塊(即硬盤5%的存儲空間),防止普通用戶和其他用戶漫無目的的使用硬盤空間導致root用戶沒有操作空間可用

          eg: mke2fs -m 1 /dev/sdb1  將爲root保留的默認空間改爲1%

           -j 格式化成ext3的文件系統
dumpe2fs  查看一個分區文件系統信息以及這個分區上超級塊的信息
實例:creat a new disk之後,對其進行分區,次硬盤的標識爲/dev/sdb
      #fdisk /dev/sdb 
      … 創建分區/dev/sdb1 記得按w保存退出
      #fdisk –l
      #partprobe 強制激活分區
      #fdisk –l 
      #mkfs.ext3 –L vfast /dev/sdb1 製作ext3文件系統
 #dumpe2fs /dev/sdb1  查看sdb1分區文件系統信息
如果要使用這個分區就要掛載
掛載的目的就是要使用新生成的這個新的文件系統或者是光驅
      #mount /dev/sdb1 /mnt/  將新建的分區掛載到/mnt下
 #cd /mnt   切換到/mnt目錄下 就可以對這個分區進行操作
掛載文件系統mount
簡單介紹mount命令
常用的命令參數
mount  -t  指定文件系統類型
           -o  即other,添加附加選項
如果只執行mount這個命令,後面什麼都不加,會顯示當前系統中的哪個文件系統掛載到什麼地方,文件系統類型,已經可執行的權限。執行mount這條命命令相當於執行cat /etc/mtab,/etc/mtab就是掛載表,一些外置存儲設備的更新添加刪除都會造成這個文件內容相應的變動。
當我們在執行mount掛載存儲設備的時候,不需要指定文件系統,因爲他會自動匹配/etc/filesystems這個文件裏所指定的文件系統類型。如果系統不認得話,就需要使用-t這個命令參數來指定一下即可(前提是你的系統內核必須支持你所指定的文件系統類型,否則還是掛不上)
mount 掛載 顯示權限
注意:加*號的,爲默認值

rw*讀寫

ro 只讀

sync   數據同步處理 寫到內存的同時寫入磁盤 小數據使用

async* 數據異步處理 先寫到內存,在寫到磁盤 大數據使用

atime* 指定是否維護所掛載的設備的訪問時間,默認使用atime維護的

noatime 如果是筆記本或經常移動的設備可以使用noatime 不維護訪問時間,避免對硬盤的連續讀寫和運轉,延長硬盤的使用壽命

dev*   指定文件系統內的文件如果有設備文件的話,是否把它解釋成設備文件,默認解釋成設備文件的

nodev   不解釋成設備文件

exec*   指定文件系統內如果有可執行文件的話是否被識別爲可執行的,默認被識別爲可執行的

noexec  不被識別爲可執行的

suid*  指定被掛載的文件系統當中,如果有文件被設置爲suid,被掛載後是否還生效

nosuid  suid不生效

user  nouser 是否允許普通用戶執行mount這個命令掛載文件系統,一般不在mount命令加這個參數,是在fstab這個文件裏寫的,fstab所設計到時權限與mount是一樣的 
/etc/fstab這個文件決定了系統中把哪個設備掛載到哪個掛載點下
 eg: #mount /dev/sdb1 /mnt/ 將/dev/sdb1設備掛載到/mnt/掛載點下,rw
     #mount -o remount,ro /dev/sdb1重新掛載賦予只讀的權限,ro
打開/etc/fstab這個文件
  #cat /etc/fstab
裏面的defaults代表的就是默認權限
defaults=rw+suid+dev+exec+auto+nouser+async
  auto 自動掛載 
卸載文件系統umount
命令參數
umount  -a   all 卸載所有文件系統
        -r   如果卸載失敗將權限修改爲ro
        -v   顯示詳細信息
        -t   指定文件系統類型
        -f   強制
fsck 檢查文件系統
命令參數
fsck  -A  根據/etc/fstab文件設置檢查所有文件系統
      -a  即auto自動修復文件系統
      -y  代替回答yes
      -f  強制
注意:不要對已經掛載的文件系統進行fsck這條命令,因爲fsck在檢查的時候可能會涉及到對硬盤上數據的更改,因爲系統會對已經掛載的分區進行讀寫,fsck也進行對其讀寫就會造成衝突,就會到時數據損壞。所以要進行fsck是要將對應的分區卸載,然後再進行fsck檢查。
  eg:#umount /mnt
     #fsck /dev/sdb1 –y
如果在進行檢查文件系統是沒有進行卸載相應的分區,導致根分區出問題怎麼辦?
在急救模式下也有fsck這條命令.
free查看系統內存信息
[root@localhost ~]# free                                                   

       total       used       free     shared    buffers    cached                    

Mem:   1034708     407420     627288       0        32684     259076            

-/+ buffers/cache: 115660     919048                                  

Swap:  2096472          0    2096472                                    

[root@localhost ~]#
free -m  表示以M的單位顯示內存信息(推薦使用-m)
[root@localhost ~]# free -m                                                    

      total       used       free     shared    buffers     cached        

Mem:    1010        435        575          0         50        259        

-/+ buffers/cache:  124        885                                          

Swap:   2047          0       2047                                          

You have new mail in /var/spool/mail/root                            

[root@localhost ~]#

free -g  表示以G的單位顯示內存信息(小數點後面的數全抹掉)                                


擴充swap分區有兩種方法

 1:生成個swap文件
#dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024 
#ll –h /tmp/swapfile 
-rw-r--r-- 1 root root 2.0G May 12 04:25 /tmp/swapfile
# mkswap /tmp/swapfile  製作swap文件系統
Setting up swapspace version 1, size = 2147479 kB
# swapon /tmp/swapfile  開啓這個製作的虛擬內存功能
#free -m 查看結果(在原來的虛擬內存大小基礎上加上1024M擴充的虛擬內存)
#swapon -s  查看系統中swap分區的優先級
加上虛擬內存之後,可以使用swapon -s 來查看操作系統中使用swap文件系統的優先級(-5至+10),數值越大優先級越高,會越早使用。
注意:使用分區製作的虛擬內存要比使用文件製作的虛擬內存要快。
#swapon -p 1 /dev/sdb1調整這個swap分區的優先級爲1
關閉swap
 #swapoff /tmp/swapfile 關閉以文件製作的虛擬內存 
2:在建立系統時創建一個swap分區
也就是在安裝系統時手動創建一個swap分區。


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