Linux雲端計算-06_Linux磁碟管理
1 計算機硬碟簡介
硬碟是計算機主要儲存媒介之一,由一個或者多個鋁製或者玻璃制的碟片組成,碟片外覆蓋有鐵磁性材料,硬碟內部由磁軌、柱面、扇區、磁頭等部件組成,如圖所示:
Linux系統中硬體裝置相關配置檔案存放在/dev下,常見硬碟命名:/dev/hda、/dev/sda、/dev/sdb、/dev/sdc、/dev/vda。不同硬碟介面,在系統中識別的裝置名稱不一樣。
IDE硬碟介面在Linux中裝置名為/dev/hda,SAS、SCSI、SATA硬碟介面在Linux中裝置名為sda,高效雲盤硬碟介面會識別為/dev/vda等。
檔案儲存在硬碟上,硬碟的最小儲存單位叫做Sector(扇區),每個Sector儲存512位元組。作業系統在讀取硬碟的時候,不會逐個Sector的去讀取,這樣效率非常低,為了提升讀取效率,作業系統會一次性連續讀取多個Sector,即一次性讀取多個Sector稱為一個Block(塊)。
由多個Sector組成的Block是檔案存取的最小單位。Block的大小常見的有1KB、2KB、4KB,Block在Linux中常設定為4KB,即連續八個Sector組成一個Block。
可以透過如下方法檢視Linux分割槽的Block大小:
[root@superman-vm01 ~]# stat /boot | grep "IO Block"
Size: 4096 Blocks: 8 IO Block: 4096 directory
[root@superman-vm01 ~]#
例如建立一個普通檔案,檔案大小為10Bytes,而預設設定Block為4K,如果有1萬個小檔案,由於每個Block只能存放一個檔案,如果檔案的大小比Block大,會申請更多的Block,相反如果檔案的大小比預設Block小,仍會佔用一個Block,這樣剩餘的空間會被浪費掉。
-
1萬個檔案理論只佔用空間大小:10000x10=100000Bytes=97.65625MBytes;
-
1萬個檔案真實佔用空間大小:10000x4096Bytes=40960000Bytes=40000MBytes=40GB;
-
根據企業實際需求,此時可以將Block設定為1K,從而節省更多的空間。
2 硬碟Block及Inode詳解
通常而言,作業系統對於檔案資料的存放包括兩個部分:檔案內容、許可權及檔案屬性。作業系統檔案存放是基於檔案系統,檔案系統會將檔案的實際內容儲存到Block中,而將許可權與屬性等資訊存放至Inode中。
在硬碟分割槽中,還有一個超級區塊 (SuperBlock) ,SuperBlock會記錄整個檔案系統的整體資訊,包括Inode、Block總量、使用大小、剩餘大小等資訊,每個inode與block都有編號對應,方便Linux系統快速定位查詢檔案。
-
Superblock:記錄檔案系統的整體資訊,包括inode與block的總量、使用大小、剩餘大小, 以及檔案系統的格式與相關資訊等;
-
Inode:記錄檔案的屬性,許可權,同時會記錄該檔案的資料所在的block編號;
-
Block:儲存檔案的內容,如果檔案超過預設Block大小,會自動佔用多個Block。
因為每個inode與block都有編號,而每個檔案都會佔用一個inode ,inode內則有檔案資料放置的block號碼。如果能夠找到檔案的inode,就可以找到該檔案所放置資料的block號碼,從而讀取該檔案內容。
作業系統進行格式化分割槽時,作業系統自動將硬碟分成兩個區域。一個是資料Block區,用於存放檔案資料;另一個是Inode Table區,用於存放inode包含的元資訊。
每個inode節點的大小,可以在格式化時指定,預設為128Bytes或256Bytes,/boot分割槽Inode預設為128Bytes,其它分割槽預設為256Bytes,檢視Linux系統Inode方法如下:
[root@superman-vm01 ~]# stat /boot | grep "Inode"
Device: 801h/2049d Inode: 64 Links: 5
[root@superman-vm01 ~]#
3 硬連結介紹
一般情況下,檔名和inode編號是一一對應的關係,每個inode號碼對應一個檔名。但UNIX/Linux系統多個檔名也可以指向同一個inode號碼。這意味著可以用不同的檔名訪問同樣的內容,對檔案內容進行修改,會影響到所有檔名。但刪除一個檔名,不影響另一個檔名的訪問。這種情況就被稱為硬連結(hard link)。
建立硬連結的命令為:ln superman1.txt superman2.txt,其中superman1.txt為原始檔,superman2.txt為目標檔案。如上命令原始檔與目標檔案的inode號碼相同,都指向同一個inode。inode資訊中有一項叫做"連結數",記錄指向該inode的檔名總數,這時會增加1,變成2,如圖7-3所示:
同樣刪除一個superman2.txt檔案,就會使得superman1.txt inode節點中的"連結數"減1。如果該inode值減到0,表明沒有檔名指向這個inode,系統就會回收這個inode號碼,以及其所對應block區域,如圖所示:
實用小技巧:硬連結不能跨分割槽連結,硬連結只能對檔案生效,對目錄無效,也即是目錄不能建立硬連結。硬連結原始檔與目標檔案共用一個inode值,從某種意義上來,節省inode空間。不管是單獨刪除原始檔還是刪除目標檔案,檔案內容始終存在。同時連結後的檔案不佔用系統多餘的空間。
4 軟連結介紹
除了硬連結以外,還有一種連結-軟連結。檔案superman1.txt和檔案superman2.txt的inode號碼雖然不一樣,但是檔案superman2.txt的內容是檔案superman1.txt的路徑。讀取檔案superman2.txt時,系統會自動將訪問者導向檔案superman1.txt。
無論開啟哪一個檔案,最終讀取的都是檔案superman1.txt。這時,檔案superman2.txt就稱為檔案superman1.txt的"軟連結"(soft link)或者"符號連結(symbolic link)。
檔案superman2.txt依賴於檔案superman1.txt而存在,如果刪除了檔案superman1.txt,開啟檔案superman2.txt就會報錯:"No such file or directory"。
軟連結與硬連結最大的不同是檔案superman2.txt指向檔案superman1.txt的檔名,而不是檔案superman1.txt的inode號碼,因此檔案superman1.txt的inode連結數不會發生變化,如圖所示:
實用小技巧:軟連結可以跨分割槽連結,軟連結支援目錄同時也支援檔案的連結。軟連結原始檔與目標檔案Inode不相同,從某種意義上來說,會消耗inode空間。不管是刪除原始檔還是重啟系統,該軟連結還存在,但是檔案內容會丟失,一旦新建源同名檔名,軟連結檔案恢復正常。
5 Linux下磁碟實戰操作命令
企業真實場景由於硬碟常年大量讀寫,經常會出現壞盤,需要更換硬碟。或者由於磁碟空間不足,需新增新硬碟,新新增的硬碟需要經過格式化、分割槽才能被Linux系統所使用,虛擬機器CentOS 7 Linux模擬真實伺服器新增一塊新硬碟,不需要關機,直接插入用硬碟即可,一般硬碟均支援熱插拔功能。企業中新增新硬碟的操作流程如下:
5.1 fdisk分割槽命令引數
常用引數包括m、n、p、e、d、w。
b 編輯bsd disklabel;
c 切換dos相容性標誌;
d 刪除一個分割槽;
g 建立一個新的空GPT分割槽表;
G 建立一個IRIX(SGI)分割槽表;
l 列出已知的分割槽型別;
m 列印幫助選單;
n 新增一個新分割槽;
o 建立一個新空DOS分割槽表;
p 列印分割槽表資訊;
q 退出而不儲存更改;
s 建立一個新的空的Sun磁碟標籤;
t 更改分割槽的系統ID;
u 更改顯示/輸入單位;
v 驗證分割槽表;
w 將分割槽表寫入磁碟並退出;
x 額外功能。
5.2 檢測識別的硬碟裝置
新新增硬碟被識別為/dev/sdb,如果有多塊硬碟,會依次識別成/dev/sdc、/dev/sdd等裝置名稱,如圖所示:
fdisk -l
5.3 建立磁碟分割槽
基於新硬碟/dev/sdb裝置,建立磁碟分割槽/dev/sdb1,如圖所示:
fdisk /dev/sdb
5.4 建立/dev/sdb1分割槽方法
fdisk /dev/sdb,然後按n-p-1-Enter鍵-Enter鍵-Enter鍵-w,最後執行fdisk -l|head -10,如圖(a)、圖(b)所示:
(a)fdisk /dev/sdb建立/dev/sdb1分割槽
(b) fdisk –l檢視/dev/sdb1分割槽
5.5 格式化分割槽
mkfs.xfs /dev/sdb1格式化磁碟分割槽,如圖所示:
5.6 掛載分割槽
/dev/sdb1分割槽格式化後,使用mount命令掛載到/data/目錄,並加入/etc/fstab開機啟動,如圖所示:
# 建立/data/資料目錄
mkdir /data
# 掛載/dev/sdb1分割槽至/data/目錄
mount /dev/sdb1 /data
# 檢視磁碟分割槽詳情
df -h
# 開機自動掛載(永久掛載)
echo "/dev/sdb1 /data xfs defaults 0 0" >>/etc/fstab
6 基於GPT格式磁碟分割槽
MBR分割槽標準決定了MBR只支援在2TB以下的硬碟,為了支援能使用大於2T硬碟空間,需使用GPT格式進行分割槽。建立大於2TB的分割槽,需使用parted工具。
在企業真實環境中,通常一臺伺服器有多塊硬碟,整個硬碟容量可能為10T,需要基於GTP格式對10T硬碟進行分割槽,操作步驟如下:
# 新建/dev/sdb的磁碟標籤型別為GPT
parted /dev/sdb mklabel gpt
# 將/dev/sdb整個空間分給同一個分割槽
parted /dev/sdb mkpart primary 0 100%
# 忽略警告
ignore
# 格式化分割槽
mkfs.xfs /dev/sdb1
# 建立掛載目錄
mkdir /data
# 臨時掛載
mount /dev/sdb1 /data
# 開機自動掛載(永久掛載)
echo "/dev/sdb1 /data xfs defaults 0 0" >>/etc/fstab
6.1 檢測識別的硬碟裝置
fdisk -l
如圖所示,假設/dev/sdb 為10T硬碟,使用GPT格式來格式化磁碟:
6.2 設定分割槽型別為GPT格式
6.2.1 非互動方式
執行命令:parted -s /dev/sdb mklabel gpt和parted /dev/sdb mkpart primary 0 100%如圖所示:
6.2.2 互動方式
parted命令列也可以進行分割槽,如圖(a)、(b)、(c)所示:
parted > select /dev/sdb > mklabel gpt > mkpart primary 0 -1 > print > quit
6.3 格式化磁碟
基於mkfs.xfs /dev/sdb格式化磁碟,如圖所示:
6.4 掛載分割槽
建立掛載目錄並掛載:
7 Mount命令工具
Mount命令工具主要用於將裝置或者分割槽掛載至Linux系統目錄下,Linux系統在分割槽時,也是基於mount機制將/dev/sda分割槽掛載至系統目錄,將裝置與目錄掛載之後,Linux作業系統方可進行檔案的儲存。
7.1 Mount命令引數詳解
如下為企業中Mount命令常用引數詳解:
mount [-Vh]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
-V: 顯示mount工具版本號;
-l: 顯示已載入的檔案系統列表;
-h: 顯示幫助資訊並退出;
-v: 輸出指令執行的詳細資訊;
-n: 載入沒有寫入檔案/etc/mtab中的檔案系統;
-r: 將檔案系統載入為只讀模式;
-a: 載入檔案/etc/fstab中配置的所有檔案系統;
-o: 指定mount掛載擴充套件引數,常見擴充套件指令:rw、remount、loop等,其中-o相關指令如下:
-o atime: 系統會在每次讀取文件時更新文件時間;
-o noatime: 系統會在每次讀取文件時不更新文件時間;
-o defaults: 使用預設的選項 rw,suid,dev,exec,auto,nouser等;
-o exec 允許執行檔被執行;
-o user、-o nouser: 使用者可以執行 mount/umount的動作;
-o remount: 將已掛載的系統分割槽重新以其他再次模式掛載;
-o ro: 只讀模式掛載;
-o rw: 可讀可寫模式掛載;
-o loop 使用loop模式,把檔案當成裝置掛載至系統目錄。
-t: 指定mount掛載裝置型別,常見型別nfs、ntfs-3g、vfat、iso9660等,其中-t相關指令如下:
iso9660 光碟或光碟映象;
msdos Fat16檔案系統;
vfat Fat32檔案系統;
ntfs NTFS檔案系統;
ntfs-3g 識別行動硬碟格式;
smbfs 掛載Windows檔案網路共享;
nfs Unix/Linux檔案網路共享。
7.2 企業常用Mount案例
Mount常用案例如下:
7.2.1 掛載/dev/sdb1分割槽至/data/目錄
mount /dev/sdb1 /data
7.2.2 掛載cdrom光碟至/mnt目錄
mount /dev/cdrom /mnt
7.2.3 掛載/dev/sdb1行動硬碟至/data目錄
mount -t ntfs-3g /dev/sdb1 /data
注意: 如果提示未知的檔案系統型別“ntfs”,請執行”yum install -y ntfs-3g“安裝ntfs-3g軟體包。
7.2.4 重新以讀寫模式掛載/系統
mount -o remount,rw /
7.2.5 將CentOS-7-x86_64-DVD-1810.iso映象檔案掛載至/mnt目錄
mount -t iso9660 -o loop CentOS-7-x86_64-DVD-1810.iso /mnt
7.2.6 將隨身碟/dev/sdd1掛載至/mnt/目錄
mount -t vfat /dev/sdb1 /mnt
7.2.7 將遠端192.168.1.182:/data目錄掛載至本地/data目錄
mount -t nfs 192.168.1.182:/data/ /data
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/291614/viewspace-2780961/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 雲端計算管理的功能是什麼?Linux雲端計算學習Linux
- Linux雲端計算-05_Linux軟體包管理Linux
- 雲端計算和Linux什麼關係?linux雲端計算Linux
- 千峰Linux雲端計算-徐磊-檔案管理Linux
- Linux雲端計算-02_CentOS Linux 7.X系統管理LinuxCentOS
- 千鋒Linux雲端計算-檔案許可權管理Linux
- Linux雲端計算-04_Linux使用者及許可權管理Linux
- 雲端計算應該學些什麼?Linux雲端計算要學多久Linux
- 雲端計算對生活有什麼影響?學習linux雲端計算Linux
- Linux雲端計算面試題第二彈,樂視雲端計算面試題Linux面試題
- Linux運維對雲端計算有影響嗎?雲端計算需求怎麼樣?Linux運維
- 雲端計算管理平臺之OpenStack計算服務nova
- Linux雲端計算中的高頻命令Linux
- 雲端計算:交換分割槽管理 Swap
- 什麼是Linux雲端計算?學習雲端計算可以用來做什麼?Linux
- 雲端計算就業前景怎麼樣?linux雲端計算怎麼開始學習就業Linux
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題一程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題二程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題三程式設計師Linux面試
- Linux磁碟管理Linux
- Linux 磁碟管理Linux
- Linux雲端計算教程全套影片合集:關於Alpine LinuxLinux
- 學Linux雲端計算,Linux的十條危險指令Linux
- Linux桌面系統有哪些?Linux雲端計算學習Linux
- 雲端計算發展目前有什麼優勢?Linux雲端計算入門Linux
- Linux雲端計算教程全套影片合集:如何用大白話解釋什麼是雲端計算Linux
- 雲端計算教程學習入門影片課件:雲端計算管理工具有哪些?
- 雲端計算和Linux是什麼關係?Linux
- 【雲端計算小知識】什麼是雲端計算?雲端計算特點是什麼?
- 什麼叫雲端計算?雲端計算通俗解釋
- Linux運維發展需要學什麼?Linux雲端計算Linux運維
- Linux雲端計算學習教程,一個全新的世界—LinuxLinux
- 學Linux雲端計算技術有意義嗎?Linux入門Linux
- 女生學Linux雲端計算技術難嗎?Linux系統Linux
- Linux雲端計算有哪些應用範圍?Linux運維Linux運維
- 雲端計算運維學習---ssh遠端管理服務運維
- 雲端計算開發教程,雲端計算能幹什麼?
- 什麼叫做雲端計算?學習雲端計算先要理解