磁盘和文件系统管理

    我们知道一块磁盘是可以被分区成多个分区的(partition),以Windows的观点来看,你可能会有一颗磁盘并且将他分区成为C:, D:, E:盘,那个C, D,E就是分区。Linux的设备都是以文件的型态存在,磁盘设备接口的不同也早就了磁盘文件名的不同。即IDE接口的磁盘设备文件名都是/dev/hd[a-z]的格式,例如:/dev/hda./dev/hdb。SCSI, SATA, SAS, USB接口的磁盘设备文件名都是:/dev/sd[a-z],例如sda.sdb,磁盘设备的命名主要是根据Linux核心侦测到磁盘的顺序来进行的,例如你有两块SATA接口的硬盘要插在有六个SATA插槽的主板上,一块插在SATA1接口上一块插在STAT3接口上,因为是使用侦测到的顺序来决定设备文件名,并非与实际插槽代号有关,所以这两块磁盘的命名就是SATA1插槽上为/dev/sda,而SATA3插槽上的为/dev/sdb。那么同一设备上的不同分区表示就是1.2.3.4.5这样,/dev/sda磁盘上的分区命名为/dev/sda1,/dev/sda2....注意:centos6和centos7统统将硬盘设备文件标识为/dev/sda[a-z]#

创新互联是一家专业提供漳平企业网站建设,专注与网站建设、网站设计成都h5网站建设、小程序制作等业务。10年已为漳平众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。



磁盘分区

    两种分区方式: MBR, GPT

    早期的 Linux 系统为了兼容Windows的磁盘,因此使用的是支持 Windows 的 MBR(Master Boot Record, 主要开机纪录区)的方式来处理开机管理程序与分区表!而开机管理程序纪录区与分区表则通通放在磁盘的第一个扇区, 这个扇区通常是512Bytes的大小(旧的磁盘扇区是512Bytes)所以说,第一个扇区及(0扇区)512Byte会有两个数据;

    主要开机记录区(Master Boot Record, MBR):主要用于引导系统启动,有446 Bytes
    分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes

    由于分区表所在区块仅有64 Bytes容量,而每个分区要占用16Bytes,因此最多仅能记录4个分区,每个记录区记录了该区段的启始与结束的柱面号码。假设这个设备名称为/dev/sda/那么这个4个分区的命名分别是/dev/sda1,sda2,sda3,sda4.而这4个分区又被称为主分区和扩展分区,通常这4个分区为3个主分区和一个扩展分区,而扩展分区又可延伸N个逻辑分区(注意;一旦运用扩展分区,即此扩展分区不在存储实际数据,而是存储指向逻辑分区的信息,逻辑分区的设备名只能从5开始。)

    GPT支持128个分区,已经没有所谓的主、延伸、逻辑分区的概念,每个都可以视为是主分区,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block)GPT磁盘分区结构解决了MBR只能分4个主分区的的缺点,并且支持大硬盘,分区结构清晰简单而且有备份。

    使用128位UUID 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位

    UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动

    结构如;

    磁盘和文件系统管理

    保护MBR区:与 MBR 模式相似的,记录开机引导信息程序。

    GPT头:这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的GPT分区放置的位置,同时放置了分区表的检验码(CRC32),操作系统可以根据这个检验码来判断GPT是否正确。若有错误,还可以通过这个纪录区来取得备份的GPT(磁盘最后的那个备份区块) 来恢复GPT的正常运行!

    分区表:实际记录分区信息处        



管理分区工具;fdisk,parted,sfdisk   

    fdisk 创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区
    gdisk 创建GPT分区
    GNU parted 高级分区操作(创建、复制、调整大小等等)
    partprobe-重新设置内存中的内核分区表版本
    fdisk /dev/sdb
    gfisk /dev/sdb 类fdisk 的GPT分区工具
  fdisk命令

    fdisk -l [-u] [device...]:列出指定磁盘设备上的分区情况;查看磁盘的分区信息

]# fdisk -l /dev/sda

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x000e3d03
==================================================================
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       15666   125316096   8e  Linux LVM

    上面可看到设备名称是/dev/sda,大小为128G,等信息....,下边一栏则显示的是分区信息,可看到目前有两个分区,分别sda1和sda2,而sda1作为了系统的引导分区,开始柱面为1,结束柱面为64,块大小,分区类型ID等等...(注意;对cenots6来说start是开始柱面,End是结束柱面,对centos7来说start是开始扇区,End是结束扇区)


    fdisk device(设备)

    fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有操作均在内存中进行,没有直接同步到磁盘;直到使用w命令保存到磁盘上才会生效

n:创建新分区

d:删除已有分区

t:修改分区类型

l:查看所有已知id

w:保存并且退出

q:不保存并退出

m:查看帮助信息

p:显示现有分区信息

示例

]# 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): n 输入n创建新分区
Command action
   e   extended :扩展分区
   p   primary partition (1-4):主分区
   p:输入p创建主分区
   Partition number (1-4): 3 选择主分区号
   First cylinder (7859-15665, default 7859):  从哪个柱面开始
   Using default value 7859 直接回车
   Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +10G 创建一个10G的分区 这里就加10G
   Command (m for help): p 回车后敲p命令 可以看到/dev/sda3主分区已经创建成功

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x0004badb

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        9164    10489446   83  Linux
Command (m for help): n 接下来还可以继续创建分区,但是我们现在已经创建了3个主分区了,如果还要创建主分区的话 
                        剩余的磁盘空间就要全部给其使用,(一块磁盘最多只能有四个主分区)否则余出的空间就不能用了。
                        如果我们要多创建几个分区,这里我们选择创建扩展分区。
Command action
   e   extended
   p   primary partition (1-4)
   e
Selected partition 4
First cylinder (9165-15665, default 9165): (这里直接敲回车,表示把起始柱面9165到结束柱面15665全部给此扩展分区)
Using default value 9165
Last cylinder, +cylinders or +size{K,M,G} (9165-15665, default 15665): 
Using default value 15665
Command (m for help): p 再次敲p可看到编号为4的扩展分区已经创建

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x0004badb

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        9164    10489446   83  Linux
/dev/sda4            9165       15665    52219282+   5  Extended
Command (m for help): n 再次敲n可继续创建逻辑分区,如果直接退出 再次使用fdisk命令创建新的扩展分区也可创建逻辑分区,如下
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
 l 敲l选择创建逻辑分区
 First cylinder (7859-15665, default 7859): 逻辑分区起始柱面,直接敲回车默认为7859开始(自己指定起始柱面只需要输入柱面号即可)
Using default value 7859 :直接敲回车默认为7859开始
Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +10G 输入10G选择创建一个10G大小的逻辑分区

Command (m for help): p 敲p显示分区列表,可看到/dev/sda5逻辑分区已经创建成功

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x0004badb

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda4            7859       15665    62708728+   5  Extended
/dev/sda5            7859        9164    10489414+  83  Linux
Command (m for help): w 敲w保存退出。此时会提示设备资源忙
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

执行cat /proc/partitions 查看设备列表,发现sda3,4,5并没有被内核识别

]# cat /proc/partitions 
major minor  #blocks  name

   8        0  125829120 sda
   8        1     204800 sda1
   8        2   62914560 sda2
 253        0   20971520 dm-0
 253        1    2097152 dm-1
 253        2   10485760 dm-2
 253        3   20971520 dm-3

执行partx -a /dev/sda.(同步分区列表)让内核重读设备,一次不行就两次

]# partx -a /dev/sda

然后再次cat /proc/partitions

]# cat /proc/partitions 
major minor  #blocks  name

   8        0  125829120 sda
   8        1     204800 sda1
   8        2   62914560 sda2  注:此处因为误操作在创建sda3的时候没有敲击w保存退出,所有看不到sda3
   8        4         31 sda4
   8        5   10489414 sda5
 253        0   20971520 dm-0
 253        1    2097152 dm-1
 253        2   10485760 dm-2
 253        3   20971520 dm-3

注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别;

查看:cat /prot/partitions

通知内核强制重新读取磁盘分区表;

centos5:partprobe[device]

centos6,7:partx,kpartx

partx-a [device]

kpartx-af[device]

有时候可能需要执行两次

至此分区创建完成 

完整示例如下

[root@localhost ~]# 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): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (7859-15665, default 7859): 
Using default value 7859
Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +10G

Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x000483ba

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        9164    10489446   83  Linux

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Selected partition 4
First cylinder (9165-15665, default 9165): 
Using default value 9165
Last cylinder, +cylinders or +size{K,M,G} (9165-15665, default 15665): 
Using default value 15665

Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x000483ba

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        9164    10489446   83  Linux
/dev/sda4            9165       15665    52219282+   5  Extended

Command (m for help): n
First cylinder (9165-15665, default 9165): 
Using default value 9165
Last cylinder, +cylinders or +size{K,M,G} (9165-15665, default 15665): +10G

Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x000483ba

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        9164    10489446   83  Linux
/dev/sda4            9165       15665    52219282+   5  Extended
/dev/sda5            9165       10470    10490413+  83  Linux

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@localhost ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
[root@localhost ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5

删除分区用
partx -d -n M:N /dev/DEVICE
centos6: –nr N-M
CentOS 5, 7: 使用partprobe
partprobe [/dev/DEVICE]  



修改分区类型

    以第六个分区为例如下

]# fdisk /dev/sda
Command (m for help): l 敲击l查看分区类型
0  Empty            24  NEC DOS           81  Minix / old Lin bf  Solaris        
1  FAT12            39  Plan 9            82  Linux swap / So c1  DRDOS/sec (FAT-
Command (m for help): t 键入t选项 修改分区类型
Partition number (1-6): 6 键入要修改的分区编号
Hex code (type L to list codes):82 键入要修改的类型编号
Command (m for help): p 再次查看列表
/dev/sda6           10471       10732     2104483+  82  Linux swap / Solaris  修改成功

修改成功,现在磁盘分区和修改分区类型都已搞定,下面进入磁盘分区下的文件系统。



文件系统管理工具:

创建文件系统工具

mkfs;

mkfs.ext2(无日志功能),mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.vfat...

检测及修复文件系统的工具

fsck;

fsck.ext2,fsck.ext3,..

查看其属性的工具

dumpe2fs,tune2fs

调整文件系统特性:

tune2fs    

    内核文件系统的组成部分:

        如果一个文件系统想要在系统上运行起来的话,必须要装载对应的模块

lsmod:查看当前系统内核已经装载的模块,如果内核相应识别一个文件系统,必须先装载这个模块

文件系统驱动:由内核提供,

文件系统管理工具:由用户空间的应用程序提供




    

ext系列文件系统的管理工具:

mkfs.两次tab可看到多种文件系列

mkfs.ext2,mkfs.ext3,mkfs.ext4(向前兼容较老的版本)

mkfs -t ext2=mkfs.ext2

ext2:没有日志功能,ext3,4有日志功能,ext4性能有很大提升,建议使用ext4文件系统

命令

mkfs.ext2 /dev/sda#(敲下回车,及完成格式化文件系统)

[root@localhost ~]# mkfs.ext2 /dev/sda6
mke2fs 1.41.12 (17-May-2010)
Filesystem label=       文件系统卷标,此处没有指明,所以为空
OS type: Linux           操作系统类型
Block size=4096 (log=2)    块大小,默认为4K
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 526120 blocks  一共给此分区创建了多少个inode,和多少个数据块
26306 blocks (5.00%) reserved for the super user 其中有多个数据块预留给超级管理员的,默认为总数据块数的5%
First data block=0 第一个数据块的编号从0开始
Maximum filesystem blocks=541065216 文件系统最大的数据块编号
17 block groups 一共多少个块组
32768 blocks per group, 32768 fragments per group  每个组内有多少个块,
7744 inodes per group 每个组中有多少个inode
Superblock backups stored on blocks:  超级块备份在哪些数据块的块编号
	32768, 98304, 163840, 229376, 294912

Writing inode tables: done    正在写入inode表,这里显示写入完成                        
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

blkid /dev/sda#

可查看文件系统类型

示例

]# blkid /dev/sda6
/dev/sda6: UUID="8353a98f-ac7f-413c-a79a-8277ad2a71ba" TYPE="ext2"

每一个设备都有一个随机的UUID;全局唯一标识符

再次执行mkfs.ext3 /dev/sda6,将ext2文件系统格式化为ext3。

]# mkfs.ext3 /dev/sda6

Writing inode tables: done                            
Creating journal (16384 blocks): done   多了一项 创建日志成功,因为ext3文件系统支持日志功能

当然了也可以再此格式话为ext4格式,ext4格式同样支持日志功能,而且在单个文件和单个文件系统的大小比ext3性能更强大 

centos6 默认不支持xfs

如果要安装得先安装xfsprogs工具;可用yum进行安装,然后在执行]# mkfs.xfs /dev/sda6 -f 强制将文件系统格式化为xfs格式

# mkfs.xfs /dev/sda6 -f

ext系列文件系统专用管理工具:mke2fs

mke2fs  [ option] device

-t{ext2|ext3|ext4}:指明要创建的文件系统类型

mkfs.etx4=mkfs -t ext4=mke2fs -t ext4

-b{1024|2048|4096}:指明文件系统的块大小;

示例

]# mke2fs -b 1024 /dev/sda6

-L LABEL:指明卷标;

]# mke2fs -t ext2 -L mydata -b 2048 /dev/sda6

-j:创建有日志功能的文件系统ext3;

mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3

]# mke2fs -j /dev/sda6

-i#:bytes-per-inode:指明inode与字节的比率;即每多少字节创建一个inode

-N#:直接指明要给此文件系统创建的inode的数量;

-m#:指定预留的空间,百分比;

-O[^]FEATURE:以指定的特性创建目标文件系统,不加^表示启用此特性,加^表示关闭此特性


e2label命令:卷标的查看与设定

查看:e2label device

]# e2label /dev/sda6

设定:e2label device LABEL

]# e2label /dev/sda6 ali
]# e2label /dev/sda6
ali

tune2fs命令:查看或修改ext系统文件系统的某些属性

adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems:

注意:块大小创建后不可修改

tune2fs [option]device

-l:查看超级块的内容;

]# tune2fs -l /dev/sda6
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   ali  卷标
Last mounted on:           最后一次什么时候挂载的,当前显示不可用
Filesystem UUID:          32592f02-1828-416d-8ef5-4bdcf2d46935  UUID
Filesystem magic number:  0xEF53 文件系统的魔数,文件系统类型的专用标识
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file 
Filesystem flags:         signed_directory_hash 
Default mount options:    (none) 默认的挂载选项
Filesystem state:         clean  文件系统状态  此处clean(清洁)表示没有任何文件损坏
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              131648 inode数量
Block count:              526120 块数量
Reserved block count:     26306 
Free blocks:              500671 剩余块数量
Free inodes:              131637 剩余inode数量
First block:              0
Block size:               4096 块大小
Fragment size:            4096 
Reserved GDT blocks:      128 预留给GDT的块
Blocks per group:         32768 每组多少块
Fragments per group:      32768 每组多少个片段
Inodes per group:         7744 每组多少个inode
Inode blocks per group:   484   每组多少个块用来放inode
Filesystem created:       Wed Aug 24 21:07:43 2016
Last mount time:          n/a
Last write time:          Wed Aug 24 21:20:40 2016
Mount count:              0
Maximum mount count:      20
Last checked:             Wed Aug 24 21:07:43 2016
Check interval:           15552000 (6 months)
Next check after:         Mon Feb 20 21:07:43 2017
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      14d62c4d-b7bd-4458-abc9-72a48dbf45cc
Journal backup:           inode blocks

修改指定文件系统的属性

-j:ext2 -->ext3

-L:LABEL:修改卷标

-m #:调整预留空间百分比

-O[^]FEATHER:开启或关闭某种特性;

-o[^]mount_option:开启或关闭某种默认挂载选项

acl

^acl


dumpe2fs命令:显示ext系列文件系统的属性信息

dumpe2fs [-h]device


实现文件系统检测的工具

因进程以外终止或系统崩溃等原有导致写入操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统;建议,离线进行

ext系列文件的专用工具;

e2fsck:check a Linux ext2/ext3/ext4 file system

e2fsck[option]device

-y:对所有问题自动回答为yes

-f:即使文件系统处于clean状态,也要强制进行检测


fsck:check and repair a Linux file system(通用所有文件系统)

    修复的工作特性就是把不连续的文件删除进行的

-t fstype:指明文件系统类型

fsck -t ext4 = fsck.ext4

-a:无需交互而自动档修复所有错误;(不建议)

-r:  交互式修复;

centos6如果使用xfs文件系统

#yum -y install xfsprogs



创建:mkfs.xfs

检测:fsck.xfs



blkid命令

blkid device

blkid -L label:根据label定位为设备

blkid -U UUID:根据UUID定位设备


swap文件系统

linux上的交换分区必须使用独立的文件系统

且文件系统的system id 必须为82

创建swap设备:mkswap命令

mkswap [option] device

-L label:指明卷标

-f:强制

]# mkswap /dev/sda6
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=7e42ac9c-21f4-45b4-80b3-830d6e12611b

创建windows文件系统

#mkfs.vfat device

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


文件系统的使用:

首先要挂载:mount命令和umount命令

跟文件系统之外的其他文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”;、

挂载点:mount_point,用于作为另一个文件系统的访问入口

(1)事先存在

(2)应该使用未被或不会被其他进程使用到的目录

(3)挂载点下原有的文件将会被隐藏;

mount命令:

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

命令选项:

-r:readonly,只读挂载;

-w:read and write,读写挂载

-n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;

-t vfstype:指明要挂载的设备上的文件系统雷系;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型

-L LABEL:挂载时以卷标方式指明设备;

mount -L LABEL dir

-U UUID:挂载时以UUID方式指明设备;

-o option:挂载选项

sync/async:同步/异步操作;

atime/noatime:文件或目录在被访问时是否更新其访问时间戳;

diratime/nodirname:目录在被访问时是否更新其访问时间戳;

remount:重新挂载

acl:支持使用facl功能

#mount -o acl device dir

#tune2fs -o acl device

ro:只读

rw:读写

dev/nodev:此设备上是否允许创建设备文件;

exec/noexec:是否允许运行此设备上的程序文件;

auto/noauto:

user/nouser:是否允许普通用户挂载此文件系统;

suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效

defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.

一个使用技巧:

可以实现将目录绑定在另一个目录上,作为其临时访问入口;

mount --bind 源目录 目标目录

查看当前系统上所有已挂载的设备

#mount

#cat /etc/matb

#cat /proc/mounts

挂载光盘;

mount -r /dev/cdrom mount_point

光盘设备文件:/dev/cdrom

挂载U盘:

实现识别u盘的设备文件;

umount命令:

umount device|dir

注意:正在被进程访问到的挂载点无法被卸载;

查看被哪个或者哪些进程所用:

#lsof mount_point

#fuser -v mount_point

终止所有正在访问某挂载点的进程

#fuser -km mount_point

挂载本地的回环设备;

#mount -o loop /path/to/some_loop_file mount_point

交换分区的启用和禁用:

创建交换分区的命令:mkswap

启用:swapon

swap [option][option]

-a:定义在/etc/fstab文件中的所有swap设备

禁用:swapoff

swapoff device

设定除了根文件系统以外的其他文件系统能够开机时自动挂载:/etc/fstab文件

每行定义一个要挂载的文件系统及其相关属性

6个字段:

(1)要挂载的设备

设备文件

LABEL

UUID

伪文件系统:如sysfs,proc,tmpts

(2)挂载点

swap类型的设备的挂载点为swap

(3)文件系统类型:

(4)挂载选项

defaults:使用默认挂载选项:

如果要同时指明多个挂载选项,彼此间以逗号分隔

(5)转储频率(备份)

0:从不备份

1:每天备份

2:每隔一天备份

(6)自检次序

0:不自检

1:首先自检,通常只能是根文件系统可用1

2:次级自检

mount -a :可自动挂载定义在此文件中的所支持自动挂载的设备;

两个命令:df和du

df命令:

df[option]...[file]

-l:仅显示本地文件的相关信息

-h:human-readable

-i:显示inode的使用状态而非blocks

du命令:

du[option]...[file]

-s:sumary

-h:human-readble


文章标题:磁盘和文件系统管理
标题链接:http://pwwzsj.com/article/pidioj.html