Linux磁盘管理

查看磁盘容量和文件大小

df命令磁盘管理

df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法
df(选项)(参数)

选项
-a或–all:包含全部的文件系统;
–block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或–human-readable:以可读性较高的方式来显示信息;
-H或–si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或–inodes:显示inode的信息;
-k或–kilobytes:指定区块大小为1024字节;
-l或–local:仅显示本地端的文件系统;
-m或–megabytes:指定区块大小为1048576字节;
–no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
-P或–portability:使用POSIX的输出格式;
–sync:在取得磁盘使用信息前,先执行sync指令;
-t<文件系统类型>或–type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
-T或–print-type:显示文件系统的类型;
-x<文件系统类型>或–exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
–help:显示帮助;
–version:显示版本信息。

参数
文件:指定文件系统上的文件。

du命令磁盘管理

du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。

语法

du [选项][文件]
选项
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或–total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或–kilobytes 以KB(1024bytes)为单位输出。
-m或–megabytes 以MB为单位输出。
-s或–summarize 仅显示总计,只列出最后加总的值。
-h或–human-readable 以K,M,G为单位,提高信息的可读性。
-x或–one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或–dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或–separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。
–exclude=<目录或文件> 略过指定的目录或文件。
-D或–dereference-args 显示指定符号链接的源文件大小。
-H或–si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或–count-links 重复计算硬件链接的文件。

磁盘格式化

fdisk命令磁盘管理

fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。

语法
fdisk(选项)(参数)

选项
-b<分区大小>:指定每个分区的大小;
-l:列出指定的外围设备的分区表状况;
-s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块;
-u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址;
-v:显示版本信息。
参数
设备文件:指定要进行分区或者显示分区的硬盘设备文件。

实例

首先选择要进行操作的磁盘:

[root@localhost ~]# fdisk /dev/sdb


输入m列出可以执行的命令:

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)


输入p列出磁盘目前的分区情况:

Command (m for help): p
Disk /dev/sdb: 3221 MB, 3221225472 bytes
 255 heads, 63 sectors/track, 391 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
 /dev/sdb1 1 1 8001 8e Linux LVM
 /dev/sdb2 2 26 200812+ 83 Linux


输入d然后选择分区,删除现有分区:

Command (m for help): d
 Partition number (1-4): 1Command (m for help): d
 Selected partition 2


查看分区情况,确认分区已经删除:

Command (m for help): print
Disk /dev/sdb: 3221 MB, 3221225472 bytes
 255 heads, 63 sectors/track, 391 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
Command (m for help):


输入n建立新的磁盘分区,首先建立两个主磁盘分区:

Command (m for help): n
 Command action
 e extended
 p primary partition (1-4)
 p //建立主分区
 Partition number (1-4): 1 //分区号
 First cylinder (1-391, default 1): //分区起始位置
 Using default value 1
 last cylinder or +size or +sizeM or +sizeK (1-391, default 391): 100 //分区结束位置,单位为扇区Command (m for help): n //再建立一个分区
 Command action
 e extended
 p primary partition (1-4)
 p
 Partition number (1-4): 2 //分区号为2
 First cylinder (101-391, default 101):
 Using default value 101
 Last cylinder or +size or +sizeM or +sizeK (101-391, default 391): +200M //分区结束位置,单位为M


确认分区建立成功:

Command (m for help): p
Disk /dev/sdb: 3221 MB, 3221225472 bytes
 255 heads, 63 sectors/track, 391 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
 /dev/sdb1 1 100 803218+ 83 Linux
 /dev/sdb2 101 125 200812+ 83 Linux


再建立一个逻辑分区:

Command (m for help): n
 Command action
 e extended
 p primary partition (1-4)
 e //选择扩展分区
 Partition number (1-4): 3
 First cylinder (126-391, default 126):
 Using default value 126
 Last cylinder or +size or +sizeM or +sizeK (126-391, default 391):
 Using default value 391


确认扩展分区建立成功:

Command (m for help): p
Disk /dev/sdb: 3221 MB, 3221225472 bytes
 255 heads, 63 sectors/track, 391 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
 /dev/sdb1 1 100 803218+ 83 Linux
 /dev/sdb2 101 125 200812+ 83 Linux
 /dev/sdb3 126 391 2136645 5 Extended


在扩展分区上建立两个逻辑分区:

Command (m for help): n
 Command action
 l logical (5 or over)
 p primary partition (1-4)
 l //选择逻辑分区
 First cylinder (126-391, default 126):
 Using default value 126
 Last cylinder or +size or +sizeM or +sizeK (126-391, default 391): +400MCommand (m for help): n
 Command action
 l logical (5 or over)
 p primary partition (1-4)
 l
 First cylinder (176-391, default 176):
 Using default value 176
 Last cylinder or +size or +sizeM or +sizeK (176-391, default 391):
 Using default value 391


确认逻辑分区建立成功:

Command (m for help): p
Disk /dev/sdb: 3221 MB, 3221225472 bytes
 255 heads, 63 sectors/track, 391 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
 /dev/sdb1 1 100 803218+ 83 Linux
 /dev/sdb2 101 125 200812+ 83 Linux
 /dev/sdb3 126 391 2136645 5 Extended
 /dev/sdb5 126 175 401593+ 83 Linux
 /dev/sdb6 176 391 1734988+ 83 Linux

Command (m for help):
从上面的结果我们可以看到,在硬盘sdb我们建立了2个主分区(sdb1,sdb2),1个扩展分区(sdb3),2个逻辑分区(sdb5,sdb6)

注意:主分区和扩展分区的磁盘号位1-4,也就是说最多有4个主分区或者扩展分区,逻辑分区开始的磁盘号为5,因此在这个实验中试没有sdb4的。

最后对分区操作进行保存:

Command (m for help): w
 The partition table has been altered!Calling ioctl() to re-read partition table.
 Syncing disks.


建立好分区之后我们还需要对分区进行格式化才能在系统中使用磁盘。

在sdb1上建立ext2分区:

[root@localhost ~]# mkfs.ext2 /dev/sdb1
 mke2fs 1.39 (29-May-2006)
 Filesystem label=
 OS type: Linux
 Block size=4096 (log=2)
 Fragment size=4096 (log=2)
 100576 inodes, 200804 blocks
 10040 blocks (5.00%) reserved for the super user
 First data block=0
 Maximum filesystem blocks=209715200
 7 block groups
 32768 blocks per group, 32768 fragments per group
 14368 inodes per group
 Superblock backups stored on blocks:
 32768, 98304, 163840Writing inode tables: done
 Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 32 mounts or
 180 days, whichever comes first. Use tune2fs -c or -i to override.


在sdb6上建立ext3分区:

[root@localhost ~]# mkfs.ext3 /dev/sdb6
 mke2fs 1.39 (29-May-2006)
 Filesystem label=
 OS type: Linux
 Block size=4096 (log=2)
 Fragment size=4096 (log=2)
 217280 inodes, 433747 blocks
 21687 blocks (5.00%) reserved for the super user
 First data block=0
 Maximum filesystem blocks=444596224
 14 block groups
 32768 blocks per group, 32768 fragments per group
 15520 inodes per group
 Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912Writing inode tables: done
 Creating journal (8192 blocks): done
 Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 32 mounts or
 180 days, whichever comes first. Use tune2fs -c or -i to override.
 [root@localhost ~]#


建立两个目录/oracle和/web,将新建好的两个分区挂载到系统:

[root@localhost ~]# mkdir /oracle
 [root@localhost ~]# mkdir /web
 [root@localhost ~]# mount /dev/sdb1 /oracle
 [root@localhost ~]# mount /dev/sdb6 /web


查看分区挂载情况:

[root@localhost ~]# df -h


文件系统 容量 已用 可用 已用% 挂载点

/dev/mapper/VolGroup00-LogVol00
 6.7G 2.8G 3.6G 44% /
 /dev/sda1 99M 12M 82M 13% /boot
 tmpfs 125M 0 125M 0% /dev/shm
 /dev/sdb1 773M 808K 733M 1% /oracle
 /dev/sdb6 1.7G 35M 1.6G 3% /web


如果需要每次开机自动挂载则需要修改/etc/fstab文件,加入两行配置:

[root@localhost ~]# vim /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
 LABEL=/boot /boot ext3 defaults 1 2
 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
 /dev/VolGroup00/LogVol01 swap swap defaults 0 0
 /dev/sdb1 /oracle ext2 defaults 0 0
 /dev/sdb6 /web ext3 defaults

磁盘挂载与swap管理

mkfs命令文件系统管理

mkfs命令用于在设备上(通常为硬盘)创建Linux文件系统。mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。

语法
mkfs(选项)(参数)

选项
fs:指定建立文件系统时的参数;
-t<文件系统类型>:指定要建立何种文件系统;
-v:显示版本信息与详细的使用方法;
-V:显示简要的使用方法;
-c:在制做档案系统前,检查该partition是否有坏轨。
参数
文件系统:指定要创建的文件系统对应的设备文件名;
块数:指定文件系统的磁盘块数。

mke2fs命令文件系统管理

mke2fs命令被用于创建磁盘分区上的“etc2/etc3”文件系统。

语法
mke2fs(选项)(参数)
选项
-b<区块大小>:指定区块大小,单位为字节;
-c;检查是否有损坏的区块;
-f<不连续区段大小>:指定不连续区段的大小,单位为字节;
-F:不管指定的设备为何,强制执行mke2fs;
-i<字节>:指定"字节/inode"的比例;
-N<inode数>:指定要建立的inode数目;
-l<文件>:从指定的文件中,读取文件西中损坏区块的信息;
-L<标签>:设置文件系统的标签名称;
-m<百分比值>:指定给管理员保留区块的比例,预设为5%;
-M:记录最后一次挂入的目录;
-q:执行时不显示任何信息;
-r:指定要建立的ext2文件系统版本;
-R=<区块数>:设置磁盘阵列参数;
-S:仅写入superblock与group descriptors,而不更改inode able inode bitmap以及block bitmap;
-v:执行时显示详细信息;
-V:显示版本信息。

参数
设备文件:指定要创建的文件系统的分区设备文件名;
块数:指定要创建的文件系统的磁盘块数量。

mount命令文件系统管理
mount命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。

语法

mount(选项)(参数)

选项
-V:显示程序版本;
-l:显示已加载的文件系统列表;
-h:显示帮助信息并退出;
-v:冗长模式,输出指令执行的详细信息;
-n:加载没有写入文件“/etc/mtab”中的文件系统;
-r:将文件系统加载为只读模式;
-a:加载文件“/etc/fstab”中描述的所有文件系统。
参数
设备文件名:指定要加载的文件系统对应的设备名;
加载点:指定加载点目录。

扩展知识:

  1. df -h 查看挂载信息
  2. mount 单独使用查看使用信息

umount命令文件系统管理

umount命令用于卸载已经加载的文件系统。利用设备名或挂载点都umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。

语法
umount(选项)(参数)
选项
-a:卸除/etc/mtab中记录的所有文件系统;
-h:显示帮助;
-n:卸除时不要将信息存入/etc/mtab文件中;
-r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统;
-t<文件系统类型>:仅卸除选项中所指定的文件系统;
-v:执行时显示详细的信息;
-V:显示版本信息。
扩展知识:
1.!+命令名 (history 使用命令历史)

e2label命令文件系统管理

e2label命令用来设置第二扩展文件系统的卷标。

语法
e2label(参数)
参数
文件系统:指定文件系统所对应的设备文件名;
新卷标:为文件系统指定新卷标。

扩展知识:
1./etc/fstab 默认挂载信息 /etc/rc.local(开机自动挂载)
2.EXT4是第四代扩展文件系统,exts3(centos 5)

创建LVM


1. rpm -qa | grep lvm (检测是否装有lvm命令)
2. yum install -y lvm*
3. pvcreate /dev/sdc (建立物理卷)
4. pvdisplay 查看物理卷
5. vgcreate -s 16M vgEric /dev/sdb
6. vgdisplay
7. lvcreate -l 512M -n lvEric vgEric
8. mkfs.ext4 /dev/vgEric/lvEric (可视化)
9. mkdir /newdir
10. mount /dev/vgEric/lvEric /newdir/
11. df -h
12. lvextend -L +100m /dev/vgEric/lvEric(扩容)
13. resize2fs /dev/vgEric/lvEric(更新)
14. umount /newdir
15. lvremove /dev/mapper/vgEric-lvEric
16. vgremove vgEric
17. pvremove /dev/sdc