1. 程式人生 > >4.1-4.13 預習筆記

4.1-4.13 預習筆記

1. # df

1)用# man df, 可以看到這個命令的定義df - report file system disk space usage, 彙報檔案系統磁碟使用情況

掛載點實際為系統中的目錄,linux中的磁碟不可直接訪問必須要有個掛載點,通過掛載點才可以進入磁碟讀寫資料

2)-h 引數,可以顯示磁碟容量單位(byte, 1000b=1KB, 1000kb=1MB, 1000MB=1GB, 1000GB=1TB...)

     # df -m, 可以以容量單位MB來顯示

)如下圖所示,檔案系統中含有“tmpfs”表明是臨時檔案系統,其掛載點中檔案的內容在重啟之後就會消失;掛載點“/dev/shm”為記憶體,大小為實體記憶體的一般,且寫入此目錄中的內容執行速度極快。

我們需要關注的是/dev/sda3 & /dev/sda1這種檔案系統

注: # free,可以用來檢視swap

詳解見於:http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html

free命令可以顯示Linux系統中空閒的、已用的實體記憶體及swap記憶體,及被核心使用的buffer。在Linux系統監控的工具中,free命令是最經常使用的命令之一。

 4)# df -i, 用來檢視分割槽下面有多少個inode以及inode的使用情況

系統分割槽之後進行格式化才可以寫入內容,例如windows系統下格式化成NTFS/FAT檔案系統,在linux系統中格式化的過程就是在建立inode,inode在格式化的過程中預分配好了,每個分割槽磁碟中有多少inode是事先弄好的(跟磁碟分割槽大小有關係)。有時我們看見磁碟中仍有剩餘空間,但是無法寫入的時候,我們可以檢視一下# df -i來看一下磁碟中inode的使用情況,如果inode滿了,即使磁碟空間有剩餘也無法寫入檔案

2. # du

用來檢視檔案目錄大小的

1)# du -sh directory_name/ file_name, 可以顯示大小帶單位; du -s,則輸出的結果不顯示單位

 

我們也可以用# du directory_name/file_name,來檢視大小,以目錄為例,會列出目錄下所有子目錄及檔案的大小,沒有針對性,也不顯示大小單位,因此平常建議使用# du -sh

 

2) 之前我們學過用 # ls -lh,也可以檢視大小。一下圖為例/etc/passwd這個檔案用# du -sh檢視時大小顯示為4K,用#ls -lh檢視時大小為1.6K, 當檔案小於4KB的時候會顯示為4KB,這是因為磁碟分割槽格式化的時候塊的概念,磁碟會被分成小塊,一個小塊就是4KB,當檔案不夠4KB的時候也會佔用一個塊,因此一個塊只能有一個檔案。

如果使用# du -sb來看大小所顯示的內容就和# ls -lh所顯示的一樣了

3. 磁碟分割槽

日常工作中經常可以接觸到給一個系統增加一些磁碟然後給這些磁碟劃分分割槽,再進行掛載

1)增加磁碟,在工作環境中,伺服器是支援硬碟熱插拔的,但是在試驗虛擬機器環境中我們需要進行以下步驟,如圖所示。

  • 右擊虛擬機器tab,選擇設定

 

 

 

 

2)#fdisk (find disk)可以用來檢視磁碟分割槽,# fdisk -l可以列出目前系統有的磁碟,新加的磁碟需要重啟才能識別

如下圖可以看出兩塊硬碟,第二塊為1)新加的10G硬碟,磁碟名稱為/dev/sdb

注:先科普分割槽的概念-主分割槽;擴充套件分割槽;邏輯分割槽;活動分割槽;主引導扇區  

  • 主分割槽:一個硬碟的主分割槽也就是包含作業系統啟動所必需的檔案和資料的硬碟分割槽,要在硬碟上安裝作業系統,則該硬碟必須得有一個主分割槽。實際上在早期的硬碟分割槽中並沒有主分割槽、擴充套件分割槽和邏輯分割槽的概念,每個分割槽的型別都是主分割槽。由於硬碟僅僅為分割槽表保留了64個位元組的儲存空間,而每個分割槽的引數佔據16個位元組,故主引導扇區中總計只能儲存4個分割槽的資料。最多可能建立4個,當建立四個主分割槽時候,就無法再建立擴充套件分割槽了。在具體的應用中,4個磁碟分割槽往往不能滿足實際需求。為了建立更多的邏輯磁碟供作業系統使用,引入了擴充套件分割槽和邏輯分割槽,並把原來的分割槽型別稱為主分割槽。
  • 擴充套件分割槽:擴充套件分割槽是一個概念,實際上是看不到的。擴充套件分割槽也就是除主分割槽外的分割槽,但它不能直接使用,必須再將它劃分為若干個邏輯分割槽才行,擴充套件分割槽相當於邏輯分割槽的殼子,實際寫資料的是邏輯分割槽
  • 邏輯分割槽:在擴充套件分割槽上進行切割,變成一個個D盤,E盤,F盤什麼的,但是這些盤綜合起來就是一個擴充套件分割槽,這些盤是相互連結的,並不像主分割槽那樣,4個之間相互獨立互不干擾。邏輯分割槽用連結串列進行連結,如果E盤中的分割槽資訊丟掉,作業系統就找不到F盤了。
  • 活動分割槽:活動分割槽是主分割槽,活動分割槽是系統分割槽,每次PC啟動時,一塊硬碟只能有一個活動分割槽,如果要啟動windows就將windows的系統分割槽設為活動分割槽,計算機就會去那裡裝載載入程式(Ntldr或者Grub)並執行,如果要啟動Linux就將Linux的系統分割槽設為活動分割槽
  • 主引導扇區:每塊硬碟,對,每塊硬碟不是每個分割槽,都只有一個主引導扇區,即該硬碟0號柱面,0號磁頭的第一個扇區(扇區為資料儲存的最小單元),大小為512位元組。主引導扇區包含的MBR(硬碟主引導記MBR佔446bytes)、DPT(分割槽表DP佔64bytes)、MN(硬碟有效標誌Magic Numbe佔2byte。AA和55被稱為幻數(Magic Number),BOIS讀取MBR的時候總是檢查最後是不是有這兩個幻數,如果沒有就被認為是一個沒有被分割槽的硬碟),這3個區域是作業系統無關的,在每塊硬碟上都存在;MBR是一段可執行程式,由各個作業系統寫入不同的程式碼。MBR的儲存空間限制為446位元組,MBR所做的唯一的事情就是裝載第二引導裝載程式。Windows產生的MBR裝載執行PBR;GRUB產生的MBR裝載執行grldr MBR:正如上面所說的那樣,它是一段程式,長度為446位元組,作用是載入bootloader的。

 

  • 再回到linux給硬碟分割槽,之前提到的新新增的硬碟的名字為/dev/sdb,想要給/dev/sdb分割槽,使用# fdisk /dev/sdb, 進入到下圖,輸入“m”獲取幫助資訊
  • 常用的命令有:n/p/d/w/q
  • n- 新建一個分割槽
  • d-刪除一個分割槽
  • p-檢視分割槽列表
  • w-write and exit with save
  • q- exit without save

 

  • 輸入n,新建一個分割槽,可以發現如下選擇分割槽的型別: p (primary)-主分割槽;e(extended)-擴充套件分割槽(僅僅是個殼子,真正寫資料佔用空間的是邏輯分割槽);l(logical)-邏輯分割槽,與Windows系統中的概念是一樣的。用#fdisk 分割槽有一個格式或者稱謂叫MBR分割槽,傳統的分割槽方式,其特點時單個分割槽容量最大為2TB,超過便不能用# fdisk分割槽;分割槽有限。主分割槽加上擴充套件分割槽只能最多有4個,而且擴充套件分割槽最多隻能有1個。如果想要多個分割槽就在擴充套件分割槽下建立邏輯分割槽。

        主分割槽+擴充套件分割槽小於等於4

 輸入p,建立主分割槽,顯示分割槽號1-4,輸入預設分割槽號即可,起始扇區和last扇區(有時也以磁柱為單位)兩行為定義分割槽大小,再用p看,可以看到新建的主分割槽1-/dev/sdb1, 我們可以照此依次建立2-4號的主分機

 

  • 如上圖所示四個主分割槽已經建立完畢,如果我們相加擴充套件分割槽,則需要刪除一個主分割槽

       輸入命令“d”,來進行刪除,預設從4開始刪除,可以再輸入p來檢視4號主分割槽是否被刪除

再次輸入“n”,選擇擴充套件分割槽“e”,建立擴充套件分割槽,操作方式跟主分割槽一致,再用p檢視

 

注:blocks-為分割槽大小單位,單位為k;Id為分割槽型別: 83-主分割槽、邏輯分割槽,5-擴充套件分割槽 

  • 如果此時再輸入“n”,變不會再提示分割槽型別(因為分割槽數已滿),只能新增邏輯分割槽,如下圖所示

 

如果輸入“q”就是不儲存退出,退出之後可以繼續劃分(如下圖所示),先建立一個擴充套件分割槽1號分割槽,再建立一個3號分割槽主分割槽,然後再建立一個邏輯分割槽5號分割槽,我們在“p”可以發現一個規律,主分割槽號可以留空,而邏輯分割槽號則連續不可以留空並且從5號開始依次排列下去

 

  • 最後輸入“w”,儲存並推出,如果想要刪除已經儲存好的分割槽,則可以再次使用# fdisk 磁碟名稱來進行編輯分割槽

4. 磁碟格式化

在Windows系統中主要支援NTFS和FAT兩種檔案系統,現在已NTFS為主,那麼在CentOS7裡面支援預設的xfs檔案系統,可以用# cat /etc/filesystems來看系統支援的檔案系統格式,就可以發現xfs格式

在7之前的CentOS的版本中都是ext4...

 1)可以用#mount命令檢視一個分割槽的檔案系統,會列出許多分割槽,我們可以只關注以/dev開頭的分割槽,可以看出檔案系統都是xfs

2) 我們使用xfs來給新的分割槽格式化,使用# mke2fs

  • # mke2fs -t, 可以指定想要格式化的檔案系統,例如# mke2fs -t ext4 但不支援xfs
  • # mke2fs -b, 可以指定塊的大小

        一般不會把塊的大小定義的過大,例如8KB,但是如果分割槽內主要儲存高清圖片、視訊音樂等,我們就可以把塊大小設定的大一些,加速提取;但如果分割槽磁碟儲存檔案大小很小,建議制定塊大小為2048b

但在工作中保持預設4KB的大小就可以了

  • # mke2fs -m, 用來指定分割槽預留的空間大小,這個預留空間是給root的,是磁碟最大化使用,引數m後面可以跟帶小數點的值,如下圖所示,如果想要是磁碟給root使用者預留的空間為0.1%,我們就可以寫成 mke2fs -m 0.1 /dev/sdb1

        #mke2fs -m 1 /dev/sdb1 = # mkfs.ext4 -m 1 /dev/sdb1

        但是檔案系統xfs不支援這種用法

在我們格式化的時候可以發現下圖highlight出來的那一行,大概為1個inode對應4個塊,也就是一個inode對應16384byte

 

我們可以用# mke2fs -i來制定多少個位元組來對應一個inode, 例如 # mke2fs -i 8192 -t ext4 /dev/sdb1, 來制定分割槽中8192b來對應一個inode,相比上圖inode數量變多了

 

3)命令# mkfs. 檔案系統名稱 分割槽名,也可以達到# mke2fs的效果,並支援xfs檔案系統

mke2fs -t ext4 等同於命令 mkfs.ext4

引數-f, 可以強制覆蓋已格式化好的檔案系統, mkfs. xfs -f /dev/sdb1

 4)現在我們用#mount是無法檢視/dev/sdb1分割槽的檔案系統,是由於檔案系統並沒掛載到任何掛載點上,但是可以用# blkid 分割槽名,來檢視沒有掛載的分割槽

5. 磁碟掛載

只有格式化之後才可以掛載檔案系統,磁碟若想訪問必須掛載到一個掛載點上,掛載點就是目錄

1)# mount, 可以用來掛載掛載點, # mount 碟符/分割槽號 掛載點; # mount /dev/sdb /mnt, 在格式化好的分割槽掛載掛載點之前,我們用# df -l, 是無法檢視到新加入的磁碟的,但是/dev/sdb掛載到/mnt/目錄下之後,就可以看到新的磁碟分割槽了

如下圖

2)可以用# umount 碟符、分割槽號、掛載目錄,三者中任何一個都可以來解除安裝掛載點

如果目前處於想要解除安裝的掛載點下,系統會提示目前目錄忙,我們可以用# mount -l來強制解除安裝

3)# mount命令下default的選項有rw (read& write), suid(可以設定set_uid許可權), dev, exec(是否可執行), auto(自動掛載), nouser(不允許普通使用者掛載), and async(不會實時把記憶體的寫入內容重複到磁碟中,與sync對應)

  • # mount -o (option)-remount, rw /dev/foo /dir 用來重新掛載
  • # mount -ro (read only)/ rw (read & write)

4)/etc/fstab下面包括了一個系統開機自動掛載的磁碟、分割槽,我們用# vi /etc/fstab,來進行編輯,可以發現以下內容

  • 第一列為裝置號,除了UUID (Universally Unique Identifier)我們也可以寫磁碟分割槽如/dev/sdb

      可以用# blkid, 來檢視UUID,每一個掛載的分割槽都有一個UUID,可以用來掛載或更改fstab的配置檔案

  • 第二列,掛載點
  • 第三列為分割槽格式
  • 第四列掛載選項,defaults不要改,保持預設即可
  • 第五列,系統備份,保持為0即可,This field is used for these filesystems by the dump(8) command to determine which filesystems need  to be dumped
  • 第六列,設定優先順序,來使系統重啟時來檢測磁碟是否有問題的,總共有0、1、2

man etc/fstab下的解釋:

This field is used by fsck program to determine the order in which the system checks are done at reboot time.

          The  root  filesystem  should be specified with a fs_passno of 1, and other filesystems should have a fs_passno of 2;Filesystems within a drive will be checked sequentially, but filesystems on  different drives will be checked at the same time to utilize parallelism available in the hardware.

              If the sixth field is not present or zero, a value of zero is returned and fsck will  assume  that  the filesystem does not need to be checked.

          注: #man 不僅可以檢視命令,也可以檢視配置檔案,檢視配置檔案時,不需要寫絕對路徑, man+配置檔名就可以了

6. 手動增加SWAP空間

如果我們想設定一個100M的磁碟小分割槽,可以寫成 #dd if=/dev/zero of=/tmp/newdisk bs=1M count=100

注:/dev/zero/ 是Linux系統核心中的造零器,代表一個永遠輸出 0的裝置檔案,使用它作輸入可以得到全為空的檔案。因此可用來建立新檔案和以覆蓋的方式清除舊檔案。上面的命令使用dd命令將從zero裝置中建立一個100M大小(bs決定每次讀入輸出1M,count定義讀寫次數為100次),但內容全為0的檔案。(來自https://blog.csdn.net/liaomin416100569/article/details/6673209)

2)建立好磁碟之後,需要給磁碟格式化,用# mkswap -f /tmp/newdisk

 

3)然後再用# swapon, 來進行掛載,# swapon /tmp/newdisk, 前後可以使用# free -m來檢視是否swap容量有變。我們可以看到從1906M變成了2006,增加了100M

 

4)如果想要解除安裝使用# swapoff,就可以。# swapoff /tmp/newdisk,在用# free -m檢視發現swap空間少了100M

 

7. LVM

那個可以方便的給磁碟空間做擴容和縮容,但是存在侷限性,例如在檔案受到損害需要恢復時,由於LVM的複雜性,恢復起來存在難度.

如下圖所示有兩塊硬碟,A/B,A上有兩個分割槽,B有一個分割槽,三個分割槽為物理卷,再組成卷組(物理卷-磁碟分割槽的集合),在卷組的基礎上分成邏輯卷,再格式化,再掛載

 1)首先準備磁碟分割槽

 

2) 建立物理卷,使用# pvcreate (physical volume create), 先安裝 # yum install -y lvm

注: 我們可以用# yum provides "/*/command",來安裝命令,例如# yum provides "/*/pvcreate"

可以用# pvdiskplay or pvs來檢視所有的物理卷

3)建立卷組, # vgcreate (volume group create) 語法為 # vgcreate (卷組名)(要新增的物理卷)

用# vgdiskplay or vgs來檢視卷組

# vgremove, 來刪除卷組

4)建立邏輯卷, # lvcreate -L (指定大小) -n (name)volumegroup_name (從哪個卷組裡面劃分)

5)格式化 # mkfs. ext4 /dev/vg1/lv1

注:xfs的檔案系統會影響之後的擴容或者縮容的操作,因此最好使用ext4檔案系統

6)進行掛載,例如# mount /dev/vg1/lv1 /mnt/

注:在掛載完成後,我們可以發現掛載的目錄變成了/dev/mapper/vg1-lv1, 但是用# ls檢視,可以發現/dev/vg1/lv1 和/dev/mapper/vg1-lv1指向的是同一個檔案

7)邏輯卷擴容

  • ext檔案系統的擴容,需要先解除安裝,在進行擴容;xfs系統則不需要解除安裝,可以直接擴容

 

  • xfs檔案系統的擴容

先執行 # lvresize -L 300M /dev/vg1/lv1, 再執行 xfs_growfs /dev/vg1/lv1

再用df 檢視可發現邏輯卷容量以變

注: xfs不支援縮容

8)縮容

 具體操作步驟如下,最後還需重新掛載

9)擴容卷組

擴容邏輯卷的最大限度為卷組的大小,因此我們可以把沒有使用的/dev/sdb3加到vg1中, # vgextend /dev/sdb3, 然後在進行對lv1的擴容

8. 磁碟故障小案例

在我們開機的時候如若發現以下不正常的介面,則有可能是磁碟掛載出現問題

1)輸入root密碼

2)修改/ect/fstab,用“dd”來刪除下圖中highlight出來的磁碟掛載,然後再進行reboot,應該就沒有問題了