Linux磁盘管理

         硬盘分类

                   机械式硬盘

                   SSD

 

         机械式:

                   track

                   sector:512bytes

                   cylinder:分区的基本单位;

 

                   MBRMaster BootRecord

                            512bytes

                                     446:bootloader

                                     64:filesystem allocation table

                                               16:标识一个分区

                                     255AA

 

         磁盘接口类型:

                   IDE(ATA)133MB/s/dev/hd

                   SCSI:640MB/s

                   SATA6Gbps

                   SAS6Gbps

                   USB480MB/s

 

                   识别硬盘设备:/dev/sd

                            标记不同的硬盘设备:/dev/sd[a-z]

                            标记同一设备上的不同分区:/dev/sd[a-z][1-]

                                     1-4:主或扩展分区标识

                                     5+:逻辑分区标识

 

                   设备文件:特殊文件

                            设备号:

                                     major,minor

                                               major:设备类型

                                               minor:同一类型下的不同设备

 

                            “块”:block,随机设备

                            “字符”:character,线性设备

 

                            GPT

 

         分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;

 

         分区工具:

                   fdisk,parted, sfdisk

 

         fdisk工具的使用:

                   最多支持在一块硬盘上的15个分区;

 

                   分区管理子命令:

                            p:显示

                            n:创建

                            d:删除

                            t:修改分区ID

                            l:列出所有支持ID类型

                            w:保存退出

                            q:放弃修改并退出

                            m:获取帮助

 

                   创建完成之后,查看内核是否已经识别新的分区:

                            #cat /proc/partitions

 

                            有三个命令可以让内核重读磁盘分区表:

                                     CentOS5: partprobe [DEVICE]

                                     CentOS6,7:

                                               partx

                                               kpartx

 

                                     partx命令:

                                               partxDEVICE

                                               partx-a DEVICE

                                               partx-a -n M:N DEVICE

                                                        M

                                                        M:

                                                        :N

 

                                     kpartx命令:

                                               kpartx-af DEVICE

 

Linux文件系统管理

 

         文件系统:

                   VFSVirtual FileSystem

 

                   Linuxext2, ext3,ext4, reiserfs, xfs, btrfs, swap

                   光盘:iso9660

                   Windows:fat32(vfat), ntfs

                   Unix:ffs, ufs, jfs, jfs2

                   网络文件系统:nfs,cifs

                   集群文件系统:ocfs2,gfs2

                   分布式文件系统:ceph,

                            moosefs,mogilefs, hdfs, gfs, glusterfs

 

                   (1)日志型文件系统

                            非日志型文件系统:ext2

                            日志型文件系统:ext3

 

                   (2)swap:交换分区

 

 

         创建文件系统:

                   在分区上执行格式化(高级格式化)

                            要使用某种文件系统,满足两个条件:

                                     内核中:支持此种文件系统

                                     用户空间:有文件系统管理工具

 

 

                   创建工具:mkfs(make filesystem)

                            mkfs-t type DEVICE

 

                                     mkfs.typeDEVICE

 

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

                                     mke2fs-t {ext2|ext3|ext4} DEVICE

                                               -bBLOCK: 1024, 2048, 4096

                                               -L'LABEL': 设定卷标

 

                            blkid命令:

                                     blkidDEVICE

                                               LABEL,UUID, TYPE

 

Linux文件系统管理:

         mkfs,mkfs -t type = mkfs.type

 

         extmke2fs

 

         创建文件系统:

                   mke2fs[OPTION]... DEVICE

                            -t    {ext2|ext3|ext4}

                            -b{1024|2048|4096}

                            -L'LABEL'

                            -j:mke2fs -t ext3

                            -i#

                            -N#

                            -m#: 预留磁盘空间占据多大百分比的空间为后期管理使用;

                            -OFEATURE[,...]

                                     -O^FEATURE:关闭此特性

                                     has_journal

 

         文件系统属性查看及调整工具:

                   e2label

                            e2lableDEVICE [LABEL]

 

                   tune2fs

                            显示ext系列文件系统的属性,或调整其属性;

 

                            -l:显示超级块中的信息;显示整个文件的属性及布局等相关信息;

                            -L'LABEL':修改卷标;

                            -m#: 调整预留给管理员的管理空间百分比;

                            -j:ext2 --> ext3

                            -O:文件系统属性的启动或关闭

                            -o:文件系统默认挂载选项的启用或关闭

 

                   dumpe2fs

                            -h:仅显示超级块信息;

 

         文件系统检测:

                   fsck:Filesystem check

                            fsck-t type

                            fsck.type

                                     -a:自动修复错误

                                     -r:交互式修复错误

                                     -f:强制检测

 

                   e2fsckext系列文件系统专用的检测修复工具;

                            -y:自动回答为“yes

                            -fforce

 

文件系统的挂载和使用:

        

         kernel--> rootfs(分区)

 

                   rootfs分区:

                            bin,sbin, etc, lib, lib64, dev, tmp, proc, sys

 

                            /sbin/init

 

       将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件系统访问入口的行为,称之为挂载;

 

         解除此关联关系的过程:卸载;

 

         挂载点:mountpoint, 设备挂载至目录;

 

                   注意:挂载点在挂载在之后,其内部原有的文件会被暂时隐藏;建立使用空目录做为挂载点;

 

         挂载方法:

                   mount:通过读取/etc/mtab文件来显示当前系统所有已经挂载的设备;

                   mount-a:挂载/etc/fstab文件中的所有支持自动挂载的文件系统;

                   mount[options] [-o options] DEVICE MOUNT_POINT

                            [options]:命令选项

                            [-ooptions]:挂载选项

 

                            DEVICE:要挂载的设备

                                     (1)设备文件:/dev/sda5

                                     (2)卷标:-L 'LABEL'

                                     (3)UUID-U 'UUID'

                                     (4)伪文件系统名称

                            MOUNT_POINT:挂载点

 

                            常用选项:

                                     -ttype:文件系统类型

                                     -r:以“只读”方式挂载此文件系统

                                     -w:以“读写”方式挂载此文件系统

                                     -n:每个文件系统在挂载时都会自动更新/etc/mtab文件,-n用于禁止此功能;

                                               此时,如果想查看挂载的所有文件系统:cat /proc/mounts

                                     -a:自动挂载所有支持自动挂载的设备;

                                     -B:绑定目录至另一个目录上;

 

                            -o挂载选项:

                                     async:异步模式

                                     sync:同步模式

                                     atime/noatime:是否更新访问时间戳;

                                     diratime/nodiratime:是否更新目录的访问时间戳;

                                     auto/noauto:是否允许此设备被自动挂载;

                                     exec/noexec:是否允许执行此文件系统上应用程序;

                                     dev/nodev:是否支持在此设备上使用设备文件;

                                     suid/nosuid

                                     remount:重新挂载

                                     ro

                                     rw

                                     user/nouser:是否允许普通挂载此设备;

                                     acl:是否支持此设备上使用facl

                                     defaultsrw, suid,dev, exec, auto, nouser, and async

 

                   umount:卸载命令

                            #umount DEVICE

                            #umount MOUNT_POINT

 

                            查看正在访问指定挂载点的进程:

                                     #fuser -v MOUNT_POINT

 

                            终止所有正在访问指定的挂载点的进程:

                                     #fuser -km MOUNT_POINT

 

         交换分区:

 

                   free命令:

                            查看memoryswap的使用状态

                                     -m:MB为单位

                                     -g:GB为单位

 

                   mkswap:创建交换分区

 

                            mkswap[option] DEVICE

                                     -L'LABEL'

                                    

                   swapon:启用交换分区

                            swapon[option] [DEVICE]

                                     -a:激活所有交换分区

                                     -pPRIORITY: 设定其优先级;

 

                   swapoff:禁用交换分区

                            swapoff[option] [DEVICE]

 

         文件系统等空间占用信息的查看工个:

                   df:disk free

                            -h:human-readable

                            -i:inode数量

                            -P:Posix兼容的格式输出

                   du:disk usage

                            -h:human-readable

                            -s:summary

 

 

         文件系统相关挂载配置文件:/etc/fstab

 

                   每行定义一个文件系统;

 

                   要挂载的设备或伪文件系统       挂载点             文件系统类型        挂载选项        转储频率       自检次序

 

                            要挂载的设备:

                                     设备文件、LABEL=UUID=、伪文件系统名称

 

                            挂载选项:

                                     defaults

 

                            转储频率:

                                      0 不转储

                                     1 每天转储

                                     2 每隔一天转储

 

                            自检次序:

                                     0:不自检

                                     1:首先自检,通常只有/才为1

                                     2

                                     ...

 

         文件系统上的链接文件:

                   硬链接:

                            两个路径指向同一个inode

 

                            不能对目录进行;

                            不能跨分区进行

                            指向同一个inode的多个不同路径; 创建文件的硬链接会增加inode的引用计数;删除硬链接仅是删除其一个访问路径,只到最后一个路径被删除;

 

                   符号链接:

                            链接文件的数据指向另一个文件路径;

 

                            可以对目录进行;

                            可以跨分区;

                            指向的是另一个文件路径;而非inode

                                     对文件创建符号链接不会增加其引用计数;删除原文件,符号链接文件也将无法;

 

                   ln[-s] SRC DEST

                            -ssymboliclink

                            -vverbose

 

练习:创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至/mydata目录,创建一个4G的交换分区,并挂载使用,要求开机自动挂载。

首先在虚拟机上添加了两块硬盘,分别为20G100G.

使用fdisk  -l命令显示磁盘信息

[root@yy ~]# fdisk –l
Disk /dev/sda: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x000bfe70
 
  Device Boot      Start         End      Blocks  Id  System
/dev/sda1  *           1          64      512000  83  Linux
Partition 1 does not end on cylinderboundary.
/dev/sda2              64         587    4194304   82  Linux swap / Solaris
Partition 2 does not end on cylinderboundary.
/dev/sda3             587       13055  100150272   8e  Linux LVM
 
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x00000000
 
Disk /dev/sdc: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x00000000
 
Disk /dev/mapper/vg_yy-LogVol00: 102.6 GB,102550732800 bytes
255 heads, 63 sectors/track, 12467cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x00000000

 

找到我们新加的磁盘。设备名为/dev/sdb/dev/sdc

执行分区命令

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

显示帮助信息

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)

n新建分区


w保存

wKiom1Xng6vT3cT-AADce_-mVMY643.jpg

wKioL1Xnhc6DGbrjAAAoidLXN1I166.jpg


再次用fdisk -l命令

[root@yy ~]# fdisk –l

wKioL1Xnhc6ybXLHAAIdW0bWZvk614.jpg

[root@yy ~]# fdisk /dev/sdc

建立一个4Gswap

wKiom1XnhSzQysUlAADin3s45z8992.jpg


执行格式命令:

[root@yy ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622603 blocks
131130 blocks (5.00%) reserved for thesuper user
第一个数据块=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments pergroup
8096 inodes per group
Superblock backups stored on blocks:
         32768,98304, 163840, 229376, 294912, 819200, 884736, 1605632
 
正在写入inode表: 完成                           
Creating journal (32768 blocks): 完成
Writing superblocks and filesystemaccounting information: 完成
 
This filesystem will be automaticallychecked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
 
 [root@yy ~]# mke2fs -t ext4 /dev/sdb5
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
640848 inodes, 2562359 blocks
128117 blocks (5.00%) reserved for thesuper user
第一个数据块=0
Maximum filesystem blocks=2625634304
79 block groups
32768 blocks per group, 32768 fragments pergroup
8112 inodes per group
Superblock backups stored on blocks:
         32768,98304, 163840, 229376, 294912, 819200, 884736, 1605632
 
正在写入inode表: 完成                           
Creating journal (32768 blocks): 完成
Writing superblocks and filesystemaccounting information: 完成
 
This filesystem will be automaticallychecked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
 
格式化交换分区
[root@yy ~]# mkswap /dev/sdc1
Setting up swapspace version 1, size =4200960 KiB
no label,UUID=70b60a91-e1a8-42fd-bcbd-0fa0bbb7f5a6
 
挂载交换分区
[root@yy ~]# free -m
            total       used       free    shared    buffers     cached
Mem:          1862        416       1446          0         27        213
-/+ buffers/cache:        175      1686
Swap:         4095          0       4095
[root@yy ~]#
[root@yy ~]#
[root@yy ~]# swapon /dev/sdc1
[root@yy ~]# free -m
            total       used       free    shared    buffers     cached
Mem:          1862        419       1443          0         27        213
-/+ buffers/cache:        178       1683
Swap:         8198          0       8198
 
挂载10G硬盘到/mydata目录
[root@yy ~]# mkdir /mydata
[root@yy ~]# mount /dev/sdb1  /mydata
[root@yy ~]# df -Th
Filesystem           Type     Size Used Avail Use% Mounted on
/dev/mapper/vg_yy-LogVol00
                     ext4      94G 3.9G   86G   5% /
tmpfs                tmpfs    932M  76K  932M   1% /dev/shm
/dev/sda1            ext4     477M  42M  410M  10% /boot
/dev/sr0             iso9660  3.7G 3.7G     0 100%/media/CentOS_6.7_Final
/dev/sdb1            ext4     9.8G  23M  9.3G   1% /mydata


修改/etc/fstab文件,开机自动挂载。

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

wKiom1XnhSzBp9JAAAH5RDTITh4927.jpg