1.磁盤基本概述
1.1Linux中磁盤命名方式
Linux中磁盤的命名方式與磁盤的接口有關,規則如下:
傳統IDE接口硬盤:/dev/hd[a-z]
SCISI接口硬盤:/dev/sd[a-z]
虛擬化硬盤:/dev/vd[a-z]
在設備名稱的定義規則如下, 其他的分區可以以此類推
系統的第一塊SCSI接口的硬盤名稱為/dev/sda
系統的第二塊SCSI接口的硬盤名稱為/dev/sdb
系統中分區由數字編號表示, 1-4留給主分區使用和擴展分區, 邏輯分區從5開始
//第一塊磁盤
/dev/sda
//第一塊磁盤的第一個分區
/dev/sda1
//第二塊磁盤的第一個分區
/dev/sdb1
1.2MBR與GPT
在使用新磁盤之前,你必須對其進行分區。MBR(Master Boot Record)和GPT(GUID Partition Table)是在磁盤上存儲分區信息的兩種不同方式。這些分區信息包含了分區從哪里開始的信息,這樣操作系統才知道哪個扇區是屬於哪個分區的,以及哪個分區是可以啟動的。在磁盤上創建分區時,你必須在MBR和GPT之間做出選擇
MBR是Master Boot Record的簡稱,也就是主引導記錄,是位於磁盤最前邊的一段引導(Loader)代碼,主要用來引導操作系統的加載與啟動
特點:
MBR支持最大2TB磁盤,它無法處理大於2TB容量的磁盤
只支持最多4個主分區。若想要更多分區,需要創建擴展分區,並在其中創建邏輯分區
GPT磁盤是指使用GUID分區表的磁盤,GUID磁盤分區表(GUID Partition Table,縮寫:GPT)其含義為“全局唯一標識磁盤分區表”,是一個實體硬盤的分區表的結構布局的標准
特點:
GPT對磁盤大小沒有限制
最多可以創建128個分區
注意:MBR與GPT之間互相轉換會導致數據丟失
2.磁盤容量檢查
使用df命令查看磁盤容量,不加參數以k為單位:
df -i //查看inode使用情況
df -h //以G或者T或者M人性化方式顯示
df -T //查看文件類型
//使用df命令查看磁盤,下面分別介紹每列什么含義
[root@liping ~]# df -Th
文件系統 類型 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root xfs 17G 1.1G 16G 7% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 143M 872M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
使用lsblk查看分區情況:
[root@liping ~]# 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
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-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
sr0 11:0 1 3.8G 0 rom
使用du命令查看目錄或者文件的容量,不加參數以k為單位:
du -sh opt //人性化輸出顯示大小
-s:列出總和
-h:人性化顯示容量信息
[root@liping ~]# du -sh /etc
31M /etc
3.磁盤分區
分區之前, 需要先給虛擬機添加一塊磁盤,以便於我們做后續的實驗vmware虛擬機,請按如下進行操作:
1.找到對應虛擬主機點擊右鍵, 選擇設置
2.在硬件向導里面點擊添加按鈕, 在硬件類型中選中“硬盤”, 點擊下一步
3.磁盤類型選擇默認, 然后創建新虛擬磁盤, 調整大小(不要勾選立即分配空間)
4.最后點擊下一步, 完成即可
分區工具有fdisk和gdisk,當硬盤小於2T的時候我們應該用fdisk來分區,而當硬盤大於2T的時候則應用gdisk來進行分區
3.1 fdisk分區
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): m //輸入m列出常用的命令
Command action
a toggle a bootable flag //切換分區啟動標記
b edit bsd disklabel //編輯sdb磁盤標簽
c toggle the dos compatibility flag //切換dos兼容模式
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 //不保存退出
s create a new empty Sun disklabel //創建新的Sun磁盤標簽
t change a partition's system id //修改分區ID,可以通過l查看id
u change display/entry units //修改容量單位,磁柱或扇區
v verify the partition table //檢驗分區表
w write table to disk and exit //保存退出
x extra functionality (experts only) //拓展功能
1P1E6L
[root@liping ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x8a096506 創建新的 DOS 磁盤標簽。
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分區號 (1-4,默認 1):
起始 扇區 (2048-41943039,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認為 41943039):+100M
分區 1 已設置為 Linux 類型,大小設為 100 MiB
命令(輸入 m 獲取幫助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分區號 (2-4,默認 2):
起始 扇區 (206848-41943039,默認為 206848):
將使用默認值 206848
Last 扇區, +扇區 or +size{K,M,G} (206848-41943039,默認為 41943039):
將使用默認值 41943039
分區 2 已設置為 Extended 類型,大小設為 19.9 GiB
命令(輸入 m 獲取幫助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加邏輯分區 5
起始 扇區 (208896-41943039,默認為 208896):
將使用默認值 208896
Last 扇區, +扇區 or +size{K,M,G} (208896-41943039,默認為 41943039):+2G
分區 5 已設置為 Linux 類型,大小設為 2 GiB
命令(輸入 m 獲取幫助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加邏輯分區 6
起始 扇區 (4405248-41943039,默認為 4405248):
將使用默認值 4405248
Last 扇區, +扇區 or +size{K,M,G} (4405248-41943039,默認為 41943039):+2G
分區 6 已設置為 Linux 類型,大小設為 2 GiB
命令(輸入 m 獲取幫助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加邏輯分區 7
起始 扇區 (8601600-41943039,默認為 8601600):
將使用默認值 8601600
Last 扇區, +扇區 or +size{K,M,G} (8601600-41943039,默認為 41943039):+2G
分區 7 已設置為 Linux 類型,大小設為 2 GiB
命令(輸入 m 獲取幫助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加邏輯分區 8
起始 扇區 (12797952-41943039,默認為 12797952):
將使用默認值 12797952
Last 扇區, +扇區 or +size{K,M,G} (12797952-41943039,默認為 41943039):+2G
分區 8 已設置為 Linux 類型,大小設為 2 GiB
命令(輸入 m 獲取幫助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加邏輯分區 9
起始 扇區 (16994304-41943039,默認為 16994304):
將使用默認值 16994304
Last 扇區, +扇區 or +size{K,M,G} (16994304-41943039,默認為 41943039):+2G
分區 9 已設置為 Linux 類型,大小設為 2 GiB
命令(輸入 m 獲取幫助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加邏輯分區 10
起始 扇區 (21190656-41943039,默認為 21190656):
將使用默認值 21190656
Last 扇區, +扇區 or +size{K,M,G} (21190656-41943039,默認為 41943039):+2g
不支持的后綴:“g”。
支持:10^N: KB (千字節), MB (兆字節), GB (吉字節)
2^N: K (約千字節), M (約兆字節), G (約吉字節)
Last 扇區, +扇區 or +size{K,M,G} (21190656-41943039,默認為 41943039):+2G
分區 10 已設置為 Linux 類型,大小設為 2 GiB
命令(輸入 m 獲取幫助):p
磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x8a096506
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 206847 102400 83 Linux
/dev/sdb2 206848 41943039 20868096 5 Extended
/dev/sdb5 208896 4403199 2097152 83 Linux
/dev/sdb6 4405248 8599551 2097152 83 Linux
/dev/sdb7 8601600 12795903 2097152 83 Linux
/dev/sdb8 12797952 16992255 2097152 83 Linux
/dev/sdb9 16994304 21188607 2097152 83 Linux
/dev/sdb10 21190656 25384959 2097152 83 Linux
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@liping ~]# partprobe /dev/sdb
[root@liping ~]# 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
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 100M 0 part
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
├─sdb7 8:23 0 2G 0 part
├─sdb8 8:24 0 2G 0 part
├─sdb9 8:25 0 2G 0 part
└─sdb10 8:26 0 2G 0 part
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
3.2 gdisk分區
[root@liping ~]# gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +500M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): n
Partition number (2-128, default 2):
First sector (34-41943006, default = 1026048) or {+-}size{KMGTP}:
Last sector (1026048-41943006, default = 41943006) or {+-}size{KMGTP}: +500M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p
Disk /dev/sdc: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): A98A3D7C-7723-46AA-8E0A-2AEEF884F903
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 39894973 sectors (19.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 1026047 500.0 MiB 8300 Linux filesystem
2 1026048 2050047 500.0 MiB 8300 Linux filesystem
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
[root@liping ~]# partprobe /dev/sdc
[root@liping ~]# 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
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 100M 0 part
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
├─sdb7 8:23 0 2G 0 part
├─sdb8 8:24 0 2G 0 part
├─sdb9 8:25 0 2G 0 part
└─sdb10 8:26 0 2G 0 part
sdc 8:32 0 20G 0 disk
├─sdc1 8:33 0 500M 0 part
└─sdc2 8:34 0 500M 0 part
sdd 8:48 0 20G 0 disk
sr0 11:0 1 3.8G 0 rom /mnt
4. 磁盤格式化
使用mkfs命令格式化磁盤,創建文件系統
//mkfs常用的選項有
-b //設定數據區塊占用空間大小,目前支持1024、2048、4096 bytes每個塊。
-t //用來指定什么類型的文件系統,可以是ext3,ext4, xfs
-i //設定inode的大小
-N //設定inode數量,防止Inode數量不夠導致磁盤不足
-L //預設該分區的標簽label
[root@liping ~]# mkfs.
mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
[root@liping ~]# blkid
/dev/sda1: UUID="b9283078-2957-4615-82f6-897dac4cd6f5" TYPE="xfs"
/dev/sda2: UUID="SKZXLA-7mfq-Mi7R-6Vi9-DuJu-WVwW-7sNZOe" TYPE="LVM2_member"
/dev/sdc1: PARTLABEL="Linux filesystem" PARTUUID="c2517223-78ee-464b-83a6-36ab7c5f1e1f"
/dev/sdc2: PARTLABEL="Linux filesystem" PARTUUID="862524e8-6da5-4d88-a942-0917efb218f5"
/dev/sr0: UUID="2017-07-11-01-39-24-00" LABEL="RHEL-7.4 Server.x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/rhel-root: UUID="b2622c5c-07de-413a-8861-1728ff65674a" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="bfecd432-5935-4d8b-b2fb-795233927098" TYPE="swap"
[root@liping ~]#
[root@liping ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系統標簽=
OS type: Linux
塊大小=1024 (log=0)
分塊大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一個數據塊=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在寫入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@liping ~]# blkid
/dev/sda1: UUID="b9283078-2957-4615-82f6-897dac4cd6f5" TYPE="xfs"
/dev/sda2: UUID="SKZXLA-7mfq-Mi7R-6Vi9-DuJu-WVwW-7sNZOe" TYPE="LVM2_member"
/dev/sr0: UUID="2017-07-11-01-39-24-00" LABEL="RHEL-7.4 Server.x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/rhel-root: UUID="b2622c5c-07de-413a-8861-1728ff65674a" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="bfecd432-5935-4d8b-b2fb-795233927098" TYPE="swap"
/dev/sdb1: UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" TYPE="ext4"
/dev/sdc1: PARTLABEL="Linux filesystem" PARTUUID="c2517223-78ee-464b-83a6-36ab7c5f1e1f"
/dev/sdc2: PARTLABEL="Linux filesystem" PARTUUID="862524e8-6da5-4d88-a942-0917efb218f5"
5. 磁盤掛載
掛載分區前需要創建掛載點, 掛載點以目錄形式出現
如果往掛載點目錄寫入數據, 實際上會寫入到該分區
掛載點建議是空目錄, 不是也不影響掛載分區的使用,但是會隱藏原有的文件
5.1 臨時掛載磁盤
命令:mount掛載磁盤,實質為文件系統指定訪問入口
mount -t //指定文件系統掛載分區,如ext3,ext4, xfs
mount -a //重新讀取/etc/fstab配置文件的所有分區
mount -o //指定掛載參數
[root@liping ~]# mkdir /opt/sdb
[root@liping ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
[root@liping ~]# mount /dev/sdb1 /opt/sdb
[root@liping ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
/dev/sdb1 93M 1.6M 85M 2% /opt/sdb
5.2 永久掛載磁盤
//使用blkid命令獲取各分區的UUID
[root@liping ~]# blkid |grep "sdb1"
/dev/sdb1: UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" TYPE="ext4"
//可以把下面這行寫到/etc/fstab中,永久掛載, 開機自動掛載
[root@liping ~]# blkid |grep "sdb1"
/dev/sdb1: UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" TYPE="ext4"
[root@liping ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Oct 11 00:36:04 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=b9283078-2957-4615-82f6-897dac4cd6f5 /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" /opt/sdb ext4 defaults 0 0
[root@liping ~]# mount -a
[root@liping ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
/dev/sdb1 93M 1.6M 85M 2% /opt/sdb
5.3 卸載掛載磁盤
umount -lf //強制卸載掛載
[root@liping ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sdb1 93M 1.6M 85M 2% /opt/sdb
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
[root@liping ~]# umount -lf /dev/sdb1
[root@liping ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0