【1】分區基礎知識
① 分區方式
-
mbr分區:
1.最多支援四個主分區
2.系統隻能安裝在主分區
3.擴充分區要占一個主分區
4.MBR最大隻支援2TB,但擁有最好的相容性
-
gtp分區:
1.支援無限多個主分區(但作業系統可能限制,比如windows下最多128個分區)
2.最大支援18EB的大容量(1EB=1024 PB,1PB=1024 TB )
3.windows7 64位以後支援gtp
② Windows分區圖示
③ Linux分區
Linux來說無論有幾個分區,分給哪一目錄使用,它歸根結底就隻有一個根目錄,一個獨立且唯一的檔案結構, Linux中每個分區都是用來組成整個檔案系統的一部分。
Linux采用了一種叫
“載入”
的處理方法,它的整個檔案系統中包含了一整套的檔案和目錄,且将一個分區和一個目錄聯系起來。這時要載入的一個分區将使它的存儲空間在一個目錄下獲得。
④ 硬碟說明
Linux硬碟分IDE硬碟和SCSI硬碟,目前基本上是SCSI硬碟。對于IDE硬碟,驅動器辨別符為“
hdx~
”。
-
表明分區所在裝置的類型,這裡是指IDE硬碟了。“hd”
-
為盤号(a為基本盤,b為基本從屬盤,c為輔助主盤,d為輔助從屬盤)。“x”
-
代表分區,前四個分區用數字1到4表示,它們是主分區或擴充分區,從5開始就是邏輯分區。“~”
- 例,hda3表示為第一個IDE硬碟上的第三個主分區或擴充分區,hdb2表示為第二個IDE硬碟上的第二個主分區或擴充分區。
對于SCSI硬碟則辨別為“
sdx~
”,SCSI硬碟是用“
sd
”來表示分區所在裝置的類型的,其餘則和IDE硬碟的表示方法一樣。
指令示意如下:
//檢視硬碟詳細資訊
[root@bogon home]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00058b12
Device Boot Start End Blocks Id System
/dev/sda1 * 1 39 307200 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 39 2358 18631680 83 Linux
/dev/sda3 2358 2611 2031616 82 Linux swap / Solaris
//檢視硬碟分區挂載詳細資訊
[root@bogon home]# lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
sda1 8:1 0 300M 0 part /boot
sda2 8:2 0 17.8G 0 part /
sda3 8:3 0 2G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
//目錄結構樹形式展示 分區資訊與挂載
[root@bogon home]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 1594a9f0-cefd-49f3-92d7-401797cfec33 /boot
├─sda2 ext4 7c099cd4-d17f-4576-adcf-524d13705ee4 /
└─sda3 swap 0e7b48c1-8be9-4346-bf17-ae7fddf77f26 [SWAP]
sr0
//一塊硬碟sd 三個分區;
//兩個ext4分區,一個交換分區swap
// /boot / 分别表示硬碟對應的挂載--把分區與檔案系統關聯
// uuid 是硬碟格式化後唯一辨別分區
// sr0 表示光驅
⑤ ext3、ext4和xfs三種檔案系統
centos7.0開始預設檔案系統是xfs,centos6是ext4,centos5是ext3。
ext3和ext4的最大差別在于,ext3在fsck時需要耗費大量時間(檔案越多,時間越長),而ext4在fsck時用的時間會少非常多
ext4是第四代擴充檔案系統(英語:Fourth EXtended filesystem,縮寫為ext4)是linux系統下的日志檔案系統,是ext3檔案系統的後繼版本。
ext4的檔案系統容量達到1EB,而檔案容量則達到16TB,這是一個非常大的數字了。對一般的桌上型電腦和伺服器而言,這可能并不重要,但對于大型磁盤陣列的使用者而言,這就非常重要了。
ext3目前隻支援32000個子目錄,而ext4取消了這一限制,理論上支援無限數量的子目錄。
xfs是一種非常優秀的日志檔案系統,它是SGI公司設計的。xfs被稱為業界最先進的、最具可更新性的檔案系統技術
xfs是一個64位檔案系統,最大支援8EB減1位元組的單個檔案系統,實際部署時取決于宿主作業系統的最大塊限制。對于一個32位Linux系統,檔案和檔案系統的大小會被限制在16TB。
xfs在很多方面确實做的比ext4好,ext4受限制于磁盤結構和相容問題,可擴充性(scalability)确實不如xfs,另外xfs經過很多年發展,各種鎖的細化做的也比較好。
【2】虛拟機添加硬碟并進行分區、格式化、挂載
① 虛拟機添加硬碟
虛拟機–設定–添加,然後下一步…即可。
添加完後用指令檢視:
從上面可以看到已經添加一塊sdb硬碟大小為2G,此時沒有檔案系統,沒有挂載,麼有UUID。
② 進行分區
添加完硬碟後首先進行分區,操作步驟如下:
[root@bogon dev]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x2737ab8f.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): 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
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)
Command (m for help): n
Command action
e extended
p primary partition (1-4) //主分區
p
Partition number (1-4): 1
First cylinder (1-261, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
Using default value 261
Command (m for help): 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
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)
//最後進行寫入
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
//檢視硬碟與挂載詳情
[root@bogon dev]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sr0
sda
├─sda1 ext4 1594a9f0-cefd-49f3-92d7-401797cfec33 /boot
├─sda2 ext4 7c099cd4-d17f-4576-adcf-524d13705ee4 /
└─sda3 swap 0e7b48c1-8be9-4346-bf17-ae7fddf77f26 [SWAP]
sdb
└─sdb1
總結:分區指令
fdisk /dev/sdb
,開始對/sdb分區
•m 顯示指令清單
•p 顯示磁盤分區同fdisk –l
•n 新增分區
•d 删除分區
•w 寫入并退出
說明:開始分區後輸入n,新增分區,然後選擇p ,分區類型為主分區。兩次回車預設剩餘全部空間。最後輸入
w
寫入分區并退出,若不儲存退出輸入q。
③ 格式化
mkfs指令–>make filesystem的縮寫,用來在特定的分區建立Linux檔案系統。
//ext4是分區檔案系統類型
[root@bogon dev]# mkfs -t ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524112 blocks
26205 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@bogon dev]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sr0
sda
├─sda1 ext4 1594a9f0-cefd-49f3-92d7-401797cfec33 /boot
├─sda2 ext4 7c099cd4-d17f-4576-adcf-524d13705ee4 /
└─sda3 swap 0e7b48c1-8be9-4346-bf17-ae7fddf77f26 [SWAP]
sdb
└─sdb1 ext4 f3b7a79c-1041-403d-889b-83372a2789d4
[root@bogon dev]#
④ 挂載
[root@bogon home]# mkdir sdb1
[root@bogon home]# ll
total 16
drwx------. 25 jane jane 4096 Jun 14 07:06 jane
drwx------. 24 janus mygroup 4096 Jul 4 00:31 janus
drwx------. 5 mysql mysql 4096 Jul 3 02:24 mysql
drwxr-xr-x. 2 root root 4096 Jul 9 02:55 sdb1
//執行指令挂載
[root@bogon home]# mount /dev/sdb1 /home/sdb1/
//檢視挂載後的分區與目錄
[root@bogon home]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sr0
sda
├─sda1 ext4 1594a9f0-cefd-49f3-92d7-401797cfec33 /boot
├─sda2 ext4 7c099cd4-d17f-4576-adcf-524d13705ee4 /
└─sda3 swap 0e7b48c1-8be9-4346-bf17-ae7fddf77f26 [SWAP]
sdb
└─sdb1 ext4 f3b7a79c-1041-403d-889b-83372a2789d4 /home/sdb1
需要注意的是,用指令行挂載重新開機後會失效。
使用
df -h
指令檢視磁盤使用情況:
[root@bogon home]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 8.3G 8.3G 50% /
tmpfs 491M 228K 491M 1% /dev/shm
/dev/sda1 283M 34M 234M 13% /boot
.host:/ 100G 18G 83G 18% /mnt/hgfs
/dev/sdb1 2.0G 3.1M 1.9G 1% /home/sdb1
⑤ 設定永久挂載(自動挂載)
通過修改
/etc/fstab
實作挂載,添加完成後執行mount –a 即刻生效。
可以使用vim快捷操作
yy p
快捷複制一行然後修改,這裡不再使用UUID直接指定目标磁盤。
⑥ 斷開挂載
斷開挂載關系,可以使用指令umount:
//目标磁盤
umount /dev/sdb1;
//目标檔案系統
umount /home/sdb1;
【3】已經存在目錄挂載硬碟
如果目錄已經在系統盤裡存在,這裡面有這樣幾種情況(假設目錄為/home/test,系統盤是挂載在根目錄
/
下的):
1.目錄下面無資料;
2.目錄下面有資料;
3.目錄已經有磁盤挂載;
① /home/test在系統盤下無資料
既然無資料,那就随意操作吧。
② /home/test在系統盤下有資料
這時候如果有磁盤挂載上去是可以挂載的,但是因為目錄指向了新的磁盤,那麼原先的資料将不可見。不過可以将資料先放在别的目錄下,然後再轉移到新的挂載的磁盤。
③ /home/test已經有磁盤挂載
比如 vdb1磁盤挂載在/home/test,那麼此時你再用vdb2磁盤挂載到/home/test是挂載失敗的。如果需要挂載,則先将vdb1解除安裝掉。然後再根據①②判斷處理。
【4】問題總結
① 添加了分區但是格式化為檔案系統的時候找不到
但是使用fdisk -l 指令卻是可以看到:
解決辦法:
使用partprobe指令,作用為建立分區并且在不重新啟動機器的情況下系統能夠識别這些分區。
② 如何檢視硬碟分區類型
使用指令
fdisk -l
或者
parted -l
[root@VM_0_12_centos ~]# parted -l
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0
has been opened read-only.
Error: /dev/sr0: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos //表示mbr
Number Start End Size Type File system Flags
1 1049kB 53.7GB 53.7GB primary ext3 boot