一.硬盤分區知識
1.分區類型
硬盤分區一共有3種:主分區、擴展分區和邏輯分區。擴展分區只不過是邏輯分區的“容器”,實際上只有主分區和邏輯分區進行數據存儲。在一塊硬盤上最多只能有4個主分區,可以另外建立一個擴展分區來代替4個主分區的其中一個,然后在擴展分區下可以建立更多的邏輯分區。
2.分區和格式化
不同的操作系統具有不同的硬盤分區工具,Windows系統下非常有名的分區工具是FDISK,在LINUX系統下進行分區可以使用fdisk,或者使用相同功能的圖形界面程序。
在一塊硬盤上最多只能有4個分區,
通過分區當然不能產生任何文件系統。在分區之后只是對硬盤上的磁盤空間進行了保留,還不能直接使用。在此之后分區必須要進行格式化。在Windows系統下可以通過資源管理器下的文件菜單或者format程序來執行,在Linux系統下大多使用mkfs命令來完成。Linux支持不同的文件系統,應用最廣泛的是ext3。
注意:進行任何磁盤分區或大小改動工作,都會丟失以前的數據,因此在分區之前一定要對數據進行備份。
二.使用fdisk進行硬盤分區
Linux系統使用fdisk命令能將磁盤划分成為若干個區,同時也能為每個分區指定分區的文件系統,比如ext2,ext3,FAT32,SWAP,FAT16以及其他類UNIX操作系統的文件系統等。
1.fdisk的介紹
使用fdisk命令可以對磁盤進行分區。
[root@redhat2 ~]# fdisk
Usage:
fdisk [options] <disk> change partition table
fdisk [options] -l <disk> list partition table(s)
fdisk -s <partition> give partition size(s) in blocks
Options:
-b <size> sector size (512, 1024, 2048 or 4096)
-c switch off DOS-compatible mode
-h print help
-u <size> give sizes in sectors instead of cylinders
-v print version
-C <number> specify the number of cylinders
-H <number> specify the number of heads
-S <number> specify the number of sectors per track
[root@redhat2 ~]#
2.Linux系統下硬盤分區舉例
下面以實例的方式講述Linux系統下創建、刪除、查看分區以及轉換分區的文件系統。
(1).進入fdisk界面,列出所有命令。
[root@redhat2 ~]# fdisk /dev/sda
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):
(2)顯示硬盤分區信息
Command (m for help): p
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 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: 0x0003827d
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 439 3211264 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 439 3917 27937792 83 Linux
Command (m for help):
(3).在非交互式界面下顯示當前硬盤的分區信息。
[root@redhat2 ~]# fdisk -l /dev/sda
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 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: 0x0003827d
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 439 3211264 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 439 3917 27937792 83 Linux
[root@redhat2 ~]#
三.創建文件系統
LINUX系統支持目前主流的文件系統,如VFAT,ext2,ext3,ReiserFS,ISO 9660和SWAP交換分區等。如果在計算機上新增加了一塊硬盤,需要格式化成Linux的文件系統,
最好選擇reiserfs或ext3文件系統。
如果需要使用某個文件系統存放數據,一般要經過以下操作步驟。
(1)使用fdisk命令在硬盤上創建分區。
(2)使用mkfs命令在分區上創建文件系統。
(3)使用mount命令掛載文件系統,或是修改/etc/fstab文件使得開機自動掛載文件系統。
(4)使用umount卸載文件系統。
1.查看系統上的磁盤
[root@redhat2 ~]# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 Jan 17 06:14 /dev/sda
brw-rw---- 1 root disk 8, 1 Jan 17 06:14 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jan 17 06:14 /dev/sda2
brw-rw---- 1 root disk 8, 3 Jan 17 06:14 /dev/sda3
brw-rw---- 1 root disk 8, 16 Jan 17 06:14 /dev/sdb
[root@redhat2 ~]#
2.使用mkfs命令創建文件系統
使用mkfs命令可以在分區上建立各種文件系統。
[root@redhat2 ~]# mkfs
Usage: mkfs [-V] [-t fstype] [fs-options] device [size]
[root@redhat2 ~]#
例1:使用mkfs命令創建文件系統。
(1) 查看當前磁盤上的分區情況,該分別是sda和sdb。
[root@redhat2 ~]# fdisk -l /dev/sda
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 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: 0x0003827d
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 439 3211264 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 439 3917 27937792 83 Linux
[root@redhat2 ~]#
------------------------------------------------------------
[root@redhat2 ~]# fdisk -l /dev/sdb
[root@redhat2 ~]#
//可以看出sdb盤沒有任何分區
(2). 格式化/dev/sdb分區,創建ext3文件系統
[root@redhat2 ~]# mkfs -t ext3 /dev/sdb
mke2fs 1.41.12 (17-May-2010)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
四.掛載和卸載文件系統
1.掛載文件系統
使用mount命令可以將某個分區、光盤、軟盤或是U盤掛載到Linux系統的目錄下。
2.掛載硬盤
例:掛載分區/dev/sda3到/mnt/kk目錄中。
root@redhat2 ~]# mount /dev/sda3 /mnt/kk
[root@redhat2 ~]# cd /mnt/kk
[root@redhat2 kk]# ls
bin dev home lib64 lvm mnt ora_tbs root selinux sys usr yum
boot etc lib lost+found media opt proc sbin srv tmp var
[root@redhat2 kk]#
//使用df命令查看掛載的/dev/sda3分區的信息。
[root@redhat2 kk]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 27499388 5909764 20192736 23% /
tmpfs 796140 88 796052 1% /dev/shm
/dev/sda1 297485 33069 249056 12% /boot
/dev/sda3 27499388 5909764 20192736 23% /mnt/kk
例2:以只讀方式掛載/dev/sdb分區到/mnt/kk目錄中。
[root@redhat2 ~]# mount -o ro /dev/sdb /mnt/kk
[root@redhat2 ~]# mkdir /mnt/kk/yang
mkdir: cannot create directory `/mnt/kk/yang': Read-only file system
3.卸載文件系統
[root@redhat2 ~]# umount /dev/sdb
[root@redhat2 ~]#
[root@redhat2 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 27499388 5909732 20192768 23% /
tmpfs 796140 88 796052 1% /dev/shm
/dev/sda1 297485 33069 249056 12% /boot
[root@redhat2 ~]#
//由上面可以看出/dev/sdb已經卸載
4.查看分區掛載情況
要查看Linux系統分區掛載情況,除了使用df命令之外,還可以通過mount -s 命令以及/查看etc/mtab文件獲取信息。
(1).使用mount -s 命令
例:使用mount命令查看分區掛載情況。
[root@redhat2 ~]# mount -s
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
(2).查看/etc/mtab文件
例:通過/etc/mtab文件查看分區掛載情況。
[root@redhat2 ~]# cat /etc/mtab
/dev/sda3 / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw 0 0
/dev/sda1 /boot ext4 rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
vmware-vmblock /var/run/vmblock-fuse fuse.vmware-vmblock rw,nosuid,nodev,default_permissions,allow_other 0 0
[root@redhat2 ~]#
五.設置開機自動掛載文件系統
將某個分區或是設備掛載了以后才能使用,但是當計算機重新啟動以后,又需要重新掛載,這個時候可以通過修改/etc/fstab文件實現開機自動掛載文件系統。
1./etc/fstab文件簡介
/etc/fstab文件是一個配置文件,它包含了所有分區以及存儲設備的信息。其中包含了磁盤分區和存儲設備如何掛載,以及掛載什么地方的信息。
如果在Linux系統中不能訪問Windows的分區,或者作為一名普通用戶,不能掛載光驅和向軟盤中寫入數據,或者在管理CD-RW的過程中遇到了問題,就有可能是錯誤地配置了/etc/fstab文件,通常可以通過編輯/etc/fstab這個文件來解決前面提到的問題。
/etc/fstab文件是一個簡單的文本文件,可以用任何文本編輯器去編輯它,但是必須要以root用戶登錄才可以編輯該文件。
2./etc/fstab文件詳解
由於每台計算機系統的分區和設備屬性不同,所以/etc/fstab文件也不癢,但是基本的結構總是相似的。下面就是/etc/fstab文件北榮的一個示例。
[root@redhat2 ~]# cat /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Jun 2 13:54:22 2014
#
# 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
UUID=e49f5ee2-2691-4d26-8359-f1f1624a01df / ext4 defaults 1 1
UUID=a717290f-db0b-403e-9649-2a26e4ab8e76 /boot ext4 defaults 1 2
UUID=ebe91f80-8f5b-4813-a622-f158a9a0874b swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
[root@redhat2 ~]#
每1行包含着1個設備或分區的信息,每1行又有多個列的信息。第一列是設備名,第2列是它的掛載點,第3列是它的文件系統格式,第4是掛載參數,第5列是轉存選項,第6列是文件系統檢查選項。
下面詳細講解/etc/fstab文件的具體構成。
(1).設備和默認掛載目錄
第1列和第2列的內容是設備和默認掛載點。Linux系統為每個設備或分區都設定了掛載目錄,一般選擇在/mnt目錄下創建掛載點。當Linux系統啟動時,這些分區和設備同樣會被自動地掛載。
(2).文件系統格式
第3列指定了設備和分區的文件系統格式。
(3).掛載選項
第4列列出了對於每一個設備或者分區的所有掛載選項。
❶auto和noauto
通過使用auto選項,設備會在系統啟動時自動掛載,auto是默認選項,如果不希望某些設備自動被掛載,在/etc/fstab的對應地方把auto選項改為noauto即可。通過使用noauto選項,可以在需要的時候才掛載設備。
❷user和nouser
user選項允許一般用戶掛載設備,然而noauto選項僅允許讓root用戶掛載設備。noauto是默認選項,主要是在於防止新用戶的越權行為。如果一般用戶不能掛載自己的cdrom,floppy及Windows分區等,可以在/etc/fstab里邊加入user選項。
❸exec和noexec
exec選項允許執行被設為exec分區上的二進制文件,然而noexec選項卻不允許這樣做,exec是默認的選項。
❹ro
ro選項是以可讀可寫方式掛載文件系統。
❺rw
rw選項是以可讀可寫方式掛載文件系統。
❻sync和async
這兩個選項指出了文件系統的I/O將以何種方式進行,sync表示I/O將會同步進行。例如,復制一個文件到軟盤時,那些改變將會在執行命令的同時物理性地寫入到軟盤中。
當使用async選項時,I/O將會被異步執行,這時當復制一個文件到軟盤中時,用戶所做的改變會在命令執行后的較長時間后才被物理性地寫入軟盤中。
❼defaults
使用此選項與使用rw,suid,dev,exec,auto,nouser,async選項時一樣的功能。
六.使用交換空間
1.添加交換空間
有時,用戶需要在安裝Linux系統后添加更多的交換空間。用戶可以添加一個交換分區或添加一個交換文件,推薦使用添加一個交換分區。交換空間可以是一個專用的交換分區,也可以是一個交換文件,或是兩者的結合。交換空間總的大小至少為計算機內存的1~2倍左右,但是它最好不要超過2GB容量。
2.添加交換分區
例1:添加交換分區
❶創建交換分區。
使用fdisk命令已經創建好分區/dev/sdb,假設將分區/dev/sdb創建為交換(SWAP)分區,在SHELL提示下以root用戶身份輸入以下命令。
[root@redhat2 ~]# mkswap /dev/sdb
mkswap: /dev/sdb: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 5242876 KiB
no label, UUID=e71d426d-3e73-4db1-834b-7ebbe477bf20
//將/dev/sdb分區創建為交換分區
[root@redhat2 ~]# free
total used free shared buffers cached
Mem: 1592280 338744 1253536 0 25484 142940
-/+ buffers/cache: 170320 1421960
Swap: 3211256 0 3211256
[root@redhat2 ~]#
//因為當前還沒有啟動交換分區,所以使用free命令無法看到。
❷啟用交換分區。
輸入以下命令啟用交換分區/dev/sdb。
[root@redhat2 ~]# swapon /dev/ssdb
[root@redhat2 ~]# free
total used free shared buffers cached
Mem: 1592280 342712 1249568 0 25568 142956
-/+ buffers/cache: 174188 1418092
Swap: 8454128 0 8454128
[root@redhat2 ~]#
//因為當前已經啟動了交換分區/dev/sdb所以總的交換分區容量已經增加了
❸確認已經啟用交換分區。
創建並啟用了交換分區之后,使用如下命令查看交換分區是否已啟用。
[root@redhat2 ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda2 partition 3211256 0 -1
/dev/sdb partition 5242872 0 -2
[root@redhat2 ~]#
//可以看到當前計算機的SWAP分區由/dev/sda2和/dev/sdb這兩個分區構成
❹如果要在系統引導時啟用交換分區,編輯/etc/fstab文件添加如下內容。然后在系統下次引導時,就會啟用新建的交換分區。
/dev/sdb swap swap defaults 0 0
3.添加交換文件
❶創建文件/swapfile
將大小乘以1024來判定塊的大小。例如,大小為68MB的交換文件的塊大小為65536。
在shell提示下以root用戶身份輸入以下命令,其中的count等於想要輸入的塊大小。
[root@redhat2 ~]# dd if=/dev/zero of=/swapfile bs=1024 count=66536
66536+0 records in
66536+0 records out
68132864 bytes (68 MB) copied, 0.816242 s, 83.5 MB/s
[root@redhat2 ~]# ls /
bin etc lib64 media ora_tbs sbin swapfile usr
boot home lost+found mnt proc selinux sys var
dev lib lvm opt root srv tmp yum
[root@redhat2 ~]#
//在“/”目錄下可以看到文件swapfile
❷創建交換文件。
使用以下命令創建交換文件。
[root@redhat2 ~]# mkswap /swapfile
mkswap: /swapfile: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 66532 KiB
no label, UUID=d9ba8642-e1df-4e68-a2fe-b3a2a656cd0c
[root@redhat2 ~]#
❸啟用交換文件。
使用如下命令啟用交換文件。
[root@redhat2 ~]# swapon /swapfile
❹新添加了交換分區並啟用它之后,使用如下命令確保交換文件已被啟用了。
[root@redhat2 ~]# free
total used free shared buffers cached
Mem: 1592280 612556 979724 0 55060 342040
-/+ buffers/cache: 215456 1376824
Swap: 8520656 0 8520656
[root@redhat2 ~]#
[root@redhat2 ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda2 partition 3211256 0 -1
/dev/sdb partition 5242872 0 -2
/swapfile file 66528 0 -3
[root@redhat2 ~]#
❺如果要在系統引導時啟用交換文件,編輯/etc/fstab文件添加如下內容。然后在系統下次引導時,就會啟用新建的交換文件。
/swapfile swap swap defaults 0 0
4.刪除交換空間
當某個交換分區或交換文件不再需要時,可以使用如下步驟將其刪除。
❶刪除交換分區
例:在shell提示下以root用戶身份輸入以下命令禁用交換分區(這里的/dev/sdb是交換分區)。
[root@redhat2 ~]# swapoff /dev/sdb
[root@redhat2 ~]# free
total used free shared buffers cached
Mem: 1592280 608828 983452 0 55232 342056
-/+ buffers/cache: 211540 1380740
Swap: 3277784 0 3277784
[root@redhat2 ~]#
如果要在系統引導時不啟用交換分區,編輯/etc/fstab文件刪除如下內容。然后在系統下次引導時,就不會啟用交換分區。
/dev/sdb swap swap defaults 0 0
❷刪除交換文件
1).在shell提示下以root用戶身份執行以下命令來禁用交換文件(這里的/swapfile是交換文件)。
[root@redhat2 ~]# swapoff /swapfile
[root@redhat2 ~]# free
total used free shared buffers cached
Mem: 1592280 626392 965888 0 55312 342060
-/+ buffers/cache: 229020 1363260
Swap: 3211256 0 3211256
[root@redhat2 ~]#
2).刪除/swapfile文件。
輸入以下命令來刪除/swapfile文件。
[root@redhat2 ~]# rm -rf /swapfile
3).如果要在系統引導時不啟用交換文件,編輯/etc/fstab文件刪除如下內容。然后在系統下次引導時,就不會啟用交換文件。
/swapfile swap swap defualts 0 0
