本文共 37438 字,大约阅读时间需要 124 分钟。
Linux 系统中颇具特色的文件存储结构常常搞得新手头晕脑胀,本文将从 Linux 系统中的文件存储结构开始,讲述文件系统层次化标准(FHS, Filesystem Hierarchy Standard)、 udev 硬件命名规则以及硬盘分区的规划方法。本文也将详细地分析 Linux 系统中最常见的 Ext3、 Ext4 与 XFS 文件系统的不同之处,并且学习硬盘设备分区、格式化以及挂载等常用的硬盘管理操作,以便熟练掌握文件系统的使用方法,进一步完整地部署 SWAP交换分区、配置 quota 磁盘配额服务,以及掌握 ln 命令带来的软硬链接。
FHS(Filesystem Hierarchy Standard) 是根据以往无数 Linux 系统用户和开发者的经验而总结出来的,是用户在 Linux 系统中存储文件时需要遵守的规则,用于指导我们应该把文件保存到什么位置,以及告诉用户应该在何处找到所需的文件。
Linux 系统中常见的目录名称以及相应内容
目录名称 | 应放置文件的内容 |
---|---|
/boot | 开机所需文件—内核、开机菜单以及所需配置文件等 |
/dev | 以文件形式存放任何设备与接口 |
/etc | 配置文件 |
/home | 用户家目录 |
/bin | 存放单用户模式下还可以操作的命令 |
/lib | 开机时用到的函数库,以及/bin 与/sbin 下面的命令要调用的函数 |
/sbin | 开机过程中需要的命令 |
/media | 用于挂载设备文件的目录 |
/opt | 放置第三方的软件 |
/root | 系统管理员的家目录 |
/srv | 一些网络服务的数据文件目录 |
/tmp | 任何人均可使用的“共享”临时目录 |
/proc | 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等 |
/usr/local | 用户自行安装的软件 |
/usr/sbin | Linux 系统开机时不会使用到的软件/命令/脚本 |
/usr/share | 帮助与说明文件,也可放置共享文件 |
/var | 主要存放经常变化的文件,如日志 |
/lost+found | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
在 Linux 系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。系统内核中的 udev 设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外, udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev 目录下的设备文件。
常见的硬件设备及其文件名称硬件设备 | 文件名称 |
---|---|
IDE 设备 | /dev/hd[a-d] |
SCSI/SATA/U 盘 | /dev/sd[a-p] |
软驱 | /dev/fd[0-1] |
打印机 | /dev/lp[0-15] |
光驱 | /dev/cdrom |
鼠标 | /dev/mouse |
磁带机 | /dev/st0 或/dev/ht0 |
由于现在的 IDE 设备已经很少见了,所以一般的硬盘设备都会是以“/dev/sd”开头的。
而一台主机上可以有多块硬盘,因此系统采用 a~p 来代表 16 块不同的硬盘(默认从 a 开始分配),而且硬盘的分区编号也很有讲究: ➢ 主分区或扩展分区的编号从 1 开始,到 4 结束; ➢ 逻辑分区从编号 5 开始 注: ①:/dev 目录中 sda 设备之所以是 a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。大家以后在使用 iSCSI 网络存储设备时就会发现,明明主板上第二个插槽是空着的,但系统却能识别到/dev/sdb 这个设备就是这个道理。 ②:sda3 表示这是设备上的第三个分区,但是未必肯定就是第三个分区,因为分区的数字编码不一定是强制顺延下来的,也有可能是手工指定的。因此 sda3 只能表示是编号为 3 的分区,而不能判断 sda 设备上已经存在了 3 个分区。 硬盘知识普及: 硬盘设备是由大量的扇区组成的,每个扇区的容量为 512 字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用 446 字节,分区表为 64 字节,结束符占用 2 字节;其中分区表中每记录一个分区信息就需要 16 字节,这样一来最多只有 4 个分区信息可以写到第一个扇区中,这 4 个分区就是 4 个主分区。第一个扇区中的数据信息:用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。 Linux系统支持数十种的文件系统,而最常见的文件系统如下所示。
①:Ext3 :是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。 ②:Ext4:Ext3 的改进版本,作为 RHEL 6 系统中的默认文件管理系统,它支持的存储容量高达 1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外, Ext4 文件系统能够批量分配 block 块,从而极大地提高了读写效率。 ③:XFS:是一种高性能的日志文件系统,而且是 RHEL 7 中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件, 而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为 18EB,这几乎满足了所有需求。 日常在硬盘需要保存的数据实在太多了,因此 Linux 系统中有一个名为 super block 的“硬盘地图”。 Linux 并不是把文件内容直接写入到这个“硬盘地图”里面,而是在里面记录着整个文件系统的信息。因为如果把所有的文件内容都写入到这里面,它的体积将变得非常大,而且文件内容的查询与写入速度也会变得很慢。 Linux 只是把每个文件的权限与属性记录在inode 中,而且每个文件占用一个独立的 inode 表格,该表格的大小默认为 128 字节,里面记录着如下信息: ➢ 该文件的访问权限(read、 write、 execute); ➢ 该文件的所有者与所属组(owner、 group); ➢ 该文件的大小(size); ➢ 该文件的创建或内容修改时间(ctime); ➢ 该文件的最后一次访问时间(atime); ➢ 该文件的修改时间(mtime); ➢ 文件的特殊权限(SUID、 SGID、 SBIT); ➢ 该文件的真实数据地址(point)。 而文件的实际内容则保存在 block 块中(大小可以是 1KB、 2KB 或 4KB),一个 inode 的默认大小仅为 128B(Ext3),记录一个 block 则消耗 4B。当文件的 inode 被写满后, Linux 系统会自动分配出一个 block 块,专门用于像 inode 那样记录其他 block 块的信息,这样把各个block 块的内容串到一起,就能够让用户读到完整的文件内容了。 对于存储文件内容的 block块,有下面两种常见情况(以 4KB 的 block 大小为例进行说明) ➢ 情况 1:文件很小(1KB),但依然会占用一个 block,因此会潜在地浪费 3KB。 ➢ 情况 2:文件很大(5KB),那么会占用两个 block(5KB-4KB 后剩下的 1KB 也要占用一个 block)。注:xfs_info:XFS文件系统的描述数据观察
[root@LB-nginx-01 ~]# xfs_info /dev/sda1meta-data=/dev/sda1 isize=512 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0
第 1 行里面的 isize 指的是 inode 的容量,每个有 256Bytes 这么大。至于 agcount 则是储存区群组 (allocation group) 的个数,共有 4 个, agsize 则是指每个储存区群组具有 65536 个 block 。配合第 4 行的 block 设置为 4K,因此整个文件系统的容量应该就是 4655364K 这么大!
第 2 行里面 sectsz 指的是逻辑扇区 (sector) 的容量设置为 512Bytes 这么大的意思。 第 4 行里面的 bsize 指的是 block的容量,每个 block 为 4K 的意思,共有 262144 个 block 在这个文件系统内。 第 5 行里面的 sunit 与 swidth 与磁盘阵列的 stripe 相关性较高。 第 7 行里面的 internal 指的是这个登录区的位置在文件系统内,而不是外部设备的意 思。且占用了 4K * 2560 个 block,总共约 10M 的容量。 第 9 行里面的 realtime 区域,里面的 extent 容量为 4K。不过目前没有使用。df(英文全拼:disk free):显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
语法格式:df [OPTIONS]... [FILE]...
OPTIONS说明: -a, --all:列出包括BLOCK为0的文件系统--block-size=SIZE use SIZE-byte blocks:指定块的大小-h,--huma-readable":用常见的格式显示出大小(例如:1K 234M 2G)-H,--si": 同上,但是这里的1k等于1000字节而不是1024字节-i, --inodes: 用信息索引点代替块表示使用状况-k, --kilobytes:指定块大小等于1024字节来显示使用状况-l, --local:只显示本地文件系统使用状况-m, --megabytes:以指定块大小等于1048576字节(1M)来显示使用状况--no-sync:在取得使用信息前禁止调用同步 (default)-P, --portability: 使用POSIX格式输出--sync 在取得使用信息前调用同步-t, --type=TYPE:只显示指定类型(TYPE)的文件系统-T, --print-type:输出每个文件系统的类型-x, --exclude-type=TYPE:只显示指定类型(TYPE)之外的文件系统.--version:输出版本信息并退出
实例:
显示文件系统的磁盘使用情况统计:[root@LB-nginx-01 ~]# df文件系统 1K-块 已用 可用 已用% 挂载点devtmpfs 326920 0 326920 0% /devtmpfs 338900 0 338900 0% /dev/shmtmpfs 338900 5636 333264 2% /runtmpfs 338900 0 338900 0% /sys/fs/cgroup/dev/mapper/centos-root 18593792 2689036 15904756 15% //dev/sda1 1038336 139200 899136 14% /boottmpfs 67780 0 67780 0% /run/user/0
用一个-i选项的df命令的输出显示inode信息而非块使用量。
[root@LB-nginx-01 ~]# df -i文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点devtmpfs 81730 402 81328 1% /devtmpfs 84725 1 84724 1% /dev/shmtmpfs 84725 710 84015 1% /runtmpfs 84725 16 84709 1% /sys/fs/cgroup/dev/mapper/centos-root 9302016 66699 9235317 1% //dev/sda1 524288 326 523962 1% /boottmpfs 84725 1 84724 1% /run/user/0
显示所有的信息(包含一个额外的行total,显示总的每一列):
[root@LB-nginx-01 ~]# df --total 文件系统 1K-块 已用 可用 已用% 挂载点devtmpfs 326920 0 326920 0% /devtmpfs 338900 0 338900 0% /dev/shmtmpfs 338900 5604 333296 2% /runtmpfs 338900 0 338900 0% /sys/fs/cgroup/dev/mapper/centos-root 18593792 2689036 15904756 15% //dev/sda1 1038336 139200 899136 14% /boottmpfs 67780 0 67780 0% /run/user/0total 21043528 2833840 18209688 14% -
-h选项,通过它可以产生可读的格式df命令的输出:
[root@LB-nginx-01 ~]# df -h文件系统 容量 已用 可用 已用% 挂载点devtmpfs 320M 0 320M 0% /devtmpfs 331M 0 331M 0% /dev/shmtmpfs 331M 5.5M 326M 2% /runtmpfs 331M 0 331M 0% /sys/fs/cgroup/dev/mapper/centos-root 18G 2.6G 16G 15% //dev/sda1 1014M 136M 879M 14% /boottmpfs 67M 0 67M 0% /run/user/0
du (英文全拼:disk usage):显示目录或文件的大小
语法格式:du [options] [file...]
OPTIONS说明: -a或-all 显示目录中个别文件的大小。-b或-bytes 显示目录或文件大小时,以byte为单位。-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。-D或--dereference-args 显示指定符号连接的源文件大小。-h或--human-readable 以K,M,G为单位,提高信息的可读性。-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。-k或--kilobytes 以1024 bytes为单位。-l或--count-links 重复计算硬件连接的文件。-L <符号连接> 或--dereference <符号连接> 显示选项中所指定符号连接的源文件大小。-m或--megabytes 以1MB为单位。-s或--summarize 仅显示总计。-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。-X <文件> 或--exclude-from= <文件> 在 <文件> 指定目录或文件。--exclude= <目录或文件> 略过指定的目录或文件。--max-depth= <目录层数> 超过指定层数的目录后,予以忽略。 目录层数> 目录或文件> 文件> 文件> 文件> 符号连接> 符号连接>
实例:
显示目录或者文件所占空间[root@web-nginx-01 ~]# du 48 ./nginx-1.6.3/auto/cc4 ./nginx-1.6.3/auto/lib/geoip4 ./nginx-1.6.3/auto/lib/google-perftools8 ./nginx-1.6.3/auto/lib/libatomic4 ./nginx-1.6.3/auto/lib/libgd4 ./nginx-1.6.3/auto/lib/libxslt20 ./nginx-1.6.3/auto/lib/md516 ./nginx-1.6.3/auto/lib/openssl24 ./nginx-1.6.3/auto/lib/pcre8 ./nginx-1.6.3/auto/lib/perl20 ./nginx-1.6.3/auto/lib/sha1 ······省略······8 ./wordpress/wp-includes/Text/Diff/Renderer56 ./wordpress/wp-includes/Text/Diff72 ./wordpress/wp-includes/Text40 ./wordpress/wp-includes/theme-compat176 ./wordpress/wp-includes/widgets33200 ./wordpress/wp-includes48112 ./wordpress2250008 .只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的2250008为当前目录的总大小
显示指定文件所占空间
[root@web-nginx-01 ~]# du -h mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz 190M mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz
查看指定目录的所占空间
[root@web-nginx-01 ~]# du -sh /etc/35M /etc/
显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
[root@web-nginx-01 ~]# du -ch mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz php-5.6.30.tar.gz 190M mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz19M php-5.6.30.tar.gz209M 总用量
按照空间大小排序
[root@web-nginx-01 ~]# du | sort -nr | more2250008 .1188068 ./mysql-5.6.41-linux-glibc2.12-x86_64574540 ./mysql-5.6.41-linux-glibc2.12-x86_64/bin444288 ./php-5.6.30417036 ./mysql-5.6.41-linux-glibc2.12-x86_64/lib251688 ./php-5.6.30/ext188768 ./mysql-5.6.41-linux-glibc2.12-x86_64/mysql-test136268 ./mysql-5.6.41-linux-glibc2.12-x86_64/mysql-test/suite124784 ./php-5.6.30/sapi
➢ 硬链接:可以将它理解为一个“指向原始文件 inode 的指针”,系统不为它分配独立的 inode 和文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的 inode 连接数就会增加 1;而且只有当该文件的 inode 连接数为 0 时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件 inode 的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性,我们不能跨分区对目录文件进行链接。
➢ 软链接(符号链接):仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与 Windows 系统中的“快捷方式”具有一样的性质。 ln :创建链接文件语法格式: ln [options] source [dest]
options说明: -b 删除,覆盖以前建立的链接-d 允许超级用户制作目录的硬链接-f 强制执行-i 交互模式,文件存在则提示用户是否覆盖-n 把符号链接视为一般目录-s 软链接(符号链接)-v 显示详细的处理过程
实例:
给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:[root@web-nginx-01 ~]# ln -s log2013.log link2013[root@web-nginx-01 ~]# ll link2013 log2013.log lrwxrwxrwx. 1 root root 11 1月 6 14:59 link2013 -> log2013.log-rw-r--r--. 1 root root 0 1月 6 14:58 log2013.log
给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
[root@web-nginx-01 ~]# ln log2013.log ln2013[root@web-nginx-01 ~]# ll log2013.log ln2013 -rw-r--r--. 2 root root 0 1月 6 14:58 ln2013-rw-r--r--. 2 root root 0 1月 6 14:58 log2013.log
①:观察磁盘分区状态:
lsblk: 列出系统上的所有磁盘列表语法格式:lsblk [options] [device]
options说明: -d :仅列出磁盘本身,并不会列出该磁盘的分区数据-f :同时列出该磁盘内的文件系统名称-i :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)-m :同时输出该设备在 /dev 下面的权限数据 (rwx 的数据)-p :列出该设备的完整文件名!而不是仅列出最后的名字而已。-t :列出该磁盘设备的详细数据,包括磁盘伫列机制、预读写的数据量大小等
[root@LB-nginx-01 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTfd0 2:0 1 4K 0 disk sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17.8G 0 lvm / └─centos-swap 253:1 0 1.3G 0 lvm [SWAP]sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part sr0 11:0 1 942M 0 rom
NAME : 这是块设备名。
MAJ:MIN : 本栏显示主要和次要设备号。
RM : 本栏显示设备是否可移动设备。
SIZE : 本栏列出设备的容量大小信息。
RO : 该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。
MOUNTPOINT : 本栏指出设备挂载的挂载点。
实例: 以列表方式显示[root@web-nginx-01 ~]# lsblk -lNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTfd0 2:0 1 4K 0 disk sda 8:0 0 20G 0 disk sda1 8:1 0 1G 0 part /bootsda2 8:2 0 19G 0 part centos-root 253:0 0 17.8G 0 lvm /centos-swap 253:1 0 1.3G 0 lvm [SWAP]sr0 11:0 1 942M 0 rom
获取SCSI设备的列表,你只能使用-S选项。该选项是大写字母S,不能和-s选项混淆,该选项是用来以颠倒的顺序打印依赖的。
[root@web-nginx-01 ~]# lsblk -SNAME HCTL TYPE VENDOR MODEL REV TRANsda 0:0:0:0 disk VMware, VMware Virtual S 1.0 spisr0 2:0:0:0 rom NECVMWar VMware IDE CDR10 1.00 ata
blkid :列出设备的 UUID 等参数
[root@LB-nginx-01 ~]# blkid #列出所有设备文件系统和UUID/dev/sda1: UUID="5c598490-c586-48d7-928c-1ede1ac35c27" TYPE="xfs" /dev/sda2: UUID="LdMP7w-H8P8-3LDJ-akZx-qxSr-dvx3-Nqyy4T" TYPE="LVM2_member" /dev/sr0: UUID="2019-09-11-19-02-53-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/mapper/centos-root: UUID="33b1753b-b6a5-4f2e-8472-bf706e1c0e28" TYPE="xfs" /dev/mapper/centos-swap: UUID="09088425-f91c-4440-90e7-6a517266b810" TYPE="swap" /dev/sdb1: UUID="b9f91b6a-b1d1-4852-9de1-a79cd41b06bc" TYPE="ext4" [root@LB-nginx-01 ~]# blkid -s UUID /dev/sda1 #列出指定设备的UUID/dev/sda1: UUID="5c598490-c586-48d7-928c-1ede1ac35c27" [root@LB-nginx-01 ~]# blkid -s UUID #列出所有设备的UUID/dev/sda1: UUID="5c598490-c586-48d7-928c-1ede1ac35c27" /dev/sda2: UUID="LdMP7w-H8P8-3LDJ-akZx-qxSr-dvx3-Nqyy4T" /dev/sr0: UUID="2019-09-11-19-02-53-00" /dev/mapper/centos-root: UUID="33b1753b-b6a5-4f2e-8472-bf706e1c0e28" /dev/mapper/centos-swap: UUID="09088425-f91c-4440-90e7-6a517266b810" /dev/sdb1: UUID="b9f91b6a-b1d1-4852-9de1-a79cd41b06bc"
②:磁盘分区fdisk、gdisk(fdisk针对MBR,gdisk针对GPT,千万不要搞错!!!)
fdisk:Linux分区表操作工具软件(针对于MBR分区格式) MBR分区表:Master Boot Record,即硬盘主引导记录分区表,只支持容量在 2.1TB 以下的硬盘,超过2.1TB的硬盘只能管理2.1TB,最多只支持4个主分区或三个主分区和一个扩展分区,扩展分区下可以有多个逻辑分区。语法格式:fdisk [options]<device>
options说明: -l :列出指定设备的分区表信息并退出
列出设备的分区表信息
[root@localhost ~]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000bf4f2 Device Boot Start End Blocks Id System/dev/sda1 * 2048 2099199 1048576 83 Linux/dev/sda2 2099200 41943039 19921920 8e Linux LVMDisk /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes
fdisk分区命令实例详解(不是按照一块磁盘进行分区解释的,只为记录分区命令详解,只要不保存退出按w,随意操作):
[root@localhost ~]# fdisk /dev/sda #对/dev/sda进行分区 Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Command (m for help): m #查看帮助信息Command action a toggle a bootable flag #切换可引导标志 b edit bsd disklabel #撤消历史记录 c toggle the dos compatibility flag #切换dos兼容性标志 d delete a partition #删除分区 g create a new empty GPT partition table #创建一个新的空GPT分区表 G create an IRIX (SGI) partition table #创建IRIX(SGI)分区表 l list known partition types #列出已知分区类型 m print this menu #打印此菜单 n add a new partition #添加新分区 o create a new empty DOS partition table #创建一个新的空DOS分区表 p print the partition table #打印分区表 q quit without saving changes #退出而不保存更改 s create a new empty Sun disklabel #创建新的空Sun disklabel t change a partition's system id #更改分区的系统id u change display/entry units #更改显示/输入单位 v verify the partition table #验证分区表 w write table to disk and exit #将表写入磁盘并退出 x extra functionality (experts only) #额外功能(仅限专家)Command (m for help): p #打印分区表Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000bf4f2 Device Boot Start End Blocks Id System/dev/sda1 * 2048 2099199 1048576 83 Linux/dev/sda2 2099200 41943039 19921920 8e Linux LVMCommand (m for help): n #新建分区Partition type: p primary (0 primary, 0 extended, 4 free) #主分区 e extended #扩展分区Select (default p): p #设置分区类型(默认是主分区)Partition number (1-4, default 1): 1 #设置分区号(默认是1)First sector (2048-41943039, default 2048): #这个就是分区的Start 值;这里最好直接按回车,如果您输入了一个非默认的数字,会造成空间浪费;Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): #定义分区大小,例:添加500M的分区就是+500MUsing default value 41943039Partition 1 of type Linux and of size 20 GiB is setCommand (m for help): p #查看新添加的分区Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x05b5babd Device Boot Start End Blocks Id System/dev/sdb1 2048 41943039 20970496 83 LinuxCommand (m for help): d #删除分区Partition number (1,2, default 2): 1 #选择要删除的分区号Partition 1 is deletedCommand (m for help): w #保存分区并退出The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.
gdisk:Linux分区表操作工具软件(针对于GPT分区格式,需要自行安装yum -y install gdisk)
GPT分区表:GPT,全局唯一标识分区表(GUID Partition Table),与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区,GPT可管理硬盘大小达到了18EB。只有基于UEFI平台的主板才支持GPT分区引导启动。语法格式:fdisk [options]<device>
options说明: -l :列出指定设备的分区表信息并退出
列出设备的分区表信息
[root@localhost ~]# gdisk -l /dev/sdbGPT fdisk (gdisk) version 0.8.10Partition table scan: MBR: protective BSD: not present APM: not present GPT: presentFound valid GPT with protective MBR; using GPT.Disk /dev/sdb: 41943040 sectors, 20.0 GiBLogical sector size: 512 bytesDisk identifier (GUID): DCC19128-2AC1-4EF3-B0F8-F72C5DC0D21EPartition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 41943006Partitions will be aligned on 2048-sector boundariesTotal free space is 39845821 sectors (19.0 GiB)Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem
gdisk分区命令实例详解(不是按照一块磁盘进行分区解释的,只为记录分区命令详解,只要不保存退出按w,随意操作):
[root@localhost ~]# gdisk /dev/sdb #对/dev/sdb进行分区GPT fdisk (gdisk) version 0.8.10Partition table scan: MBR: protective BSD: not present APM: not present GPT: presentFound valid GPT with protective MBR; using GPT.Command (? for help): ? #"?"获取帮助b back up GPT data to a file #将GPT数据备份到文件c change a partition's name #更改分区名称d delete a partition #删除分区i show detailed information on a partition #显示分区的详细信息l list known partition types #列出已知分区类型n add a new partition #添加新分区o create a new empty GUID partition table (GPT) #创建新的空GUID分区表(GPT)p print the partition table #打印分区表q quit without saving changes #退出而不保存更改r recovery and transformation options (experts only) #恢复和转换选项(仅限专家)s sort partitions #对分区排序t change a partition's type code #更改分区的类型代码v verify disk #验证磁盘w write table to disk and exit #将表写入磁盘并退出x extra functionality (experts only) #额外功能(仅限专家)? print this menu #打印此菜单Command (? for help): n #添加新分区Partition number (1-128, default 1): #分区号(直接回车默认为1)First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: #这个就是分区的Start 值;这里最好直接按回车,如果您输入了一个非默认的数字,会造成空间浪费;Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G #定义分区大小,例:添加1G的分区就是+1GCurrent type is 'Linux filesystem'Hex code or GUID (L to show codes, Enter = 8300): #未来这个分区预计使用的文件系统,默认都是 Linux 文件系统的 8300 Changed type of partition to 'Linux filesystem'Command (? for help): p #打印分区表Disk /dev/sdb: 41943040 sectors, 20.0 GiBLogical sector size: 512 bytesDisk identifier (GUID): DCC19128-2AC1-4EF3-B0F8-F72C5DC0D21EPartition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 41943006Partitions will be aligned on 2048-sector boundariesTotal free space is 39845821 sectors (19.0 GiB)Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystemCommand (? for help): d #删除分区Using 1Command (? for help): p #打印分区表验证一下Disk /dev/sdb: 41943040 sectors, 20.0 GiBLogical sector size: 512 bytesDisk identifier (GUID): DCC19128-2AC1-4EF3-B0F8-F72C5DC0D21EPartition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 41943006Partitions will be aligned on 2048-sector boundariesTotal free space is 41942973 sectors (20.0 GiB)Number Start (sector) End (sector) Size Code NameCommand (? for help): w #保存并退出Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTINGPARTITIONS!!Do you want to proceed? (Y/N): y #按y继续OK; writing new GUID partition table (GPT) to /dev/sdb.The operation has completed successfully.
③:磁盘格式化(创建文件系统)
分区完毕后如果要进行挂载使用自然就是要进行文件系统的格式化 XFS 文件系统 mkfs.xfs语法格式:mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] [-r parms] 设备名称
-b:后面接的是区块容量,范围是512B-64K。不过Linux最大为4K
-d:后面接的是data section(数据区)的相关参数值参数 | 解释 |
---|---|
agcount=数值 | 设置需要几个存储群组的意思(AG),通常与CPU有关 |
agsize=数值 | 每个AG设置为多少容量的意思。通常agcount/agsize只选一个设置 |
file | 指的是格式化的设备是个文件而不是个设备的意思(例如虚拟磁盘) |
size=数值 | data section的容量。你可以设置大小 |
su=数值 | 当有RAID(磁盘列阵)时,代表stripe的数值大小,与下面的sw搭配使用 |
sw=数值 | 当有RAID时,用于保存数据的磁盘数量(需扣除备份盘与备用盘) |
sunit=数值 | 与su意思相同。不过单位使用的是几个sector(512B)的意思(一个stripe由多少个扇区组成) |
swidth=数值 | 就是su*sw的数值,但是以几个sector(512B)来设置 |
-f:如果设备内已经有了文件系统,则需要使用-f强制格式化
-i的参数:与inode有较相关的设置参数 | 解释 |
---|---|
size=数值 | 最小的是256B,最大是2K。一般使用256B就足够了 |
internal=[0/1] | log设备是否为内置。默认1为内置,如果使用外部设备,使用下面设置 |
logdev=设备名 | log设备为后面接的那个设备上面的意思,需设置internal=0才可以 |
size=数值 | 指定这块登录区的容量,通常最小得要512个区块,大约2M=以上才行 |
-L参数:后面接这个文件系统的标头名称Label name
-r参数:指定realtime section(实时运行区)的相关设置值参数 | 解释 |
---|---|
extsize=数值 | 就是那个重要的extent区块数值,一般不需设置。但有RAID时,最好设置与swidth的数值相同较佳。最小为4K,最大为1G |
实例:
[root@LB-nginx-01 ~]# mkfs.xfs /dev/sdb2meta-data=/dev/sdb2 isize=512 agcount=4, agsize=196608 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0data = bsize=4096 blocks=786432, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[root@LB-nginx-01 ~]# blkid /dev/sdb2/dev/sdb2: UUID="4756939a-b8a3-4722-ba0e-b0b868eb86a4" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="85bdb599-99a2-4fd5-98d9-317d3529f23d"
EXT4 文件系统 mkfs.ext4
语法格式:mkfs.ext4 [-b size] [-L label] 设备名称
选项与参数: -b :设置 block 的大小,有 1K, 2K, 4K 的容量, -L :后面接这个设备的标头名称。 实例: [root@localhost ~]# mkfs.ext4 /dev/sdb1mke2fs 1.42.9 (28-Dec-2013)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks655360 inodes, 2621440 blocks131072 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=215167795280 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: done [root@localhost ~]# blkid /dev/sdb1/dev/sdb1: UUID="5f3f6757-808b-4c58-9d2c-63dcede9656b" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="a413fe31-db1a-45d0-b634-f1758222f4b1"
④:文件系统检验
由于系统在运行时谁也说不准啥时硬件或者是电源会有问题,所以“死机”可能是难免的情况(不管是硬件还是软件) 。 现在我们知道文件系统运行时会有磁盘与内存数据非同步的状况发生,因此莫名其妙的死机非常可能导致文件系统的错乱。 问题来啦,如果文件系统真的发生错乱的话,那该如何是好?就…挽救啊!不同的文件系统救援的指令不太一样,主要针对 xfs 及 ext4 这两个主流来说明。 xfs_repair 处理 XFS 文件系统(在未挂载的情况下使用)语法格式xfs_repair [-fnd] 设备名称
选项与参数: -f :后面的设备其实是个文件而不是实体设备 -n :单纯检查并不修改文件系统的任何数据 (检查而已) -d :通常用在单人维护模式下面,针对根目录 (/) 进行检查与修复的动作!很危险!不要随便使用 [root@localhost ~]# xfs_repair /dev/sdb1Phase 1 - find and verify superblock...Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunkPhase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes...Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3Phase 5 - rebuild AG headers and trees... - reset superblock...Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ...Phase 7 - verify and correct link counts...done
fsck.ext4 处理 EXT4 文件系统
语法格式:fsck.ext4 [-pf] [-b superblock] 设备名称
选项与参数: -p :当文件系统在修复时,若有需要回复 y 的动作时,自动回复 y 来继续进行修复动作。 -f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标啰! -D :针对文件系统下的目录进行最优化配置。 -b :后面接 superblock 的位置!一般来说这个选项用不到。但是如果你的 superblock 因故损毁时,通过这个参数即可利用文件系统内备份的 superblock 来尝试救援。一般来说,superblock 备份在:1K block 放在 8193, 2K block 放在 16384, 4K block 放在 32768 [root@localhost ~]# fsck.ext4 /dev/sdb2 #文件系统状态正常,它并不会进入强制检查!会告诉你文件系统没问题 e2fsck 1.42.9 (28-Dec-2013)/dev/sdb2: clean, 11/131072 files, 26156/524288 blocks[root@localhost ~]# fsck.ext4 -f /dev/sdb2 #强制检查e2fsck 1.42.9 (28-Dec-2013)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/sdb2: 11/131072 files (0.0% non-contiguous), 26156/524288 blocks
⑤:文件系统挂载与卸载
mount:挂载语法格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir
选项: -V:显示程序版本-h:显示辅助讯息-v:显示较讯息,通常和 -f 用来除错。-a:将 /etc/fstab 中定义的所有档案系统挂上。-F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。-f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。-n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。-s-r:等于 -o ro-w:等于 -o rw-L:将含有特定标签的硬盘分割挂上。-U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。-t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。-o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。-o sync:在同步模式下执行。-o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。-o auto、-o noauto:打开/关闭自动挂上模式。-o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.-o dev、-o nodev-o exec、-o noexec允许执行档被执行。-o suid、-o nosuid:允许执行档在 root 权限下执行。-o user、-o nouser:使用者可以执行 mount/umount 的动作。-o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。-o ro:用唯读模式挂上。-o rw:用可读写模式挂上。-o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
实例:
[root@localhost ~]# mkdir -p /data/xfs #创建挂载目录[root@localhost ~]# mkdir -p /data/ext4[root@localhost ~]# blkid /dev/sdb #查看UUIDsdb sdb1 sdb2 [root@localhost ~]# blkid /dev/sdb1 /dev/sdb2/dev/sdb1: UUID="c92fe1bf-a2e9-4b8c-b389-3f6beb56121d" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="a413fe31-db1a-45d0-b634-f1758222f4b1" /dev/sdb2: UUID="62e150e8-5b54-4b87-b9a9-6a09f725fc92" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="f6503180-1965-430c-9b6f-9a559f3ee584" [root@localhost ~]# mount UUID="c92fe1bf-a2e9-4b8c-b389-3f6beb56121d" /data/xfs #挂载[root@localhost ~]# mount UUID="62e150e8-5b54-4b87-b9a9-6a09f725fc92" /data/ext4/[root@localhost ~]# df -Th #查看是否挂载成功Filesystem Type Size Used Avail Use% Mounted ondevtmpfs devtmpfs 480M 0 480M 0% /devtmpfs tmpfs 491M 0 491M 0% /dev/shmtmpfs tmpfs 491M 7.5M 484M 2% /runtmpfs tmpfs 491M 0 491M 0% /sys/fs/cgroup/dev/mapper/centos-root xfs 17G 1.3G 16G 8% //dev/sda1 xfs 1014M 136M 879M 14% /boottmpfs tmpfs 99M 0 99M 0% /run/user/0/dev/sdb1 xfs 1014M 33M 982M 4% /data/xfs/dev/sdb2 ext4 2.0G 6.0M 1.8G 1% /data/ext4
挂载iso:
[root@localhost ~]# mkdir /data/cdrom[root@localhost ~]# mount /dev/cdrom /data/cdrom/mount: /dev/sr0 is write-protected, mounting read-only[root@localhost ~]# df -ThFilesystem Type Size Used Avail Use% Mounted ondevtmpfs devtmpfs 480M 0 480M 0% /devtmpfs tmpfs 491M 0 491M 0% /dev/shmtmpfs tmpfs 491M 7.5M 484M 2% /runtmpfs tmpfs 491M 0 491M 0% /sys/fs/cgroup/dev/mapper/centos-root xfs 17G 1.3G 16G 8% //dev/sda1 xfs 1014M 136M 879M 14% /boottmpfs tmpfs 99M 0 99M 0% /run/user/0/dev/sdb1 xfs 1014M 33M 982M 4% /data/xfs/dev/sdb2 ext4 2.0G 6.0M 1.8G 1% /data/ext4/dev/sr0 iso9660 942M 942M 0 100% /data/cdrom[root@localhost ~]# ls /data/cdrom/CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
umount (将设备文件卸载)
语法格式:umount [-ahnrvV][-t <文件系统类型>][文件系统]
参数: -a 卸除/etc/mtab中记录的所有文件系统。-h 显示帮助。-n 卸除时不要将信息存入/etc/mtab文件中。-r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。-t <文件系统类型> 仅卸除选项中所指定的文件系统。-v 执行时显示详细的信息。-V 显示版本信息。[文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。 文件系统类型>
实例:
[root@localhost ~]# umount /dev/sdb1[root@localhost ~]# df -ThFilesystem Type Size Used Avail Use% Mounted ondevtmpfs devtmpfs 480M 0 480M 0% /devtmpfs tmpfs 491M 0 491M 0% /dev/shmtmpfs tmpfs 491M 7.5M 484M 2% /runtmpfs tmpfs 491M 0 491M 0% /sys/fs/cgroup/dev/mapper/centos-root xfs 17G 1.3G 16G 8% //dev/sda1 xfs 1014M 136M 879M 14% /boottmpfs tmpfs 99M 0 99M 0% /run/user/0/dev/sdb2 ext4 2.0G 6.0M 1.8G 1% /data/ext4/dev/sr0 iso9660 942M 942M 0 100% /data/cdrom如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录
⑥:设置开机挂载
开机挂载设置文件路径:/etc/fstab[root@localhost ~]# cat /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0UUID=9968fd96-4c20-4793-bcc2-39e732e65a42 /boot xfs defaults 0 0/dev/mapper/centos-swap swap swap defaults 0 0
[设备/UUID等] [挂载点] [文件系统] [文件系统参数] [dump] [fsck]
第一栏:磁盘设备文件名/UUID/LABEL name: 第二栏:挂载点 (mount point) :: 第三栏:磁盘分区的文件系统:xfs, ext4, vfat, reiserfs, nfs 等等。 第四栏:文件系统参数:参数 | 内容意义 |
---|---|
async/sync非同步/同步 | 设置磁盘是否以非同步方式运行!默认为 async(性能较佳) |
auto/noauto自动/非自动 | 当下达 mount -a 时,此文件系统是否会被主动测试挂载。默认为 auto。 |
rw/ro 可读写/只读 | 让该分区以可读写或者是只读的型态挂载上来,如果你想要分享的数据是不给使用者随意变更的, 这里也能够设置为只读。则不论在此文件系统的文件是否设置 w 权限,都无法写入喔! |
exec/noexec可执行/不可执行 | 限制在此文件系统内是否可以进行“执行”的工作?如果是纯粹用来储存数据的目录, 那么可以设置为 noexec 会比较安全。不过,这个参数也不能随便使用,因为你不知道该目录下是否默认会有可执行文件。举例来说,如果你将 noexec 设置在 /var ,当某些软件将一些可执行文件放置于 /var 下时,那就会产生很大的问题喔! 因此,建议这个 noexec 最多仅设置于你自订或分享的一般数据目录。 |
user/nouser允许/不允许使用者挂载 | 是否允许使用者使用 mount指令来挂载呢?一般而言,我们当然不希望一般身份的 user 能使用 mount 啰,因为太不安全了,因此这里应该要设置为 nouser 啰! |
suid/nosuid具有/不具有suid | 权限该文件系统是否允许 SUID 的存在?如果不是可执行文件放置目录,也可以设置为 nosuid 来取消这个功能! |
defaults | 同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。 基本上,默认情况使用 defaults 设置即 |
第五栏:能否被 dump 备份指令作用:直接输0就好
第六栏:是否以 fsck 检验扇区:直接输0就好[root@localhost ~]# cat /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0UUID=9968fd96-4c20-4793-bcc2-39e732e65a42 /boot xfs defaults 0 0/dev/mapper/centos-swap swap swap defaults 0 0UUID=c92fe1bf-a2e9-4b8c-b389-3f6beb56121d /data/xfs xfs defaults 0 0 [root@localhost ~]# mount -a #将 /etc/fstab 中定义的所有档案系统挂上。[root@localhost ~]# df -ThFilesystem Type Size Used Avail Use% Mounted ondevtmpfs devtmpfs 480M 0 480M 0% /devtmpfs tmpfs 491M 0 491M 0% /dev/shmtmpfs tmpfs 491M 7.5M 484M 2% /runtmpfs tmpfs 491M 0 491M 0% /sys/fs/cgroup/dev/mapper/centos-root xfs 17G 1.3G 16G 8% //dev/sda1 xfs 1014M 136M 879M 14% /boottmpfs tmpfs 99M 0 99M 0% /run/user/0/dev/sdb2 ext4 2.0G 6.0M 1.8G 1% /data/ext4/dev/sr0 iso9660 942M 942M 0 100% /data/cdrom/dev/sdb1 xfs 1014M 33M 982M 4% /data/xfs
Swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。
[root@localhost ~]# gdisk /dev/sdb #分区GPT fdisk (gdisk) version 0.8.10Partition table scan: MBR: protective BSD: not present APM: not present GPT: presentFound valid GPT with protective MBR; using GPT.Command (? for help): n #添加新分区Partition number (3-128, default 3): First sector (34-41943006, default = 25167872) or {+-}size{KMGTP}: Last sector (25167872-41943006, default = 41943006) or {+-}size{KMGTP}: +5G #添加5G分区Current type is 'Linux filesystem'Hex code or GUID (L to show codes, Enter = 8300): L #查看swap文件系统GUID0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE 3000 ONIE boot 3001 ONIE config 4100 PowerPC PReP boot 4200 Windows LDM data 4201 Windows LDM metadata 7501 IBM GPFS 7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved 8200 Linux swap 8300 Linux filesystem 8301 Linux reserved 8302 Linux /home 8400 Intel Rapid Start 8e00 Linux LVM a500 FreeBSD disklabel a501 FreeBSD boot a502 FreeBSD swap a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID a580 Midnight BSD data a581 Midnight BSD boot a582 Midnight BSD swap a583 Midnight BSD UFS a584 Midnight BSD ZFS a585 Midnight BSD Vinum a800 Apple UFS a901 NetBSD swap a902 NetBSD FFS a903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted a906 NetBSD RAID ab00 Apple boot af00 Apple HFS/HFS+ af01 Apple RAID af02 Apple RAID offline af03 Apple label af04 AppleTV recovery af05 Apple Core Storage be00 Solaris boot bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2 bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5 c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partitPress thekey to see more codes: ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition fb00 VMWare VMFS fb01 VMWare reserved fc00 VMWare kcore crash pfd00 Linux RAID Hex code or GUID (L to show codes, Enter = 8300): 8200 #选择swap文件系统格式Changed type of partition to 'Linux swap'Command (? for help): w #保存并退出Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTINGPARTITIONS!!Do you want to proceed? (Y/N): yOK; writing new GUID partition table (GPT) to /dev/sdb.Warning: The kernel is still using the old partition table.The new table will be used at the next reboot.The operation has completed successfully.[root@localhost ~]# partprobe #将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表。Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.[root@localhost ~]# mkswap /dev/sdb3Setting up swapspace version 1, size = 5242876 KiBno label, UUID=98b9a51d-bb00-4b20-9a75-9d9586a2a00e[root@localhost ~]# blkid /dev/sdb3/dev/sdb3: UUID="98b9a51d-bb00-4b20-9a75-9d9586a2a00e" TYPE="swap" PARTLABEL="Linux swap" PARTUUID="23e24664-7415-4e14-9fe9-9cdb3d725f02" [root@localhost ~]# lsblk #查看新添加的sdb3是否为swapNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTfd0 2:0 1 4K 0 disk sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP]sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 10G 0 part /data/xfs├─sdb2 8:18 0 2G 0 part /data/ext4└─sdb3 8:19 0 5G 0 part [SWAP]sr0 11:0 1 942M 0 rom /data/cdrom[root@localhost ~]# free #查看内存容量 total used free shared buff/cache availableMem: 1005480 159808 721820 7664 123852 708488Swap: 2097148 0 2097148[root@localhost ~]# swapon /dev/sdb3 #激活Linux系统中交换空间[root@localhost ~]# free #再次查看,swap内存增加了 total used free shared buff/cache availableMem: 1005480 163876 717688 7664 123916 704388Swap: 7340024 0 7340024[root@localhost ~]# swapon -s #显示简短的装置讯息Filename Type Size Used Priority/dev/dm-1 partition 2097148 0 -2/dev/sdb3 partition 5242876 0 -3
转载地址:http://vzcpz.baihongyu.com/