1. 程式人生 > >Linux學習筆記四【磁盤和文件系統管理篇】

Linux學習筆記四【磁盤和文件系統管理篇】

tro swapon art strong 調整 檢查 系統目錄 height res

 添加磁盤並進行分區、創建並掛載文件系統

  1、確認系統中的磁盤命令——fdisk

   fdisk -l [磁盤設備]

[root@localhost ~]# fdisk -l  ==>查看目前系統內的所有分區 (這裏顯示的結果與在交互模式下P命令是相同的,後面講)

Disk /dev/hda: 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/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        1288    10241437+  83  Linux
/dev/hda3            1289        1925     5116702+  83  Linux
/dev/hda4            1926        2610     5502262+   5  Extended
/dev/hda5            1926        1989      514048+  82  Linux swap / Solaris      

上述各字段的含義:

Device:分區的設備文件名稱 Boot:是否是引導分區,即開機區,若是,則用“*”標識

Start :開始柱面,即該分區在硬盤中的起始位置 End :結束柱面,即該分區在硬盤中的結束位置

Blocks:分區的大小,以Blocks(塊)為單位,默認的塊大小為1024字節,即1KB

Id:分區類型的ID標記號,對於EXT3分區為83,LVM分區為8e System:分區類型,即磁盤分區內的系統

  2、規劃硬盤中的分區——fdisk

  fdisk [磁盤設備]

  使用此命令可進入交互操縱,您可以在下面的交互操縱裏面胡作非為,但是切記離開時必須按q命令,不能按w

#找出系統中所在根目錄所在磁盤,並查閱該硬盤內的相關信息
[root@localhost ~]# df / <==重點找出磁盤文件名而已 文件系統 1K-塊 已用 可用 已用% 掛載點 /dev/hda2 9920624 2968604 6439952 32% / [root@localhost ~]# fdisk /dev/hda ==>進入交互操縱模式,註意這裏不要寫具體的數字 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 <==等待輸入,m是命令菜單 Command action a toggle a bootable flag b edit bsd disklabel 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 ==>不存儲,直接離開fdisk程序 s create a new empty Sun disklabel t change a partition‘s system id 變更分區類型 u change display/entry units v verify the partition table w write table to disk and exit ==>將剛才的操作寫入分區表,慎重操作 x extra functionality (experts only)

常見操作有:創建主分區、創建擴展分區(將硬盤的所有剩余空間作為擴展分區)、創建邏輯分區、改變分區的系統代碼、保存分區表信息、用partprobe探測硬盤分區變化

下面舉出幾例做測試,離開時不保存:

 Command (m for help): p  ==>查看磁盤分區表,和終端命令模式下的fdisk -l 作用相同

Disk /dev/hda: 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/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        1288    10241437+  83  Linux
/dev/hda3            1289        1925     5116702+  83  Linux
/dev/hda4            1926        2610     5502262+   5  Extended
/dev/hda5            1926        1989      514048+  82  Linux swap / Solaris

Command (m for help): d  
Partition number (1-5): 4   ==>刪除第4個分區

Command (m for help): d    ==>刪除第3個分區
Partition number (1-4): 3

Command (m for help): p  ==>再次顯示時觀察下面只顯示了前兩個分區,第5個沒顯示

Disk /dev/hda: 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/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        1288    10241437+  83  Linux

Command (m for help): n  ==>創建一個分區
Command action
   e   extended
   p   primary partition (1-4)
p  ==>選擇創建的分區類型為主分區
Partition number (1-4): 4 ==>選擇4號做主分區
First cylinder (1289-2610, default 1289): 
Using default value 1289   ==>起始柱面若直接按enter鍵就是使用默認值
Last cylinder or +size or +sizeM or +sizeK (1289-2610, default 2610): +512M

Command (m for help): p  ==>再次查看分區表,發現多了一個剛從建立的分區4

Disk /dev/hda: 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/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        1288    10241437+  83  Linux
/dev/hda4            1289        1351      506047+  83  Linux

Command (m for help): n  ==>再建一個分區
Command action
   e   extended
   p   primary partition (1-4)
e   ==>建立擴展分區
Selected partition 3  ==>這個是系統主動選擇的分區
First cylinder (1352-2610, default 1352): 
Using default value 1352
Last cylinder or +size or +sizeM or +sizeK (1352-2610, default 2610): 
Using default value 2610

Command (m for help): p

Disk /dev/hda: 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/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        1288    10241437+  83  Linux
/dev/hda3            1352        2610    10112917+   5  Extended  ==>看,剛新建的擴展分區
/dev/hda4            1289        1351      506047+  83  Linux

Partition table entries are not in disk order

Command (m for help): n  ==>再多建幾個分區玩玩,反正後面不保存就行了,,呵呵
First cylinder (1352-2610, default 1352): 
Using default value 1352
Last cylinder or +size or +sizeM or +sizeK (1352-2610, default 2610): +2084
Value out of range.
Last cylinder or +size or +sizeM or +sizeK (1352-2610, default 2610): +2084M

Command (m for help): n   ==>有沒有發現,最後建立2個分區的時候根本沒有詢問我們要建立是主分區還是擴展分區,為啥?因為分區已經超過4了,您別無選擇,只能是擴展分區了。。。
First cylinder (1606-2610, default 1606): 
Using default value 1606
Last cylinder or +size or +sizeM or +sizeK (1606-2610, default 2610): 
Using default value 2610

Command (m for help): p

Disk /dev/hda: 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/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        1288    10241437+  83  Linux
/dev/hda3            1352        2610    10112917+   5  Extended
/dev/hda4            1289        1351      506047+  83  Linux
/dev/hda5            1352        1605     2040223+  83  Linux  ==>這是後面又新建的2個分區
/dev/hda6            1606        2610     8072631   83  Linux

Partition table entries are not in disk order

Command (m for help): q  ==>這裏一定要按q啊,因為我剛才僅僅是演示操作,還破壞性的刪除了2個分區,你要是真要分區,那就要按w保存了。

[root@localhost ~]# 

  磁盤分好區後,要更新下內核,否則您使用fdisk -l 可能看不到分區後的變化,只有重啟才可以。但是使用partprobe強制讓內核重新找一次分區表就行了。

[root@localhost ~]# partprobe [/dev/hda ]   <==強制讓內核重新找一次分區表,則可以立刻看出分區的變化

註意:普通用戶沒有權限進行硬盤分區,只有root用戶可以,但最好是在單用戶模式下比較安全,此外,在進行分區的時候,若該硬盤某個分區正在使用當中,則很有可能系統內核會無法加載硬盤的分區表,解決的方法就是將該使用中的分區給卸載,然後再重新分區一次,重新寫入分區表。

3、在分區中創建文件系統——mkfs,mkswap

  (1)、mkfs

用途:make filesystem,創建文件系統,即格式化

  格式:mkfs -t 文件系統類型 分區設備 (-t選項表示可以接受的文件系統格式,如ext3,ext2,vfat等,通常情況下不需要加次選項,因為系統可自動判斷使用的是什麽文件系統)

技術分享圖片

  上述由於設備/dev/hda3已經掛載了,所我無法再掛載,但可以卸載後再掛載,不做演示。

(2)、mkswap

  用途:make swap ,創建文件系統交換系統

  格式:mkswap 分區設備

1)在Linux系統中,SWAP分區的作用類似於Windows系統中“虛擬內存”,可以在一定程度上緩解物理內存不足的情況 2)如果系統沒有SWAP交換分區,或者現有交換分區的容量不夠用,可以通過mkswap命令創建交換文件系統以增加虛擬內存 3)交換分區空間的啟用、停用需要使用swapon、swapoff命令,free命令可以查看物理內存、交換空間的使用情況 4)“swapon -s”命令也可查看交換分區的使用情況
[root@localhost ~]# mkswap /dev/hda5   ==>格式化交換分區
Setting up swapspace version 1, size = 526381 kB
[root@localhost ~]# swapon /dev/hda5  ==>啟用交換分區
[root@localhost ~]# free | grep -i swap   ==>查看交換空間
Swap:       514040          0     514040
[root@localhost ~]# swapoff /dev/hda5  ==>停用交換空間
[root@localhost ~]#  free | grep -i swap
Swap:            0          0          0
[root@localhost ~]# 
將新硬盤分好區以後,還需要對分區進行格式化(即創建文件系統),並掛載到Linux系統中的指定目錄下,然後才能用於存儲文件、目錄等數據。並且掛載點一定是目錄,該目錄為進入文件系統的入口。因此,並不是您有任何文件都能使用,必須要掛載到某個目錄樹的某個目錄後,才能使用文件系統。

  4、掛載、卸載文件系統——mount,umount

  (1)mount

  用途:掛載文件系統、ISO鏡像到指定文件夾

  格式: mount [ -t 類型 ] 存儲設備 掛載點目錄 (”-t 類型“的選項通常可以省略,大多數Linux系統能夠自動識別對應的文件系統類型)

mount -o loop ISO鏡像文件 掛載點目錄

   (2)umount

   用途:卸載已掛載的文件系統    格式: umount 存儲設備位置

umount 掛載點目錄

  (3)查看已掛載分區的使用情況(df -hT) 

[root@localhost ~]# df -hT   ==>查看現有已掛在分區使用情況
文件系統      類型    容量  已用 可用 已用% 掛載點
/dev/hda2     ext3    9.5G  2.9G  6.2G  32% /
/dev/hda3     ext3    4.8G  195M  4.3G   5% /home
/dev/hda1     ext3     99M   11M   83M  12% /boot
tmpfs        tmpfs    506M     0  506M   0% /dev/shm
[root@localhost ~]# mount /dev/hda3 /home/jzhou  ==>將設備/dev/hda3掛載到目錄/home/jzhou下
[root@localhost ~]# df -hT   ==>再次查看掛載情況
文件系統      類型    容量  已用 可用 已用% 掛載點
/dev/hda2     ext3    9.5G  2.9G  6.2G  32% /
/dev/hda3     ext3    4.8G  195M  4.3G   5% /home
/dev/hda1     ext3     99M   11M   83M  12% /boot
tmpfs        tmpfs    506M     0  506M   0% /dev/shm
/dev/hda3     ext3    4.8G  195M  4.3G   5% /home/jzhou   ==>看,這裏多了一個掛載點
[root@localhost ~]# umount /dev/hda3  ==>卸載剛才的掛載
[root@localhost ~]# df -hT    ==>再次查看沒有了,已成功卸載
文件系統      類型    容量  已用 可用 已用% 掛載點
/dev/hda2     ext3    9.5G  2.9G  6.2G  32% /
/dev/hda3     ext3    4.8G  195M  4.3G   5% /home
/dev/hda1     ext3     99M   11M   83M  12% /boot
tmpfs        tmpfs    506M     0  506M   0% /dev/shm
[root@localhost ~]# 

  另外光驅和鏡像的掛載只是略有不同,語法其實是一樣的,光盤設備一般是/dev/cdrom或者/dev/hdc,鏡像嘛,很明顯是iso格式的壓縮包,掛載鏡像時要加 -o loop選項,具體用法網上很多。

5、設置文件系統自動掛載——修改配置文件

  系統中的“/etc/fstab”文件可以視為mount命令的配置文件,它包含了需要開機後自動掛載的文件系統目錄。

技術分享圖片

  查看一下這個文件的內容如上,其中各個字段的含義如下(前三個字段很重要):

  第一個字段:設備位置

  第二個字段:掛載點目錄

  第三個字段:文件系統類型

  第四個字段:掛載參數,即mount命令“-o”選項後面可使用的參數

  第五個字段:表示文件系統是否需要dump備份(dump是一個備份工具),一般設為1時表示需要,設為0時將被dump所忽略

第六字段:該數字用於決定在系統啟動時進行磁盤檢查的順序,0不進行檢查,1優先,2其次。對於根分區應設為1,其它分區設為2

  設置自動掛載示例:即每次重新開機後,能自動完成掛載。

  進入vim 編輯內容,將設備proc的掛載點由/proc改為/home/jzhou,並保存退出:

技術分享圖片

  則再次啟動時,會自動掛載到相應目錄,上述是演示,之後我又改回來了。

  說明:

  (1)在/etc/fstab文件中正確設置了相應分區的自動掛載記錄以後,手動掛載、卸載該分區時,僅需指定設備名、掛載點中的任意一個作為參數即可,例如,執行“mount /dev/sdb1”或者“umount /mailbox”都可以完成卸載   (2)mount命令不帶任何選項、參數時,可以顯示當前系統中已經掛載的文件系統信息    LVM簡單介紹     Logical Volume Manager,邏輯卷管理     屏蔽了底層磁盤布局,便於動態調整磁盤容量    (需要註意:p /boot分區用於存放引導文件,不能應用LVM機制)   1、LVM機制的基本概念   (1)PV(Physical Volume,物理卷)    整個硬盤,或使用fdisk等工具建立的普通分區    包括許多默認4MB大小的PE(Physical Extent,基本單元)   (2)VG(Volume Group,卷組)    一個或多個物理卷組合而成的整體   (3)LV(Logical Volume,邏輯卷)    從卷組中分割出的一塊空間,用於建立文件系統   它們的邏輯關系如下: 技術分享圖片   我想您已經知道了為什麽要存在這個LVM機制了,同大多數虛擬化的東西作用相似,最核心的還是PV,即真實的物理卷,將,多個物理卷組成一個卷組,之後是對這些卷組劃分卷,這時與PV完全無關了,這能很好的利用容量和空間,而且當有新的物理卷加入時,只需將其加入邏輯卷就行了。這個機制很像網絡裏面劃分VLAN呢。 LVM的管理命令主要有以下:   

功能

物理卷管理

卷組管理

邏輯卷管理

Scan 掃描

pvscan

vgscan

lvscan

Create 建立

pvcreate

vgcreate

lvcreate

Display 顯示

pvdisplay

vgdisplay

lvdisplay

Remove 刪除

pvremove

vgremove

lvremove

Extend 擴展

vgextend

lvextend

          主要命令的用法:     pvcreate 設備名     vgcreate 卷組名 物理卷名1 物理卷名2     lvcreate -L 大小 -n 邏輯卷名 卷組名      lvextend -L +大小 /dev/卷組名/邏輯卷名   創建邏輯卷的基本步驟:PV->VG->LV->格式化->掛載使用文件系統   具體步驟:(我的虛擬機不能演示,bash中沒有這個pvcreate命令,簡單作下理論說明)   (1)、轉換物理卷   1)使用fdisk命令規劃兩個分區 fdisk -l /dev/hda /dev/hdb | grep "LVM"   2)使用pvcreate命令轉換上述分區為物理卷     pvcreate /dev/hda1 pvcreate /dev/hdb1   (2)、創建卷組   vgcreate vg_test /hda1 /dev/hdb1   (3)、創建邏輯卷    1)使用lvcreate命令創建邏輯卷lv_test,從卷組vg_test上劃出10G空間     lvcreate -L 10G -n lv_test vg_test    2)使用mkfs命令創建ext3文件系統      mkfs -t ext3 /dev/vg_test/lv_test   (4)、格式化為ext3文件系統,並掛載到目錄/dirtest    mount /dev/vg_test/lv_test /dirtest   (5)、還可以為邏輯卷擴容    1)使用lvextend命令為邏輯卷lv_test擴充容量,從卷組vg_test上再劃出10G給邏輯卷lv_test     lvextend -L +10G /dev/vg_test/lv_test    2)使用resize2fs命令更新系統識別的文件系統大小     resize2fs /dev/vg_test/lv_test

Linux學習筆記四【磁盤和文件系統管理篇】