学习笔记(七)——Linux 磁盘管理

Linux 磁盘管理:

    1.1常用命令: df   du  fdisk

    1df 命令用来查看分区的使用情况:

[root@localhost~]# df –h        //以相应单位显示分区大小

[root@localhost~]# df –h --total   //最后一行汇总显示磁盘使用的总体情况

[root@localhost~]# df –i        //查看 inode 的使用情况

[root@localhost~]# df – T       //查看分区的文件系统类型

补充:在使用 df 查看系统分区及挂载情况时会有这么一行:

Filesystem      Size Used Avail Use% Mounted on

/dev/sda3        18G 5.9G   11G  36% /

tmpfs           440M     0 440M   0% /dev/shm

tmpfs 分区,挂载在 /dev/shm 下,它的大小为 440M,使用 free 命令查看系统内存及交换分区信息,可以看到 tmpfs 大体等于系统内存的一半(899M):

[root@localhost~]# free

total   used  free   shared   buffers  cached

Mem: 899420 194916704504  244  15696 76052

-/+buffers/cache:     103168     796252

Swap:2047996  0  2047996

从它的大小上我们可以明显看出来, tmpfs 并非 swap,那么tmpfs 是什么呢?其实,tmpfs 是一个临时文件系统,驻留于内存中,使用它可以提高文件访问速度,并能保证系统重启时自动清除这些文件。知道 tmpfs 的这一特性后,我们就可以把一些对读写性能要求较高,但是数据又可以丢失的保存在 /dev/shm 中。我们可以自定义该分区的大小,当然,因为tmpfs 是内存的一部分,所以最大不能超过内存的实际大小:

[root@localhost~]# mount –o remount,size=180M tmpfs /dev/shm

[root@localhost~]# df –h

可以发现其大小变为了180M。但是这种自定义方法只是暂时性的,重启后还会恢复系统默认值,修改/etc/fstab 可以使其永久生效:

[root@localhost~]# vim /etc/fstab

tmpfs   /dev/shm  tmpfs  defaults,size=180M   0   0

保存退出即可。也可以使用如下命令创建新的 tmpfs 文件系统:

[root@localhost~]# mount –t tmpfs tmpfs /temporary –o size=200M

之后修改/etc/fstab 添加一行新的记录即可。

 

2du 命令用来查看文件/目录的大小:

[root@localhost~]# du –sh /etc/

[root@localhost~]# du –sb /tmp/learn/file.log //查看具体大小

 

3fdisk 命令用于磁盘分区:

[root@localhost~]# fdisk –l //查看所有磁盘及分区情况

[root@localhost~]# fdisk –l /dev/sdb //查看特定磁盘及其分区

 

1.2 使用硬盘三步曲:分区–> 格式化à挂载

1)分区:

[root@localhost ~]#fdisk /dev/sdb  // /dev/sdb 硬盘分区

在扩展分区里可以划分逻辑分区,逻辑分区编号从 5 开始

扩展分区和主分区的地位一样,都占用一个分区表(16字节),4个分区表64字节是MBR的组成部分。

补充:查看所用的Linux 系统支持的文件系统格式:

[root@localhost~]# cat /etc/filesystems

2)格式化:

方法一:

[root@localhost~]# mkfs.ext4 /dev/sdb1 /usr/local/src

同样的命令还有mkfs.ext3  mkfs.ext2  mkfs.ext1,将分区格式化为不同的文件系统类型。

方法二:

[root@localhost~]# mke2fs –t ext4 /dev/sdb1

下面是分区过程中显示的部分信息,主要是 Block size —— 块的大小,(5.00% reserved for the super user——为 root 预留的空间:

Block size=4096(log=2)

Fragmentsize=4096 (log=2)

Stride=0 blocks,Stripe width=0 blocks

66384 inodes,265064 blocks

13253 blocks(5.00%) reserved for the super user

这些都可以在分区时通过相应参数指定:

[root@localhost~]# mke2fs –t ext4 –b 1024 –m 3 /dev/sdb1

其中,-b 参数指定块的大小,1024 2048 4096 8192 等, -m 参数指定为 root 用户的预留空间(预留空间在 df –h 中显示不出来)。这些参数同样适用于方法一(当然没有–t 参数指定文件系统类型了):

[root@localhost~]# mkfs.ext4 –b 2048 –m 10 /dev/sdb1

3)挂载:

[root@localhost~]# mount /dev/sdb1 /usr/local/src

注:一个目录可以挂载多个硬盘分区,但后挂载的会顶替之前挂载过的。

保存挂载信息,两种方法:

方法一:

[root@localhost~]# vim /etc/fstab

/dev/sdb1  /usr/local/src  ext4 defaults  0 0

保存退出即可。

补充:/etc/fstab 配置文件中各列所代表的含义

第一列   分区表示,可以为LABELUUID /dev/sdb1

第二列   挂载点

第三列   分区所使用的文件系统格式

第四列   mount的一些挂载参数,默认直接 defaults 即可

第五列   是否被 dump 备份, 1 备份, 0 不备份

第六列   开机时是否自检磁盘,1, 2表示检测,优先级 1 > 2, 0表示不检测。其中 / 分区必须设置为 1 ,整个 /etc/fstab 配置文件中在该列只允出现一个 1 ,所以如果其他磁盘分区需要开机自检,将该列设置为 2 即可。

方法二:

[root@localhost~]# vim /etc/rc.local  // /etc/rc.d/rc.local

mount /dev/sdb1/usr/local/src

保存退出即可。

4)解除挂载:

以下三种方式均可以解除挂载,任选其一即可:

[root@localhost~]# umonut /dev/sdb1

[root@localhost~]# umount /usr/local/src

[root@localhost~]# umount /dev/sdb1 /usr/local/src

之后删除/etc/fstab /etc/rc.local 中的相关配置信息即可。

 

补充:mount –o 用途很多,后面可以跟多种选项,具体如下:

“async/sync” :async表示和磁盘和内存不同步,系统每隔一段时间把内存数据写入磁盘中,而sync则会时时同步内存和磁盘中数据;
    “auto/noauto” : 开机自动挂载/不自动挂载;
    “default” : 按照大多数永久文件系统的缺省值设置挂载定义,它包含了rw, suid, dev, exec, auto, nouser, async
    “ro” : 按只读权限挂载
    “rw” : 按可读可写权限挂载
    “exec/noexec” : 允许/不允许可执行文件执行,但千万不要把根分区挂载为noexec,那就无法使用系统了,连mount命令都无法使用了,这时只有重新做系统了;
   “user/nouser” : 允许/不允许root外的其他用户挂载分区,为了安全考虑,请用nouser
    “suid/nosuid” : 允许/不允许分区有suid属性,一般设置nosuid
    “usrquota” : 启动使用者磁盘配额模式,磁盘配额相关内容在后续章节会做介绍;
    “grquota” : 启动群组磁盘配额模式;

举几个例子:

1)请将/dev/sdb1 以只读方式挂载到 /data 下:

[root@localhost~]# mount –o ro /dev/sdb1 /data

2)重新挂载 /dev/sdb1,将其挂载到 /home 下,并以读写方式挂载:

[root@localhost~]# mount –o remount,rw /dev/sdb1 /home


    特殊用法:

1)挂载镜像文件:

[root@localhost src]# mount -o loop ./CentOS.iso /mnt

之后可以去/mnt 目录下查看镜像文件中的内容并使用。

2)实时同步两个目录中的内容(用的很少,仅供了解):
mount --bind   /dir1 /dir2 

相当于创建了目录之间的一种软链接。

 
获取磁盘分区的UUID

[root@localhost ~]# blkid  //查看所有分区的UUID,包括已

//经挂载的和还未挂载的 blockid

使用UUID进行挂载:
[root@localhost ~]# mount UUID="……" /mnt 

相应的,修改/etc/fstab 文件:

UUID="……"  /data   ext4   defaults  0  0

使用UUID的好处是,多块磁盘,如果在服务器上换了插槽位置,设备名会变,但磁盘的UUID是唯一且不会变的。

在实际应用中,可以先修改 /etc/fstab,直接把将要挂载的磁盘分区配置好,然后使用下条命令:

[root@localhost~]# mount –a

该命令的作用是,根据/etc/fstab 配置文件重新挂载磁盘。比先挂载磁盘再修改 /etc/fstab 配置文件要方便一点。

 

补充:

1. partprobe 命令,可以重读分区表,在不重启系统的情况下刷新分区情况,长用于在挂载硬盘分区后 df –Th 显示不出来的情况:

[root@localhost~]# partprobe

2.fsck 命令,用于检查修复Linux 文件系统,在自己的虚拟机上可以用用,在真机上几乎不使用,以免破话文件,在此仅供了解:

[root@localhost~]# fsck –y /dev/sda3   // -y 参数自动修复


参考资料:http://www.aminglinux.com/bbs/thread-7621-1-1.html

本文出自 “细桶假狗屎” 博客,请务必保留此出处http://xitongjiagoushi.blog.51cto.com/9975742/1623707

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。