2018-1-27Linux系统管理(3)(4)磁盘和文件系统管理工具

在之前的内容当中我们讲到了磁盘的特性以及介绍了磁盘的分区,然后又介绍到文件系统的概念等。在现在的Linux中无论是机械式硬盘还是U盘以及固态硬盘,都统一命名为/dev/sd[a-z]#,而管理分区,无论是创建还是删除分区,可以使用fdisk、parted、sfdidk,而我们要想在磁盘上存储数据的话,就要创建文件系统。在Linux中,文件系统的类型例如:ext2、ext3、ext4、xfs、reiserfs、iso9600、swap等分区。之后我们由介绍了文件系统中组织结构当中的术语,分别为block groups、block、inode table、inode、inode bitmap、block bitmap、super block。那么在这一章当中,我们开始介绍磁盘和文件系统的管理。

一、磁盘和文件系统管理

我们在CentOS 6中创建主分区,添加一块磁盘设备,然后对其进行创建三个主分区一个扩展分区,扩展分区下有逻辑分区,步骤如下:

# 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 0xeb83365f.
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): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G

这样重复三次,三个主分区就创建了,之后在创建扩展分区,在Partition number,每次创建的时候数字要加1,在扩展分区中就没有这个操作了,完成点击w,如果没有警告的话,就查看一下文件看一下内核是否读到该操作:

# cat /proc/partitions 
major minor  #blocks  name

   8        0   52428800 sda
   8        1     204800 sda1
   8        2    5242880 sda2
   8        3    1048576 sda3
   8        4          1 sda4
   8        5   11534336 sda5
   8        6        981 sda6
   8        7    1052548 sda7
   8        8    1060258 sda8
   8        9    1060258 sda9
   8       10    1060258 sda10
   8       16   20971520 sdb
   8       17    2104483 sdb1
   8       18    2104515 sdb2
   8       19    2104515 sdb3
   8       20          1 sdb4
   8       21    2104483 sdb5
   9      127    2102272 md127

那么现在要如何更改分区类型,例如将/dev/sdb6下的Linux分区更改为swap分区。我们先来看一下该分区的ID号为多少。

# fdisk /dev/sdb

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): p

Disk /dev/sdb: 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: 0xeb83365f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263         524     2104515   83  Linux
/dev/sdb3             525         786     2104515   83  Linux
/dev/sdb4             787        2610    14651280    5  Extended
/dev/sdb5             787        1048     2104483+  83  Linux
/dev/sdb6            1049        1441     3156741   83  Linux

可以看出,/dev/sdb6的分区ID为83,那么我们将要更改为swap分区,如果不知道如何更改,按m进行查看帮助。之后我们按t键并选择序号为6,按L键查看分区列表,找到swap分区的ID号,输入该ID号就可以完成并保存。

Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): L

Hex code (type L to list codes): 82
Changed system type of partition 6 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/sdb: 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: 0xeb83365f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263         524     2104515   83  Linux
/dev/sdb3             525         786     2104515   83  Linux
/dev/sdb4             787        2610    14651280    5  Extended
/dev/sdb5             787        1048     2104483+  83  Linux
/dev/sdb6            1049        1441     3156741   82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

如果提示设备或资源忙,就使用partx让内核重读该分区表。

# partx -a /dev/sdb

二、文件系统的管理命令

那么现在我们开始管理磁盘上的文件系统,此前讲过文件系统管理工具,而文件系统(内核级)通常由两部分组成,第一种是让磁盘工作起来的某个模块,我们称之为文件系统的驱动;第二种是文件系统的管理工具,我们要想真正的管理某个分区,或者利用该文件系统的驱动,那么用户就得需要一些管理工具用来管理该分区。

   内核级文件系统的组成部分:  
      文件系统驱动:由内核系统提供;
      文件系统管理工具:由用户空间应用程序提供;

要想使用该文件系统驱动的话,有可能先要在用户空间当中手动安装该程序来进行提供。
  那么如何创建文件系统,对于文件系统来说,它们的创建方式也会有所不同,不过我们都可以用mkfs来进行创建该分区。

   ext系列文件系统管理工具:
     mkfs.ext2, mkfs.ext3, mkfs.ext4
     
     mkfs -t ext2 = mkfs.ext2
    
     ext系列文件系统专用管理工具:mke2fs
         mke2fs [OPTIONS] device
             -t {ext2|ext3|ext4}:指明要创建的文件系统类型;
                mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
             -b {1024|2048|4096}:指明文件系统的块大小;
             -L LABEL:指明卷标;
             -j:创建有日志功能的文件系统ext3;
                mke2fs -k = mke2fs -t ext3 = mkfs.ext3
             -i #:bytes-per-inode, 指明inode与字节的比率;每多少字节创建一个inode;
             -N #:直接指明要给此文件系统创建的inode数量;
             -m #:指定预留空间,百分比;
            
             -O[^]FEATURE:以指定特性创建目标文件系统
            
         e2abel命令:卷标的查看与设定
             查看:e2label device
             设定:e2label device LABEL
            
         tune2fs命令:查看或修改ext系列文件系统的某些属性;
             adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;
             注意:块大小创建后不可修改;
            
             tune2fs [OPTIONS] device
                -l:查看超级块的内容;
                 
                修改指定文件系统的属性:
                    -j:ext2 --> ext3;
                    -L LABEL:修改卷标;
                    -m #:指定预留的空间,百分比;
                    
                    -O[^] FEATURE:以指定的特性创建目标文件系统;
                    
                    -o[^]mount_options:开启或关闭某种默认挂载选项;
                        acl
                        ^acl
                        
         dumpe2fs命令:显示ext系列文件系统的属性信息;
            dumpe2fs [-h] device

下一个命令为fsck,为文件系统检测命令,该命令是用于实现文件系统的检测工具,就像Windows一样,如果有意外的情况(如断电),则Windows有可能会对硬盘来进行检测,当然也可以手动停止停止。

   用于文件实现文件西永的检测工具:
     因进程意外中止或系统崩溃等等原因导致写入操作非正常时,可能会造成文件损坏;此时,应该检测并修复文件系统;建议:离线进行;
    
     ext系列文件系统的专用工具:
         e2fsck [OPTIONS] device
             -y:对所有问题自动回答为yes;
             -f:即使文件系统处理clean状态,仍要强制检测;
        
         fsck: check and repair a Linux filesystem
             -t fstype:指明文件系统类型;
                fsck -t ext4 = fsck.ext4
             -a:无须交互而自动修复所有错误;
             -r:交互式修复;

那么以上就是ext系列文件系统的管理工具,无论是创建、修复、检测等命令,都对其一一介绍,需要的是熟练操作并且轻车熟路的去驾驭。
  我们现在就创建一个ext4文件系统,用刚才的/dev/sdb6。

   # mkfs.ext4 /dev/sdb6

之后我们可以查看该设备的文件系统类型,用blkid命令。

   # blkid /dev/sdb6 
   /dev/sdb6: UUID="e8879f1b-05ea-4512-abe6-c6aa8685ce80" TYPE="ext4"

需要注意的是,CentOS 6不支持xfs文件系统,想使用的话需安装。至于如何安装,我们主要使用的yum命令来进行安装,该目录在/etc/yum.repos.d/,创建一个.repo的仓库文件。

# cd /etc/yum.repos.d/
# cat aliyun.repo 
[aliyun-base]
name=aliyun-base
baseurl=https://mirrors.aliyun.com/centos/6/os/x86_64/
gpgkey=https://mirrors.aliyun.com/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6

[aliyun-epel]
name=aliyun-epel
baseurl=https://mirrors.aliyun.com/epel/6Server/x86_64/
gpgcheck=0

我们用nano来进行编辑创建一个文件,将上述的内容复制到该文件中,之后我们只用yum repolist来检测一下:

   # yum repolist

之后我们安装xfs文件系统,该包名为xfsprogs。

   # yum -y install xfsprogs

安装完成之后我们使用mkfs.双击tab键来进行查看。

   # mkfs.
   mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs 

   创建:mkfs.xfs /dev/sd[a-z]#
   检测:fsck.xfs

那么下面我们介绍的是blkid命令,就是查看该文件系统的相关属性,那么最常用的方法如下:

   blkid device
   blkid -L LABEL:根据LABEL定位设备;
   blkid -U UUID:根据UUID定位设备;

接下来我们说一下swap文件系统,简单来说swap分区的作用就是,当内存占满时,使用LRU最近最少使用算法,将某一个空闲进程放置在该交换分区中。那么如何管理swap文件系统。

   swap文件系统:
     Linux上的交换分区必须使用独立的文件西永;
         且文件系统的System ID必须为82;
        
     创建swap设备:mkswap命令
         mkswap [OPTIONS] device
             -L LABEL:指明卷标;
             -f:强制;

我们开始创建Windows系统,主要针对的是fat32(vfat),NFTS不能识别或者说不能支持(仅限于CentOS)。

   Windows无法识别Linux的文件系统;因此,存储设备需要两种系统之间交叉使用时,应该使用 Windows和Linux同时支持的文件系统;fat32(vfat);
     # mkfs.vfat device

对于Linux,或者说对于文件系统分区来讲,要想被访问到,必须要关联至当前根下某一个位置,而这种行为我们称之为挂载,与之对该目录进行关联。

   文件系统的使用:
     首先要"挂载":mount命令和umount命令;
    
     根据文件系统以外的其它文件系统要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作过程称为"挂载";而此目录即称为"挂载";
     
     挂载点:mount_point,用于作为另一个文件系统的访问入口;

要想在Linux中实现挂载操作,我们使用mount命令来进行挂载,该命令格式为:

   mount [-fnrsvw] [-t vfstype] [-o options] device dir

该命令选项为:

   命令选项:
     -r:readonly, 只读挂载;
     -w:read and write, 读写挂载;
     -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n选项用于禁止此特性;
    
     -t type:指明要挂载设备上的文件系统类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备文件的系统类型;
    
     -L LABEL:挂载时以卷标的方式指明设备;
         mount -L LABEL dir
        
     -U UUID:挂载时以UUID的方式指明设备;
        mount -U UUID dir

还有一个选项为-o,我们称之为挂载选项,那么该选项是指该设备挂载时指定文件系统的特性。

   -o options:挂载选项
     sync/rsync:同步/异步操作;
     atime/mtime:文件或目录在被访问时是否更新其访问时间戳;
     diratime/nodiratime:目录再被访问时是否更新其访问时间戳;
     remount:重新挂载;
     acl:支持使用acl功能;
         # mount -o remount,acl device dir
         # mount -o acl device dir
         # tune2fs -o acl device
    
     ro:只读
     rw:读写
     dev/nodev:设备上是都允许创建设备文件;
     exec/noexec:是否允许运行设备上的程序文件;(可以防止未经授权的文件自动启动)
     auto/noauto:
     user/nouser:是否普通用户挂载此文件系统;
     suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;
    
     default:Use default options:rw, suid, dev, exec, auto, nouser, and async.

不过,需要注意以下几点就能可以进行挂载。

   (1) 事先挂载
   (2) 应该使用未被或不会被其它进程使用到的目录;
   (3) 挂载点下原有的文件将会被隐藏;

那么我们现在去挂载一个磁盘,在CentOS 7中,以刚才的/dev/sda6作为挂载设备,将它挂在到/media/disk中,不过,由于disk事先不存在,所以我们要创建该目录。

   # mount /dev/sda6 /media/disk/

挂载成功之后,我们进入该目录,创建一个文件或目录;名为tests。之后,我们将/etc/fstab文件复制到当前目录中来。

# mkdir tests
# cp /etc/fstab ./
# ll
total 4
-rw-r--r-- 1 root root 595 Jan 30 10:08 fstab
drwxr-xr-x 2 root root   6 Jan 30 10:08 tests

所以,无论那个目录位置作为该设备的访问入口,那么该设备入口的文件也会随之显示在该目录中。
  我们还有一个使用技巧,或者叫做秘籍,我们不止可以把设备挂载到某个目录上,还可以将目录关联至某个目录上,这个可以称之为绑定。

   一个使用技巧:
     可以实现将目录绑定至另一个目录上,作为其临时的访问入口;
        mount --bind 源目录 目标目录

我们还可以查看在当前系统上所有已经挂载的设备:

   # mount
   # cat /etc/mtab
   # cat /proc/mounts

如果我们挂载光盘的话,需要指定设备为cdrom或者为sr0,用来挂载光盘:

   挂载光盘:
     mount -r /dev/cdrom mount_point

     光盘设备文件:/dev/cdrom, /dev/dvd

挂载U盘也是一样的,但需要识别该设备文件:

   挂载U盘:
     事先识别U盘的设备文件;

如果要卸载该设备,卸载设备的命令为umount命令。

   umount命令:
     umount device | dir

不过我们需要注意的是:如果你在当前的挂载点进行卸载的话,则会警告你设备或资源忙,卸载不成功。

注意:正在被进程访问到的挂载点无法进行卸载;
# umount /dev/sda6 
umount: /media/disk: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

所以说要先退出挂载点目录在进行卸载,然后在进入该目录,看其文件是否存在。

# cd
# umount /dev/sda6 
# cd /media/disk/
# ll
total 0

但是,如果非得强制卸载的话,我们需要查看是被那个进程所被占用。

   查看被那个或那些进程所占用:
     # lsof MOUNT_POINT
     # fuser -v MOUNT_POINT
    
     终止所有正在访问某个挂载点的进程:
     # fuser -km MOUNT_POINT

三、交换分区

我们此前也讲过交换分区的概念,那么现在如何管理交换分区,例如启用与禁用。

   交换分区的启用和禁用:
     创建交换分区的命令:mkswap
    
     启用:swapon
          swapon [OPTIONS] [DEVICE]
              -a:定义在/etc/fstab文件中的所有swap设备;
            
     禁用:swapoff
          swapoff DEVICE

四、fatab文件

在系统中,启动开机时有些设备就会自动启动挂载到该目录下,而我们创建的设备即使挂载到某个目录当中,等到再次开机时,还要重新挂载一遍,这是因为在系统启动时,系统会读取fatab配置文件来进行自动挂载设备。

   设定除根文件系统以外的其它文件系统能够开机时自动挂载;/etc/fstab文件
     每行定义一个要挂载的文件及相关属性:
        共6个字段:
            (1) 要挂载的设备:
                设备文件
                LABEL
                UUID
                伪文件系统:如sysfs, proc, tmpfs等;
                
            (2) 挂载点
                swap类型的设备挂载点为swap;
            
            (3) 文件系统类型;
            
            (4) 挂载选项
                default:默认使用挂载选项;
                如果同时指明多个挂载选项,彼此间以逗号分隔即可;
                default, acl, noatime, noexec
                
            (5) 存储频率
                0、从不备份;
                1、每天备份;
                2、每隔一天备份;
                
            (6) 自检次序
                0、从不备份
                1、首先自检,通常只能是根文件西永可用1;
                2、次级自检;
                ...
                
        mount -a:可自动挂载定义在此文件中的所有支持自动挂载的设备;

示例,我们将CentOS 7的/dev/sda6进行开机时自动挂载。
  首先,我们现检查该设备的UUID。

   # blkid /dev/sda6 
   /dev/sda6: UUID="94b5bc24-1d14-4084-a9c7-d1a3172f03f6" TYPE="xfs"

复制UUID,之后打开/etc/fstab文件,添加格式如下:

   # vim /etc/fstab
   UUID=94b5bc24-1d14-4084-a9c7-d1a3172f03f6 /media/disk    xfs     defaults        0 0

保存并退出,使用mount -a,命令选项来检查并启动挂载该设备文件。

   # mount -a

如果没有提示错误,则挂载成功。

五、两个命令

这两个命令为df和du命令。df命令是查看磁盘的使用情况,前提是挂载之后才能查看该分区,那么du是查看单个文件或目录占用该分区的容量大小。

   df命令:
       df [OPTIONS]... [FILE]...
         -i:仅显示本地文件的相关信息;
         -h:--human-readable
         -i:显示inode的使用状态而非blocks
        
   du命令:
       du [OPTIONS]... [FILE]...
         -s:sumary
         -h:--human-readable

原文地址:http://blog.51cto.com/tianxie/2066908

时间: 2024-11-08 22:37:39

2018-1-27Linux系统管理(3)(4)磁盘和文件系统管理工具的相关文章

Linux基础之磁盘及文件系统管理(二)

磁盘和文件系统管理 文件系统管理工具: 创建文件系统的工具 mkfs mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ... 检测及修复文件系统的工具 fsck fsck.ext2, fsck.ext3, ... 查看其属性的工具 dumpe2fs, tune2fs 调整文件系统特性: tune2fs 内核级文件系统的组成部分: 文件系统驱动:由内核提供 文件系统箮理工具:由用户空间的应用程序提供 ext系列文件系统的管理工具: mkf

第八章、Linux 磁盘与文件系统管理

第八章.Linux 磁盘与文件系统管理 1. 认识 EXT2 文件系统 1.1 硬盘组成与分割的复习 1.2 文件系统特性: 索引式文件系统 1.3 Linux 的 EXT2 文件系统(inode): data block, inode table, superblock, dumpe2fs 1.4 与目录树的关系 1.5 EXT2/EXT3 文件的存取与日志式文件系统的功能 1.6 Linux 文件系统的运行 1.7 挂载点的意义 (mount point) 1.8 其他 Linux 支持的文

Linux磁盘和文件系统管理

Linux系统中的磁盘和文件系统管理,之所以将二者放在一起总结,是因为在平时的工作中,二者是相辅相成的,常常用来一起使用. 首先介绍下磁盘分区的管理工具 常用的磁盘分区管理工具有fdisk,parted,sfdisk 这里我们介绍下常用的fdsik工具 fdisk -l [DEVICE]... :列出指定磁盘设备上的分区情况 fdisk [DEVICE]:创建分区 fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能:所有的操作均在内存中完成,没有直接同步到磁盘:直到

磁盘及文件系统管理详解---急需加强

磁盘管理: 机械式硬盘 U盘.光盘.软盘.硬件.磁带 MBR:Master Boot Record 主引导记录 ln [-s -v] SRC DEST:创建链接文件,默认硬链接 -s:创建软连接 -v:显示过程 硬链接: 1.只能对文件创建,不能应用于目录 2.不能跨文件系统 3.创建硬链接会增加文件被链接的次数 符号链接(软连接): 1.可以应用于目录 2.可以跨文件系统 3.不会增加被链接文件的链接次数 4.其大小为指定的路径所包含的字符个数 du -s -h df:显示整个磁盘分区使用情况

Linux磁盘与文件系统管理

Linux磁盘与文件系统管理 磁盘分区后需要进行格式化,是为什么呢? 因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此需要将分区进行格式化,以成为操作系统能够利用的文件系统格式.

linux磁盘及文件系统管理初步(1)

Linux系统管理 磁盘分区及文件系统管理 RAID LVM:能够实现磁盘边界的动态管理 网络属性管理 程序包管理:程序包的增删查改 sed 和awk 进程查看和管理 内核管理:内核的组成部分,内核的编译安装 系统启动流程 Linux内核的定制,编译内核,busybox 系统安装:kickstart,dhcp,pxe shell脚本编程 Linux磁盘及文件系统管理: 整个操作系统的组成部分:硬件和软件 整个操作系统的组成层次:最底层为硬件设备(这也是我们计算机能够运行的基础),在硬件设备上冯诺

linux磁盘及文件系统管理进阶

回顾: 磁盘,磁盘分区,文件系统 现在的磁盘有两类:机械硬盘和固态硬盘 为了使机械硬盘上流传下来的概念,和组织方式依然可用,固态硬盘也模拟了类似于机         械硬盘上的很多特性,想MBR之类的哪些东西,依然模拟扇区和那些机制,只不过是        固态硬盘是电器设备工作,机械硬盘是机械方式工作而已. 无论是那种格式的硬盘在cent0S6,7只要是磁盘设备而且能够驱动的话统统识别为:                 /dev/sd[a-z]# 管理分区:fdisk,parted,sfdi

Linux磁盘和文件系统管理(二)

磁盘和文件系统管理(二)   实验案例:LVM卷管理及配额设置 需求描述: 1.采用LVM磁盘管理方案 (1)在虚拟机环境中,新添加两块SCSI硬盘设备,完成磁盘检测及分区 (2)建立逻辑卷mbox,格式化为Ext4文件系统,挂载到/mailbox目录下 2.设置并启用磁盘配额 (1)为挂载到/mailbox目录下的文件系统启用配额支持 (2)限制用户Jerry最多只能使用500M磁盘空间 (3)限制accp组的用户合计最多只能使用20M磁盘空间 推荐步骤   添加磁盘设备并建立磁盘管理方案 选

linux磁盘和文件系统管理(一)

磁盘和文件系统管理(一) 要求: 一,关机后添加一块20GB的SCSI磁盘,重新开机进入RHEL 5系统 二,分区并格式化 1,使用fdisk命令对新硬盘进行分区,建立一个10GB的主分区("/dev/sbd1") 步骤:如图所示: 执行"fdisk -l"命令可以查看,确认新增硬盘的设备名称和设置."fdisk -l"命令的作用是列出当前系统中所有硬盘设备及其分区的信息. 在硬盘设备中创建.删除.更改分区等操作同样通过fdisk命令进行,只要使