linux6-儲存結構與硬碟管理

光璃發表於2024-04-20

1.掛載裝置

mount + 裝置 +掛載目錄

1 [root@linuxprobe ~]# mount /dev/sdb2 /backup

2.顯示裝置屬性資訊blkid

3.df -h

檢視已掛載裝置磁碟使用情況

4.RAID(獨立冗餘磁碟陣列)

5.mdadm 命令用於建立、調整、監控和管理 RAID 裝置

 1 其中,-C 引數代表建立一個 RAID 陣列卡;-v
 2 引數顯示建立的過程,同時在後面追加一個裝置名稱/dev/md0,這樣/dev/md0 就是建立後的
 3 RAID 磁碟陣列的名稱;-n 4 引數代表使用 4 塊硬碟來部署這個 RAID 磁碟陣列;而-l 10 引數
 4 則代表 RAID 10 方案;最後再加上 4 塊硬碟裝置的名稱就搞定了。
 5 [root@linuxprobe~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
 6 mdadm: layout defaults to n2
 7 mdadm: layout defaults to n2
 8 mdadm: chunk size defaults to 512K
 9 mdadm: size set to 20954112K
10 mdadm: Defaulting to version 1.2 metadata
11 mdadm: array /dev/md0 started.

等兩三分鐘後,把製作好的 RAID 磁碟陣列格式化為 Ext4 格式:
[root@linuxprobe~]# mkfs.ext4 /dev/md0
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
隨後,建立掛載點,將硬碟裝置進行掛載操作:
[root@linuxprobe~]# mkdir /RAID
[root@linuxprobe~]# mount /dev/md0 /RAID
[root@linuxprobe~]# df -h

如果想讓建立好的 RAID 磁碟陣列能夠一直提供服務,不會因每次的重啟操作而取消,
那麼一定要記得將資訊新增到/etc/fstab 檔案中,這樣可以確保在每次重啟後 RAID 磁碟陣列 都是有效的。
[root@linuxprobe~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@linuxprobe~]# cat /etc/fstab
 1 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdb
 2 mdadm: hot removed /dev/sdb from /dev/md0
 3 
 4 [root@linuxprobe~]# mdadm /dev/md0 -a /dev/sdb
 5 mdadm: added /dev/sdb
 6 [root@linuxprobe~]# mdadm -D /dev/md0
 7 /dev/md0:
 8 Version : 1.2
 9 Creation Time : Thu Jan 14 05:12:20 2021
10 Raid Level : raid10
11 Array Size : 41908224 (39.97 GiB 42.91 GB)
12 Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
13 Raid Devices : 4
14 Total Devices : 

6.raid5

 1 下面的命令中,引數-n 3代表建立這個 RAID 
 2 5 磁碟陣列所需的硬碟數,引數-l 5 代表 RAID 的級別,而引數-x 1 則代表有一塊備份盤。
 3 當檢視/dev/md0(即 RAID 5 磁碟陣列的名稱)磁碟陣列的時候,就能看到有一塊備份盤在等
 4 待中了。
 5 [root@linuxprobe~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
 6 mdadm: layout defaults to left-symmetric
 7 mdadm: layout defaults to left-symmetric
 8 mdadm: chunk size defaults to 512K
 9 mdadm: size set to 20954112K
10 mdadm: Defaulting to version 1.2 metadata
11 mdadm: array /dev/md0 started.
12 [root@linuxprobe~]# mdadm -D /dev/md0

7.刪除磁碟陣列

 1 首先,需要將所有的磁碟都設定成停用狀態:
 2 [root@linuxprobe~]# umount /RAID
 3 [root@linuxprobe~]# mdadm /dev/md0 -f /dev/sdc
 4 mdadm: set /dev/sdc faulty in /dev/md0
 5 [root@linuxprobe~]# mdadm /dev/md0 -f /dev/sdd
 6 mdadm: set /dev/sdd faulty in /dev/md0
 7 [root@linuxprobe~]# mdadm /dev/md0 -f /dev/sde
 8 mdadm: set /dev/sde faulty in /dev/md0
 9 然後再逐一移除出去:
10 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdb
11 mdadm: hot removed /dev/sdb from /dev/md0
12 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdc
13 mdadm: hot removed /dev/sdc from /dev/md0
14 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdd
15 mdadm: hot removed /dev/sdd from /dev/md0
16 [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sde
17 mdadm: hot removed /dev/sde from /dev/md0
18 如果著急,也可以用“mdadm /dev/md0 -f /dev/sdb -r /dev/sdb”這一條命令搞定。但是,在早
19 期版本的伺服器中,這條命令中的-f 和-r 不能一起使用,因此保守起見,還是一步步地操作吧。
20 將所有的硬碟都移除後,再來檢視磁碟陣列組的狀態:
21 [root@linuxprobe~]# mdadm -D /dev/md0
22 /dev/md0:
23 Version : 1.2
24 Creation Time : Fri Jan 15 08:53:41 2021
25 Raid Level : raid5
26 Array Size : 41908224 (39.97 GiB 42.91 GB)
27 Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
28 Raid Devices : 3
29 Total Devices : 0
30 Persistence : Superblock is persistent
31 Update Time : Fri Jan 15 09:00:57 2021
32 State : clean, FAILED
33 Active Devices : 0
34 Failed Devices : 0
35 Spare Devices : 0
36 Layout : left-symmetric
37 Chunk Size : 512K
38 Consistency Policy : resync
39 Number Major Minor RaidDevice State
40 - 0 0 0 removed
41 - 0 0 1 removed
42 - 0 0 2 removed
43 很棒!下面繼續停用整個 RAID 磁碟陣列,咱們的工作就徹底完成了:
44 [root@linuxprobe~]# mdadm --stop /dev/md0

8.邏輯卷管理器 (Logical Volume Manager,LVM)。LVM 允許使用者對硬碟資源進行動態調整。

第一步:讓新新增的兩塊硬碟裝置支援 LVM 技術。
[root@linuxprobe~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created
第二步:把兩塊硬碟裝置加入到 storage 卷組中,然後檢視卷組的狀態。
[root@linuxprobe~]# vgcreate storage /dev/sdb /dev/sdc
Volume group "storage" successfully created
[root@linuxprobe~]# vgdisplay
第三步切割出一個約為 150MB 的邏輯卷裝置。
這裡需要注意切割單位的問題。在對邏輯捲進行切割時有兩種計量單位。第一種是以容
量為單位,所使用的引數為-L。例如,使用-L 150M 生成一個大小為 150MB 的邏輯卷。另外
一種是以基本單元的個數為單位,所使用的引數為-l。每個基本單元的大小預設為 4MB。例
如,使用-l 37 可以生成一個大小為 37×4MB=148MB 的邏輯卷。
[root@linuxprobe~]# lvcreate -n vo -l 37 storage
Logical volume "vo" created.
[root@linuxprobe~]# lvdisplay
第四步:把生成好的邏輯捲進行格式化,然後掛載使用。
Linux 系統會把 LVM 中的邏輯卷裝置存放在/dev 裝置目錄中(實際上就是個快捷方式),
同時會以卷組的名稱來建立一個目錄,其中儲存了邏輯卷的裝置對映檔案(即/dev/卷組名稱/
邏輯卷名稱)。
[root@linuxprobe ~]# mkfs.ext4 /dev/storage/vo
[root@linuxprobe~]# mkdir /linuxprobe
[root@linuxprobe~]# mount /dev/storage/vo /linuxprobe
永久生效
[root@linuxprobe~]# echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab
[root@linuxprobe~]# cat /etc/fstab

9.擴容邏輯卷

 1 [root@linuxprobe~]# umount /linuxprobe
 2 :把上一個實驗中的邏輯卷 vo 擴充套件至 290MB。
 3 [root@linuxprobe~]# lvextend -L 290M /dev/storage/vo
 4 Rounding size to boundary between physical extents: 292.00 MiB.
 5 Size of logical volume storage/vo changed from 148 MiB (37 extents) to 292 MiB
 6 (73 extents).
 7 Logical volume storage/vo successfully resized.
 8 :檢查硬碟的完整性,確認目錄結構、內容和檔案內容沒有丟失。一般情況下沒
 9 有報錯,均為正常情況。
10 [root@linuxprobe~]# e2fsck -f /dev/storage/vo
11 e2fsck 1.44.3 (10-July-2018)
12 Pass 1: Checking inodes, blocks, and sizes
13 Pass 2: Checking directory structure
14 Pass 3: Checking directory connectivity
15 使用 RAID 與 LVM 磁碟陣列技術
16 232
17 Pass 4: Checking reference counts
18 Pass 5: Checking group summary information
19 /dev/storage/vo: 11/38000 files (0.0% non-contiguous), 10453/151552 blocks
20 :重置裝置在系統中的容量。剛剛是對 LV(邏輯卷)裝置進行了擴容操作,但系
21 統核心還沒有同步到這部分新修改的資訊,需要手動進行同步。
22 [root@linuxprobe~]# resize2fs /dev/storage/vo
23 resize2fs 1.44.3 (10-July-2018)
24 Resizing the filesystem on /dev/storage/vo to 299008 (1k) blocks.
25 The filesystem on /dev/storage/vo is now 299008 (1k) blocks long.
26 :重新掛載硬碟裝置並檢視掛載狀態。
27 [root@linuxprobe~]# mount -a
28 [root@linuxprobe~]# df -h

10.縮小邏輯卷

 1 [root@linuxprobe~]# umount /linuxprobe
 2 :檢查檔案系統的完整性。
 3 [root@linuxprobe~]# e2fsck -f /dev/storage/vo
 4 e2fsck 1.44.3 (10-July-2018)
 5 Pass 1: Checking inodes, blocks, and sizes
 6 Pass 2: Checking directory structure
 7 Pass 3: Checking directory connectivity
 8 Pass 4: Checking reference counts
 9 Pass 5: Checking group summary information
10 /dev/storage/vo: 11/74000 files (0.0% non-contiguous), 15507/299008 blocks
11 233
12 :通知系統核心將邏輯卷 vo 的容量減小到 120MB。
13 [root@linuxprobe~]# resize2fs /dev/storage/vo 120M
14 resize2fs 1.44.3 (10-July-2018)
15 Resizing the filesystem on /dev/storage/vo to 122880 (1k) blocks.
16 The filesystem on /dev/storage/vo is now 122880 (1k) blocks long.
17 :將 LV(邏輯卷)的容量修改為 120MB。
18 [root@linuxprobe~]# lvreduce -L 120M /dev/storage/vo
19 WARNING: Reducing active logical volume to 120.00 MiB.
20 THIS MAY DESTROY YOUR DATA (filesystem etc.)
21 Do you really want to reduce storage/vo? [y/n]: y
22 Size of logical volume storage/vo changed from 292 MiB (73 extents) to 120
23 MiB (30 extents).
24 Logical volume storage/vo successfully resized.
25 咦?縮容的步驟跟擴容的步驟不一樣啊。縮容操作為什麼是先通知系統核心裝置的容量
26 要改變成 120MB,然後再正式進行縮容操作呢?舉個例子大家就明白了。小強是一名初中生,
27 開學後看到班裡有位同學紋了身,他感覺很酷,自己也想紋但又怕家裡責罵,於是他回家後
28 就說:“媽媽,我紋身了。”如果媽媽的反應很平和,那麼他就可以放心大膽地去紋身了。如
29 果媽媽強烈不同意,他馬上就可以哈哈一笑,說:“逗著玩呢。”這樣也就不會捱打了。
30 縮容操作也是同樣的道理,先通知系統核心自己想縮小邏輯卷,如果在執行 resize2fs 命
31 令後系統沒有報錯,再正式操作。
32 :重新掛載檔案系統並檢視系統狀態。
33 [root@linuxprobe~]# mount -a
34 [root@linuxprobe~]# df

5.LVM(邏輯卷管理器)

相關文章