歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux學習筆記(三):磁盤和文件系統管理

Linux學習筆記(三):磁盤和文件系統管理

日期:2017/3/1 17:53:04   编辑:Linux技術

管理磁盤和文件系統

介紹了基本的文件和目錄管理之後,接下來就是磁盤和文件系統的管理。如何分區磁盤和創建文件系統呢?

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

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

fdisk -l [磁盤設備]


復制代碼代碼如下:
[root@localhost ~]# fdisk -l ==>查看目前系統內的所有分區 (這裡顯示的結果與在交互模式下P命令是相同的,後面講)</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes ==>磁盤的文件名與容量
heads, 63 sectors/track, 2610 cylinders ==>磁頭、扇區與柱面大小
Units = cylinders of 16065 * 512 = 8225280 bytes ==>每個柱面的大小</p> <p> 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 ==>進入交互操縱模式,注意這裡不要寫具體的數字</p> <p>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)</p> <p>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 作用相同</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes</p> <p> 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</p> <p>Command (m for help): d
Partition number (1-5): 4 ==>刪除第4個分區</p> <p>Command (m for help): d ==>刪除第3個分區
Partition number (1-4): 3</p> <p>Command (m for help): p ==>再次顯示時觀察下面只顯示了前兩個分區,第5個沒顯示</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes</p> <p> Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 1288 10241437+ 83 Linux</p> <p>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</p> <p>Command (m for help): p ==>再次查看分區表,發現多了一個剛從建立的分區4</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes</p> <p> 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</p> <p>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</p> <p>Command (m for help): p</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes</p> <p> 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</p> <p>Partition table entries are not in disk order</p> <p>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</p> <p>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</p> <p>Command (m for help): p</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes</p> <p> 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</p> <p>Partition table entries are not in disk order</p> <p>Command (m for help): q ==>這裡一定要按q啊,因為我剛才僅僅是演示操作,還破壞性的刪除了2個分區,你要是真要分區,那就要按w保存了。</p> <p>[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
  

如有錯誤,請指正,3Q~

Copyright © Linux教程網 All Rights Reserved