linux磁碟管理 磁碟冗餘陣列
阿新 • • 發佈:2022-04-07
總結mount命令用法,引數、掛載選項
mount命令可以將指定的檔案系統,掛載到指定的目錄(掛載點),再linux系統下必須先掛載後才能訪問裝置資料
mount /dev/sdb /mnt #把sdb這個磁碟掛載到/mnt這個目錄
mount -l 顯示掛載情況
mount -a 讀取/etc/fstab所有的掛載設定
mount -o 選項
mount -o ro 只讀
mount -o rw 讀寫
mount -o rw,exec 允許執行
mount -o noexec,rw 不允許執行
-l 顯示系統以掛載的裝置資訊 -a 載入檔案/etc/fstab中設定的所有裝置 -t t<檔案系統型別> 指定裝置的檔案系統型別。如果不設定,mount自行選擇掛載的檔案型別 minix Linux最早使用的檔案系統。 ext2 Linux目前的常用檔案系統。 msdos MS-DOS 的 FAT。 vfat Win85/98 的 VFAT。 nfs 網路檔案系統。 iso9660 CD-ROM光碟的標準檔案系統。 ntfs Windows NT的檔案系統。 hpfs OS/2檔案系統。Windows NT 3.51之前版本的檔案系統。 auto 自動檢測檔案系統。 -o 添加掛載選項,是安全、效能優化重要引數 -r 只讀,等於-o ro -w 讀寫,等-o rw
mount -o選項詳解 引數 含義 async 以非同步方式處理檔案系統I/O操作,資料不會同步寫入磁碟,而是寫到緩衝區,提高系統性能,但損失資料安全性 sync 所有I/O操作同步處理,資料同步寫入磁碟,效能較弱,資料安全性高 atime/noatime 檔案被訪問時是否修改時間戳,不更改時間,可以提高磁碟I/O速度 auto/noauto 通過-a引數可以自動被掛載/不自動掛載 defaults 預設值包括rw、suid、dev、exec、auto、nouser、async,/etc/fstab大多預設值 exec/noexec 是否允許執行二進位制程式,取消提供安全性 suid/nosuid 是否允許suid(特殊許可權)生效 user/nouser 是否允許普通使用者掛載 remount 重新掛載 ro 只讀 rw 讀寫
退出光碟的命令
Eject彈出裝置命令
eject # 彈出光碟機
eject -r /dev/sr0 # 指定裝置彈出
inode、block、硬連結
檔案屬性檢視
[root@bogon ~]# ll -h tet.log
-rw-r--r--. 1 root root 5 Apr 7 16:34 tet.log
檔案許可權, 硬連結數量,屬主,屬組,檔案大小,檔案修改時間,檔名
檢視檔案、資料夾的inode資訊
可以用stat命令,檢視某個檔案的具體inode資訊 [root@bogon ~]# stat tet.log File: ‘tet.log’ Size: 5 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 36771844 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2022-04-07 16:33:41.488885493 +0800 Modify: 2022-04-07 16:34:01.878883907 +0800 Change: 2022-04-07 16:34:01.878883907 +0800 Birth: - [root@bogon ~]# ll -hi tet.log 36771844 -rw-r--r--. 1 root root 5 Apr 7 16:34 tet.log [root@bogon ~]# ll -hi /opt total 0 279893 -rw-r--r--. 1 root root 0 Apr 7 16:57 t1.txt 36771867 drwxr-xr-x. 2 root root 6 Apr 7 16:58 t2 [root@bogon ~]# stat /opt File: ‘/opt’ Size: 30 Blocks: 0 IO Block: 4096 directory Device: fd00h/64768d Inode: 83 Links: 3 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:usr_t:s0 Access: 2022-04-07 17:18:12.363677726 +0800 Modify: 2022-04-07 16:58:09.023771334 +0800 Change: 2022-04-07 16:58:09.023771334 +0800 Birth: -
什麼是inode
linux的檔名,其實是分為了【元資料】+【檔案內容】,兩部分
元資料,也就是檔案的屬性資訊,可以通過stat命令檢視到
一個新的磁碟,格式化檔案系統後,就有了2個儲存空間,一個叫做
inode儲存空間,儲存裝置上,所有檔名,對應的元資料資訊(檔案的屬性資訊)
一個叫做block儲存空間(儲存裝置上,所有的檔案的內容,資料都在這)
儲存元資料資訊的空間,被稱之為Inode
儲存檔案資料的空間,被稱之為block
linux讀取檔案內容,其實是 以 檔名 > inode編號 > block 的順序來讀取
在你建立檔案前必須先要分割槽、格式化(建立檔案系統)
建立檔案系統後inode和block的數量就會固定下來。
mkfs.xfs /dev/sdc 格式化xfs檔案系統後,inode和block的數量就固定下來了
可以通過xfs_info檢視
每個inode都有一個號碼,作業系統用inode號碼來識別不同的檔案。
[root@bogon ~]# ls -l -i /opt
total 0
3635430 -rw-r--r--. 1 root root 0 Apr 7 18:14 666.log
279893 -rw-r--r--. 1 root root 0 Apr 7 16:57 t1.txt
36771867 drwxr-xr-x. 2 root root 6 Apr 7 16:58 t2
通過ls -i引數,檢視檔案,資料夾的inode號碼
Unix/Linux系統內部不使用檔名,而使用inode號碼來識別檔案。對於系統來說,檔名只是inode號碼便於識別的別稱或者綽號。
表面上,使用者通過檔名,開啟檔案。實際上,系統內部這個過程分成三步:首先,系統找到這個檔名對應的inode號碼;其次,通過inode號碼,獲取inode資訊;最後,根據inode資訊,找到檔案資料所在的block,讀出資料。
使用如下命令,檢視檔案的inode號
ls -i
為什麼linux要設計inode
理解inode,要從檔案儲存說起。
檔案儲存在硬碟上,硬碟的最小儲存單位叫做"扇區"(Sector)。每個扇區儲存512位元組(相當於0.5KB)。
作業系統讀取硬碟的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是檔案存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。
檔案資料都儲存在"塊"中,那麼很顯然,我們還必須找到一個地方儲存檔案的元資訊,比如檔案的建立者、檔案的建立日期、檔案的大小等等。這種儲存檔案元資訊的區域就叫做inode,中文譯名為"索引節點"。
每一個檔案都有對應的inode,裡面包含了與該檔案有關的一些資訊。
對inode和block的理解
一個新的磁碟,格式化檔案系統後,就有了兩個儲存空間,
一個叫做inode儲存空間,儲存裝置上,所有檔名,對應的元資料資訊(檔案的屬性資訊)
linux系統內部不使用檔名,而是使用inode號碼來識別檔案,對於系統來說,檔名只是inode號碼便於識別的別稱或者綽號
一個叫做block儲存空間,(儲存裝置上所有的檔案的內容,資料都在這裡)
block是linux實際儲存資料的空間,是8個連續的扇區,(8*512bytes=4KB)
單個大檔案需要用多個block來儲存
特別小的檔案即使不滿足4KB,也只能浪費其空間
1 block = 4KB
儲存元資料資訊的空間,被稱為inode
儲存檔案資料的空間,被稱為block
linux讀取檔案內容,其實是以檔名 > inode編號 > block 的順序來讀取的
使用者通過檔名,開啟檔案。實際上系統內部這個過程分為了三步:
首先,系統找到這個檔名對應的inode號碼;
其次:通過inode號碼,獲取inode資訊;
最後:根據indoe資訊,找到檔案資料所在的block,讀取資料
inode儲存哪些內容
inode 包含很多的檔案元資訊,但不包含檔名
每一個inode都有一個號碼,作業系統用inode號碼來識別不同的檔案
檔案的位元組數
檔案的擁有者的User ID
檔案的Group ID
檔案的讀寫執行許可權
檔案的時間戳,總共有三個:ctime指inode上一次變動的時間,mtime指檔案內容上一次變動的時間,atime指檔案上一次開啟的時間
檔案資料block的位置
linux的檔名、和inode、block的關係
在建立檔案前必須要先分割槽,格式化建立檔案系統,在建立檔案系統後inode和block的數量就會固定下來,
inode儲存空間,儲存裝置上,所有檔名,對應的元資料資訊(檔案的屬性資訊)
block儲存空間,(儲存裝置上所有的檔案的內容,資料都在這裡)
linux讀取檔案內容,其實是以檔名 > inode編號 > block 的順序來讀取的
使用者通過檔名,開啟檔案。實際上系統內部這個過程分為了三步:
首先,系統找到這個檔名對應的inode號碼;
其次:通過inode號碼,獲取inode資訊;
最後:根據indoe資訊,找到檔案資料所在的block,讀取資料
資料夾和檔案的關係、從inode的角度理解
目錄是個特殊檔案,目錄儲存的時當前目錄的檔名字
資料夾就是方便人類記憶檔案存在哪裡,然後通過這個檔名,找到對應的檔案inode號
inode號裡記錄了檔案資料所處的block位置,最終訪問到資料
每個inod都有一個號碼,作業系統用indoe號碼來識別不同的檔案
可以通過ls -i引數來檢視檔案,資料夾的indoe號碼
[root@bogon ~]# ls -lh -i /opt
total 0
279893 -rw-r--r--. 1 root root 0 Apr 7 16:57 t1.txt
36771867 drwxr-xr-x. 2 root root 6 Apr 7 16:58 t2
刪除檔案和inode、block的關係
硬連結、軟連線的區別,以及用法
軟連線,檔案儲存的時原始檔的路徑
1,建立軟連線 ln -s
2,訪問軟連線檔案
3,其實時訪問到原始檔的路徑,原始檔的檔名
4,訪問原始檔的indoe號 ls -i
5,indoe找到block,訪問到資料
軟連線檔案的inode號和原始檔不同,作用時儲存原始檔的路徑
刪除普通軟連線,不影響原始檔
刪除原始檔,軟連線找不到目標,報錯提示
硬連結就是一個數據(block)被多個相同的indoe號的檔案指向
注意:不得跨分割槽設定(indoe號,是基於分割槽來建立的)
表示檔案,屬性完全一致,資料也是同一個block區域
稱之為硬連結
由於資料夾中存在兩個特殊的子目錄,
一個是 . 當前目錄,表示其本身
一個是 .. 上一級目錄,也可以通過它,找到當前目錄
如果修改檔案的硬連結數,要在它的第一層資料夾中,建立子資料夾,即可增加硬連結的數量
硬連結建立語法
ln 原始檔 目標檔案
硬連結特點
1.可以對已存在的檔案做硬連結,該檔案的硬連結數,至少是1,為0就表示檔案不存在
2.硬連結的檔案,inode相同,屬性一致
3.只能在同一個磁碟分割槽下,同一個檔案系統下建立硬連結
4.不能對資料夾建立硬連結,只有檔案可以
5.刪除一個硬連結,不影響其他相同inode號的檔案
6.資料夾的硬連結,預設是2個,以及是2+(第一層子目錄總數)=資料夾的硬連結數量
7.可以用任意一個硬連結作為入口,操作檔案(修改的其實是block中的資料)
8.當檔案的硬連結數為0時,檔案真的被刪除
檢視分割槽的inode和block數量(xfs_info)
inode和block的數量,是在你mkfs建立檔案系統的時候,就已經確定好了
ext4的檔案系統,檢視檔案系統資訊的命令,dumpe2fs
xfs檔案系統,檢視檔案系統資訊的命令,xfs_info
檢視xfs檔案系統的資訊
isize表示inode的容量=512bytes(位元組)
sectsz表示扇區=512bytes
bsize表示block容量:是4096bytes = 4KB
blocks = 4096*5242624 =21473787904
可見/dev/sdc1分割槽的總容量是 20G左右
檢視某分割槽,有多少block讓你用,(檢視這個磁碟,分割槽還有多少容量)
df -h # -h引數,是友好的顯示容量單位,如kb ,mb,gb
檢視某分割槽,一共有多少inode容量編號給我們用
[root@bogon ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 8910848 132280 8778568 2% /
devtmpfs 500499 429 500070 1% /dev
tmpfs 503553 1 503552 1% /dev/shm
tmpfs 503553 1280 502273 1% /run
tmpfs 503553 16 503537 1% /sys/fs/cgroup
/dev/sda1 524288 326 523962 1% /boot
tmpfs 503553 1 503552 1% /run/user/0
/dev/sdc1 10485248 3 10485245 1% /mnt
[root@bogon ~]# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 8.5M 130K 8.4M 2% /
devtmpfs 489K 429 489K 1% /dev
tmpfs 492K 1 492K 1% /dev/shm
tmpfs 492K 1.3K 491K 1% /run
tmpfs 492K 16 492K 1% /sys/fs/cgroup
/dev/sda1 512K 326 512K 1% /boot
tmpfs 492K 1 492K 1% /run/user/0
/dev/sdc1 10M 3 10M 1% /mnt
inode的作用
df -h
檢視磁碟block空間的使用情況,如果看到分割槽快滿了,可以去刪除大容量的檔案
df -i
inode儲存檔案屬性的
當你機器上有大量的無用的小檔案,空檔案,白白消耗inode數量
檢視磁碟分割槽inode空間的使用情況,如果可用的不多的,刪除大量的4kb小檔案即可,因為它們真用了太多的無效inode編號,應該留給別人用。
明明 df -h看到磁碟還是有空間,但是寫入資料,系統提示你
no space for disk,你雖然還有block空間可以存資料
但是你的inode數量肯定是沒了
touch 建立新檔案,想分配inode編號,發現不夠用了
raid技術的作用
raid磁碟列陣組能夠提升資料冗餘性,當然也增加了硬碟的價格成本,需要更多的硬碟,只不過資料本身的價值是超過硬碟購買的價格的,raid除了能夠保障資料丟失造成的嚴重損失,還能提升硬碟的讀寫效率,被應用在廣泛的企業中
raid0
是將兩個或者兩個以上相同的型號,容量的硬碟組合,磁碟陣列的總和便是多個硬碟的總和
paid的特點
至少需要兩塊磁碟
資料==條帶化==分佈到磁碟==,高的讀寫效能==100%==高儲存的空間利用率
資料==沒有冗餘策略==一塊磁碟故障,資料將無法恢復
應用場景:對效能要求不高但對資料安全性,和可靠性要求不高的場景,比如音訊,視訊儲存等
由於raid 0的特性,資料一次寫入到各個物理硬碟中,資料是分開放的,因此損壞任意一個磁碟都會對完整的資料破壞,對於企業來說,是不允許的
raid1
paid 1技術,是將兩塊以上的硬碟繫結,資料寫入時,同時寫入多個硬碟,因此即使有硬碟故障,也有資料備份
但是這種方式,會極大降低磁碟的利用率,假設兩塊磁碟一共4T,真實資料只有2T,利用率只有2T,利用率50%,如果是三塊硬碟組成raid 1,利用率只有33%,也是不可取的
至少需要兩塊磁碟
資料==映象備份==寫到磁碟上(工作盤和映象盤)==可靠性高,==磁碟利用率為50%
讀效能可以,但是寫效能不佳,寫入資料要同步,因此速度很慢
一塊磁碟故障,不會影響資料的讀寫,因為是映象磁碟,冗餘性好,只要有一塊是好的,資料還是會轉的
raid 1 應用場景:
對資料安全可靠要求較高的場景,比如郵件系統,交易系統等
Raid5
至少需要3塊磁碟,
資料==條帶化==儲存在磁碟==讀寫效能好==磁碟利用率為(n-1)/n
一塊磁碟故障,可根據其他資料塊和對應的校驗資料重構損壞資料(消耗效能)
校驗演算法是計算機二進位制的異或運算
只能允許壞掉一塊硬碟
是目前綜合==效能最佳的資料保護解決方案
兼顧了儲存效能,資料安全和儲存成本等各方面因素(價效比高)
適用於大部分的應用場景
Raid6
比raid5提供的資料校驗,又多了一層校驗,雙層校驗
至少需要4塊磁碟
資料==條帶化==儲存在磁碟,讀取效能好,容錯能力強
採用==雙重校驗==方式保證資料的安全性
如果2快磁碟同時故障,可以通過兩個校驗資料來重建兩個磁碟的資料
成本要比其他等級高,平且更復雜
一般用於對資料安全性要求非常高的場合
raid10
raid10是raid1+raid0的組合
至少需要4快磁碟
兩塊硬碟為一個組,先做raid1,再將做好的raid1的兩組做raid0
兼顧資料的冗餘,(raid1映象)和讀寫效能(raid0資料條帶化)
磁碟利用率50% ,成本高
只要壞的不是同一個組中所有的硬碟,就算壞掉一半的硬碟都不會丟資料
因此raid10是最實用的方案
硬raid、軟raid區別
軟體控制的raid磁碟冗餘陣列
由於cpu去控制硬碟驅動器進行資料轉換,計算的過程就是軟體raid
軟raid執行==作業系統底層==將SCSI或者IDE的控制器提交上來的物理磁碟,虛擬成虛擬磁碟,再提交給管理程式來進行管理
佔用記憶體空間
佔用cpu資源
如果程式或者作業系統故障就無法執行
基於以上的缺陷,所以現在企業很少用軟raid
硬體控制
由專門的raid卡上的主控晶片操控,就是硬體raid
通過用硬體來實現raid功能的就是硬raid,獨立的raid卡,主機板整合的raid晶片都是硬raid
raid卡就是用來實現raid功能的板卡,通常是由I/O處理器,硬碟控制器,硬碟聯結器的快取等一系列零元件構成的
不同的raid卡支援的raid功能不同,支援raid0,raid1,raid4,raid5,raid10不等
軟體raid額外消耗cpu資源,效能弱
硬體raid更加穩固,軟體raid可能造成磁碟發熱過量,造成威脅
相容性問題,軟體raid依賴作業系統,硬體raid勝出
可見,硬體raid,比軟體raid強
建立raid10
[root@bogon ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sde 8:64 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom
[root@bogon ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Fail to create md0 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@bogon ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
sdc 8:32 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
sdd 8:48 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
sde 8:64 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
sr0 11:0 1 4.2G 0 rom