一.硬盘分区知识node
1.分区类型linux
硬盘分区一共有3种:主分区、扩展分区和逻辑分区。扩展分区只不过是逻辑分区的“容器”,实际上只有主分区和逻辑分区进行数据存储。在一块硬盘上最多只能有4个主分区,能够另外创建一个扩展分区来代替4个主分区的其中一个,而后在扩展分区下能够创建更多的逻辑分区。shell
2.分区和格式化异步
不一样的操做系统具备不一样的硬盘分区工具,Windows系统下很是有名的分区工具是FDISK,在LINUX系统下进行分区可使用fdisk,或者使用相同功能的图形界面程序。async
在一块硬盘上最多只能有4个分区,编辑器
经过分区固然不能产生任何文件系统。在分区以后只是对硬盘上的磁盘空间进行了保留,还不能直接使用。在此以后分区必需要进行格式化。在Windows系统下能够经过资源管理器下的文件菜单或者format程序来执行,在Linux系统下大多使用mkfs命令来完成。Linux支持不一样的文件系统,应用最普遍的是ext3。ide
注意:进行任何磁盘分区或大小改动工做,都会丢失之前的数据,所以在分区以前必定要对数据进行备份。工具
二.使用fdisk进行硬盘分区ui
Linux系统使用fdisk命令能将磁盘划分红为若干个区,同时也能为每一个分区指定分区的文件系统,好比ext2,ext3,FAT32,SWAP,FAT16以及其余类UNIX操做系统的文件系统等。this
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