3.1脚本文件名的搜寻
- 我们知道在终端机模式当中,连续输入两次[tab]按键就能够知道用户有多少指令可以下达
3.1.1which(寻找[执行文件])
[root@study ~]# which [-a] command
选项或参数:
-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
范例一:搜寻 ifconfig 这个指令的完整文件名
[root@study ~]# which ifconfig
/sbin/ifconfig
3.1.2whereis(文件名的搜寻)
- whereis 只找系统中某些特定目录底下的文件
- locate 则是利用数据库来搜寻文件名
[root@study ~]# whereis [-bmsu]
文件或目录名 选项与参数:
-l :可以列出 whereis 会去查询的几个主要目录而已 -b :只找 binary 格式的文件
-m :只找在说明文件 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件
范例一:请找出 ifconfig 这个档名
[root@study ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
范例二:只找出跟 passwd 有关的『说明文件』档名(man page)
[root@study ~]# whereis passwd # 全部的档名通通列出来!
passwd: /usr/bin/passwd
/etc/passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
[root@study ~]# whereis -m passwd # 只有在 man 里面的档名才抓出来!
passwd: /usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
whereis 主要是针 对 /bin /sbin 底下的执行档, 以及 /usr/share/man 底下的 man page 文件进行查找.
3.1.3locate/updatedb
[root@study ~]# locate [-ir] keyword
选项与参数:
-i :忽略大小写的差异;
-c :不输出档名,仅计算找到的文件数量
-l :仅输出几行的意思,例如输出五行则是 -l 5
-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等 -r :后面可接正规表示法的显示方式
范例一:找出系统中所有与 passwd 相关的档名,且只列出 5 个 [root@study ~]# locate -l 5 passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd
范例二:列出 locate 查询所使用的数据库文件之文件名与各数据数量 [root@study ~]# locate -S
Database /var/lib/mlocate/mlocate.db:
8,086 directories # 总纪录目录数
109,605 files # 总纪录文件数
5,190,295 bytes in file names
2,349,150 bytes used to store database
你会发现使用 locate 来寻找数据的时候特别的快,这是因为 locate寻找的数据是由『已建立的数据库 /var/lib/mlocate/』里面的数据所搜寻到的.
缺点是数据库的建立默认是在每天执行一次,所以当你新建立起来的文件, 却还 在数据库更新之前搜寻该文件,那么 locate 会告诉你『找不到!』更新 locate 数据库的方法非常简单,直接输入『 updatedb 』 就可以了! updatedb 指令会去读取 /etc/updatedb.conf 这个配置文件的设定,然后再去硬盘里面进行 搜寻文件名的动作, 最后就更新整个数据库文件.
- updatedb:根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库 文件;
- locate:依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。
3.1.4find(全盘搜寻)
[root@study ~]# find [PATH] [option] [action]
选项与参数:
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件档名
范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
[root@study ~]# find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!
范例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
[root@study ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的!
但如果我想要找出『4 天内被更动过的文件档名』?
那可以使用『 find /var -mtime -4 』那如果是『4 天前的那一天』?
就用『 find /var -mtime 4 』,有没有加上『+, -』差别很大喔!
- +4 代表大于等于 5 天前的檔名:ex> find /var -mtime +4
- -4 代表小于等于 4 天内的文件档名:ex> find /var -mtime -4
- 4 则是代表 4-5 那一天的文件档名:ex> find /var -mtime 4
find搜索用户文件选项与参数
选项与参数:
2. 与使用者或组名有关的参数:
-uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID ,这个 UID 是记录在 /etc/passwd 里面与账号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是组名的 ID,亦即 GID,这个 GID 记录在 /etc/group,相关的介绍我们会第四篇说明~
-user name :name 为使用者账号名称喔!例如 dmtsai
-group name:name 为组名喔,例如 users ;
-nouser :寻找文件的拥有者不存在 /etc/passwd 的人! -nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件!当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
范例三:搜寻 /home 底下属于 dmtsai 的文件
[root@study ~]# find /home -user dmtsai
# 这个东西也很有用的~当我们要找出任何一个用户在系统当中的所有文件时,
# 就可以利用这个指令将属于某个使用者的所有文件都找出来喔!
范例四:搜寻系统中不属于任何人的文件
[root@study ~]# find / -nouser
# 透过这个指令,可以轻易的就找出那些不太正常的文件。如果有找到不属于系统任何人的文件时,
# 不要太紧张,那有时候是正常的~尤其是你曾经以原始码自行编译软件时。
find搜寻文件类型选项与参数
选项与参数:
3. 与文件权限及名称有关的参数:
-name filename:搜寻文件名为 filename 的文件;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。
这个SIZE 的规格有:c: 代表 byte,k: 代表1024bytes。
所以,要找比 50KB还要大的文件,就是『 -size +50k 』
-type TYPE :搜寻文件的类型为 TYPE 的,类型主要有:
一般正规文件 (f), 装置文件 (b, c),
目录 (d), 连结档(l), socket (s), 及 FIFO (p) 等属性。
-perm mode :搜寻文件权限『刚好等于』 mode 的文件,这个mode 为类似 chmod的属性值,
举例来说,-rwsr-xr-x 的属性为 4755 !
-perm -mode :搜寻文件权限『必须要全部囊括 mode 的权限』的文件,
举例来说,我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,
当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm /mode :搜寻文件权限『包含任一 mode 的权限』的文件,
举例来说,我们搜寻 -rwxr-xr-x ,
亦即 -perm /755 时,但一个文件属性为 -rw------- 也会被列出来,
因为他有 -rw.... 的属性存在!
范例五:找出档名为 passwd 这个文件
[root@study ~]# find / -name passwd
范例五-1:找出文件名包含了 passwd 这个关键词的文件
[root@study ~]# find / -name "*passwd*"
# 利用这个 -name 可以搜寻档名啊!默认是完整文件名,如果想要找关键词,
# 可以使用类似 * 的任意字符来处理
范例六:找出 /run 目录下,文件类型为 Socket 的檔名有哪些?
[root@study ~]# find /run -type s
# 这个 -type 的属性也很有帮助喔!尤其是要找出那些怪异的文件,
# 例如 socket 与 FIFO 文件,可以用 find /run -type p 或 -type s 来找
范例七:搜寻文件当中含有 SGID 或 SUID 或 SBIT 的属性
[root@study ~]# find / -perm /7000
# 所谓的 7000 就是 ---s--s--t ,那么只要含有 s 或 t 的就列出,所以当然要使用 /7000,
# 使用 -7000 表示要同时含有 ---s--s--t 的所有三个权限。而只需要任意一个,就是 /7000 ~瞭乎?
假设我想要找出来 /usr/bin, /usr/sbin 这两个目录下, 只要具有 SUID 或 SGID 就列出来该文件?
[root@study ~]# find /usr/bin /usr/sbin -perm /6000
find搜寻额外动作执行
选项与参数:
4. 额外可进行的动作:
-exec command :command 为其他指令,
-exec 后面可再接额外的指令来处理搜寻到的结果。
-print :将结果打印到屏幕上,这个动作是预设动作!
范例八:将上个范例找到的文件使用 ls -l 列出来~
[root@study ~]# find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
# 注意到,那个 -exec 后面的 ls -l 就是额外的指令,指令不支持命令别名,
# 所以仅能使用 ls -l 不可以使用 ll 喔!注意注意!
范例九:找出系统中,大于 1MB 的文件
[root@study ~]# find / -size +1M
范例八命令串解释
- {} 代表的是『由 find 找到的内容』,如上图所示,find 的结果会被放置到 {} 位置中;
- -exec 一直到 ; 是关键词,代表 find 额外动作的开始 (-exec) 到结束 (;) ,在这中间的就是 find 指令内
的额外动作。 在本例中就是『 ls -l {} 』啰!
- 因为『 ; 』在 bash 环境下是有特殊意义的,因此利用反斜杠来跳脱。
如果想要找出 /etc 底下檔名包含 httpd 的文件
[root@study ~]# find /etc -name 'httpd'
- 不但可以指定搜寻的目录(连同次目录),并且可以利用额外的选项与参数来找到最正确的档名!
- 不过由于 find 在寻找数据的时后相当的操硬盘!所以没事情不要使用 find指令,可以使用上面提到的 whereis 与 locate 取代.
3.2dumpe2fs(查询Ext4的superblock信息)
注: CentOS 7 现在是以 xfs 为预设文件系统, 所以目前你的系统应该无法使用 dumpe2fs 去查 询任何文件系统的。
[root@study ~]# dumpe2fs [-bh] 装置文件名
选项与参数:
-b :列出保留为坏轨的部分(一般用不到吧!?)
-h :仅列出 superblock 的数据,不会列出其他的区段内容!
3.3linux支持的文件系统
常见的支持文件系统有:
- 传统文件系统:ext2 / minix / MS-DOS / FAT (用 vfat 模块) / iso9660 (光盘)等等;
- 日志式文件系统: ext3 /ext4 / ReiserFS / Windows' NTFS / IBM's JFS / SGI's XFS / ZFS
- 网络文件系统: NFS / SMBFS
查询你linux支持的文件系统有哪些?
ls -l /lib/modules/$(uname -r)/kernel/fs查询系统目前已加载到内存中支持的文件系统
cat /proc/filesystems
3.4df(磁盘与目录容量)
现在我们知道磁盘的整体数据是在 superblock 区块中,但是每个各别文件的容量则在 inode 当中记 载的。 那在文字接口底下该如何叫出这几个数据呢?
- df:列出文件系统的整体磁盘使用量;
[root@study ~]# df [-ahikHTm] [目录或文件名]
选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; -H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 xfs) 也列出; -i :不用磁盘容量,而以 inode 的数量来显示
范例一:将系统内所有的 filesystem 列出来!
[dmtsai@localhost ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-root 10475520 3783572 6691948 37% /
devtmpfs 926756 0 926756 0% /dev
tmpfs 942092 100 941992 1% /dev/shm
tmpfs 942092 8916 933176 1% /run
tmpfs 942092 0 942092 0% /sys/fs/cgroup
/dev/mapper/centos-home 5232640 37020 5195620 1% /home
/dev/sda2 1038336 167196 871140 17% /boot
tmpfs 188420 20 188400 1% /run/user/1000
# 在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的
# (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!
# 至于那个 /dev/shm 是与内存有关的挂载,先不要理他!
示例一参数解释
- Filesystem:代表该文件系统是在哪个 partition ,所以列出装置名称;
- 1k-blocks:说明底下的数字单位是 1KB 呦!可利用 -h 或 -m 来改变容量;
- Used:顾名思义,就是使用掉的磁盘空间啦!
- Available:也就是剩下的磁盘空间大小;
- Use%:就是磁盘的使用率啦!如果使用率高达 90% 以上时, 最好需要注意一下了,免得容量不足造成系
统问题喔!(例如最容易被灌爆的 /var/spool/mail 这个放置邮件的磁盘)
- Mounted on:就是磁盘挂载的目录所在啦!(挂载点啦!)
范例二:将容量结果以易读的容量格式显示出来
[dmtsai@localhost ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 3.7G 6.4G 37% /
devtmpfs 906M 0 906M 0% /dev
tmpfs 921M 100K 920M 1% /dev/shm
tmpfs 921M 8.8M 912M 1% /run
tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/mapper/centos-home 5.0G 37M 5.0G 1% /home
/dev/sda2 1014M 164M 851M 17% /boot
tmpfs 185M 20K 184M 1% /run/user/1000
# 不同于范例一,这里会以 G/M 等容量格式显示出来,比较容易看!
范例三:将系统内的所有特殊文件格式及名称都列出来
[dmtsai@localhost ~]$ df -aT
Filesystem Type 1K-blocks Used Available Use% Mounted on
rootfs - - - - - /
sysfs sysfs 0 0 0 - /sys
proc proc 0 0 0 - /proc
devtmpfs devtmpfs 926756 0 926756 0% /dev
securityfs securityfs 0 0 0 - /sys/kernel/security
tmpfs tmpfs 942092 100 941992 1% /dev/shm
devpts devpts 0 0 0 - /dev/pts
tmpfs tmpfs 942092 8916 933176 1% /run
tmpfs tmpfs 942092
...(省略部分).....
/dev/mapper/centos-root xfs 10475520 3783012 6692508 37% /
...(省略部分).....
/dev/mapper/centos-home xfs 5232640 37020 5195620 1% /home
/dev/sda2 xfs 1038336 167196 871140 17% /boot
tmpfs tmpfs 188420 20 188400 1% /run/user/1000
...(省略部分).....
binfmt_misc binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
# 系统里面其实还有很多特殊的文件系统存在的。那些比较特殊的文件系统几乎
# 都是在内存当中,例如 /proc 这个挂载点。因此,这些特殊的文件系统 # 都不会占据磁盘空间!
范例四:将 /etc 底下的可用的磁盘容量以易读的容量格式显示
[dmtsai@localhost ~]$ df -h /etc
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 3.7G 6.4G 37% /
# 这个范例比较有趣一点啦,在 df 后面加上目录或者是文件时, df
# 会自动的分析该目录或文件所在的 partition ,并将该 partition 的容量显示出来, # 所以,您就可以知道某个目录底下还有多少容量可以使用了!
范例五:将目前各个 partition 当中可用的 inode 数量列出
[dmtsai@localhost ~]$ df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 10M 136K 9.9M 2% /
devtmpfs 227K 374 226K 1% /dev
tmpfs 231K 10 230K 1% /dev/shm
tmpfs 231K 504 230K 1% /run
tmpfs 231K 13 230K 1% /sys/fs/cgroup
/dev/mapper/centos-home 5.0M 139 5.0M 1% /home
/dev/sda2 1.0M 330 1.0M 1% /boot
tmpfs 231K 27 230K 1% /run/user/1000
# 这个范例则主要列出可用的 inode 剩余量与总容量。分析一下与范例一的关系, # 你可以清楚的发现到,通常 inode 的数量剩余都比 block 还要多呢
由于 df 主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在 Superblock 内的 信息, 所以这个指令显示结果的速度非常的快速!
在显示的结果中你需要特别留意的是那个根目录 的剩余容量! 因为我们所有的数据都是由根目录衍生出来的,因此当根目录的剩余容量剩下 0 时,那你的 Linux 可能就问题很大了。
3.5du(搜寻磁盘内文件数据)
- du:评估文件系统的磁盘使用量(常用在推估目录所占容量)
[root@study ~]# du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。 -h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
范例一:列出目前目录下的所有文件容量
[dmtsai@localhost ~]$ du
0 ./.mozilla/extensions
0 ./.mozilla/plugins
...(省略部分)....
3616 ./.cache
256 ./.local/share
256 ./.local
4036 .
# 直接输入 du 没有加任何选项时,则 du 会分析『目前所在目录』
# 的文件与目录所占用的磁盘空间。但是,实际显示时,仅会显示目录容量(不含文件), # 因此 . 目录有很多文件没有被列出来,所以全部的目录相加不会等于 . 的容量喔!
# 此外,输出的数值数据为 1K 大小的容量单位。
范例二:同范例一,但是将文件的容量也列出来
[dmtsai@localhost ~]$ du -a
范例三:检查根目录底下每个目录所占用的容量
[root@localhost ~]# du -sm /*
0 /bin
132 /boot
...(中间省略)....
0 /proc
1 /root
9 /run
...(中间省略)....
1 /tmp
3268/usr
333 /var
# 这是个很常被使用的功能~利用通配符 * 来代表每个目录,如果想要检查某个目录下,
# 哪个次目录占用最大的容量,可以用这个方法找出来。值得注意的是,如果刚刚安装好 Linux 时, # 那么整个系统容量最大的应该是 /usr 。而 /proc 虽然有列出容量,但是那个容量是在内存中,
# 不占磁盘空间。至于 /proc 里头会列出一堆『No such file or directory』 的错误,
# 别担心!因为是内存内的程序,程序执行结束就会消失,因此会有些目录找不到,是正确的!
与 df 不一样的是,du 这个指令其实会直接到文件系统内去搜寻所有的文件数据, 所以上述第三个 范例指令的运作会执行一小段时间!
此外,在默认的情况下,容量的输出是以 KB 来设计的, 如果 你想要知道目录占了多少 MB ,那么就使用 -m 这个参数即可
3.6ln(实体连接与符号链接)
- 在 Linux 底下的连结档有两种,一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链 接到目标文件(或目录);
- 另一种则是透过文件系统的 inode 连结来产生新档名,而不是产生新文件! 这种称为实体链接 (hard link)。
[root@study ~]# ln [-sf] 来源文件 目标文件
选项与参数:
-s :如果不加任何参数就进行连结,那就是 hard link,至于 -s 就是 symbolic link
-f :如果 目标文件 存在时,就主动的将目标文件直接移除后再建立!
使用 ln 如果不加任何参数的话,那么就是 Hard Link.
而如果 ln 使用 -s 的参数时,就做成差不多是 Windows 底下的『快捷方式』的意思.
3.7磁盘操作
对于一个系统管理者( root )而言,磁盘的的管理是相当重要的一环,尤其近来磁盘已经渐渐的被当成 是消耗品了.如果我们想要在系统里面新增一颗磁盘时,应该有哪些动作需要做的呢
- 对磁盘进行分区,以建立可用的 partition ;
- 对该 partition 进行格式化 (format),以建立系统可用的 filesystem;
- 若想要仔细一点,则可对刚刚建立好的 filesystem 进行检验;
- 在 Linux 系统上,需要建立挂载点 (亦即是目录),并将他挂载上来;
3.7.1lsblk(列出系统里所有磁盘列表)
- lsblk 可以看成『 list block device 』的缩写,就是列出所有储存装置的意思!
[root@study ~]# lsblk [-dfimpt] [device]
选项与参数:
-d :仅列出磁盘本身,并不会列出该磁盘的分区数据
-f :同时列出该磁盘内的文件系统名称
-i :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用) -m :同时输出该装置在 /dev 底下的权限数据 (rwx 的数据)
-p :列出该装置的完整文件名!而不是仅列出最后的名字而已。
-t :列出该磁盘装置的详细数据,包括磁盘队列机制、预读写的数据量大小等
范例一:列出本系统下的所有磁盘与磁盘内的分区信息
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
|-sda1 8:1 0 2M 0 part
|-sda2 8:2 0 1G 0 part /boot
`-sda3 8:3 0 28G 0 part
|-centos-root 253:0 0 10G 0 lvm /
|-centos-swap 253:1 0 1G 0 lvm [SWAP]
`-centos-home 253:2 0 5G 0 lvm /home
sr0 11:0 1 1024M 0 rom
sr1 11:1 1 1024M 0 rom
参数解释:
- NAME:就是装置的文件名啰!会省略 /dev 等前导目录!
- MAJ:MIN:其实核心认识的装置都是透过这两个代码来熟悉的!分别是主要:次要装置代码!
- RM:是否为可卸除装置 (removable device),如光盘、USB 磁盘等等
- SIZE:当然就是容量啰!
- RO:是否为只读装置的意思
- TYPE:是磁盘 (disk)、分区槽 (partition) 还是只读存储器 (rom) 等输出
- MOUTPOINT:就是前一章谈到的挂载点!
范例二:仅列出 /dev/sda 装置内的所有数据的完整文件名
[root@localhost ~]# lsblk -ip /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda 8:0 0 40G 0 disk
|-/dev/sda1 8:1 0 2M 0 part
|-/dev/sda2 8:2 0 1G 0 part /boot
`-/dev/sda3 8:3 0 28G 0 part
|-/dev/mapper/centos-root 253:0 0 10G 0 lvm /
|-/dev/mapper/centos-swap 253:1 0 1G 0 lvm [SWAP]
`-/dev/mapper/centos-home 253:2 0 5G 0 lvm /home # 完整的檔名,由 / 开始写
3.7.2blkid(列出装置的UUID)
虽然 lsblk 已经可以使用 -f 来列出文件系统与装置的 UUID 数据,但是blkid比较方便
[root@localhost ~]# blkid
/dev/sda2: UUID="ca9503b5-43d6-445a-9ac6-a5e0b9da808d" TYPE="xfs" PARTUUID="a15074c2-ca7b-40fd-88b0-666e5f441309"
/dev/sda3: UUID="58cMGE-TN4o-mdPa-rwvs-nFFW-7ttI-Ar7520" TYPE="LVM2_member" PARTUUID="8adeba36-c381-402a-b63f-e19931e92688"
/dev/mapper/centos-root: UUID="caa55b5e-a614-4e78-a9d8-b467cf333462" TYPE="xfs"
/dev/mapper/centos-swap: UUID="89c81645-b4f9-4dbf-9448-a35586ad1d0f" TYPE="swap"
/dev/mapper/centos-home: UUID="cf7ea973-0fc9-4e9e-b2da-16fc5034fdfc" TYPE="xfs"
/dev/sda1: PARTUUID="e9867690-5f3d-460e-8571-89bf176275be"
- 如上所示,每一行代表一个文件系统,主要列出装置名称、UUID 名称以及文件系统的类型 (TYPE).
3.7.3parted(列出磁盘分区信息)
[root@localhost ~]#parted device_name print
示例一:列出 /dev/sda 磁盘的相关数据
[root@localhost ~]# parted /dev/sda print
Model: ATA VBOX HARDDISK (scsi) #磁盘的模块名称(厂商)
Disk /dev/sda: 42.9GB #磁盘的总容量
Sector size (logical/physical): 512B/512B #磁盘的每个逻辑/物理扇区容量
Partition Table: gpt #分区别的格式(MBR/GPT)
Disk Flags: pmbr_boot
Number Start End Size File system Name Flags #分区数据
1 1049kB 3146kB 2097kB bios_grub
2 3146kB 1077MB 1074MB xfs
3 1077MB 31.1GB 30.0GB lvm
3.7.4gdisk/fdisk(磁盘分区)
- MBR 分区表请使用 fdisk 分区, GPT 分区表请 使用 gdisk 分区!
[root@localhost~]# gdisk 装置名称
范例:由前面lsblk 输出,我们知道系统有个 /dev/sda,请观察该磁盘的分区与相关数据
[root@localhost ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): GPT # 输入要分区的格式
b back up GPT data to a file
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)
p print the partition table #打印出分区表(常用)
q quit without saving changes #不储存分区就直接离开gdisk
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 #储存分区炒作后离开gdisk
x extra functionality (experts only)
? print this menu
Command (? for help): p #打印磁盘的状态
Disk /dev/sda: 83886080 sectors, 40.0 GiB # 磁盘文件名/扇区数与总容量
Logical sector size: 512 bytes # 单一扇区大小为 512 bytes
Disk identifier (GUID): E28CB73B-019E-4C86-A45D-BA241C9FACAB # 磁盘的 GPT 标识符
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 83886046
Partitions will be aligned on 2048-sector boundaries
Total free space is 23179197 sectors (11.1 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 60708863 27.9 GiB 8E00
#分区编号 开始扇区号码 结束扇区号码 容量大小
Command (? for help):
- Number:分区槽编号,1 号指的是 /dev/vda1 这样计算。
- Start (sector):每一个分区槽的开始扇区号码位置
- End (sector):每一个分区的结束扇区号码位置,与 start 之间可以算出分区槽的总容量
- Size:就是分区槽的容量了
- Code:在分区槽内的可能的文件系统类型。Linux 为 8300,swap 为 8200。不过这个项目只是一个提示而
已,不见得真的代表此分区槽内的文件系统喔! - Name:文件系统的名称等等。
gdisk新增分区
分区需求:
- 1GB 的 xfs 文件系统 (Linux)
- 1GB 的 vfat 文件系统 (Windows)
- 0.5GB 的 swap (Linux swap)(这个分区等一下会被删除!)
[root@localhost ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): p #打印磁盘信息
Disk /dev/sda: 83886080 sectors, 40.0 GiB
....(省略信息)....
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 60708863 27.9 GiB 8E00
Command (? for help): n
Partition number (4-128, default 4): 4
First sector (34-83886046, default = 60708864) or {+-}size{KMGTP}: 60708864 #开始扇区
Last sector (60708864-83886046, default = 83886046) or {+-}size{KMGTP}: +1G #分区大小
# 我们不需要自己去计算扇区号码,透过 +容量 的这个方式,
# 就可以让 gdisk 主动去帮你算出最接近你需要的容量的扇区号码!
Current 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
...(省略信息)....
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 60708863 27.9 GiB 8E00
4 60708864 62806015 1024.0 MiB 8300 Linux filesystem
#后面增加分区信息相同略...
Command (? for help): p
....(信息省略)....
Partitions will be aligned on 2048-sector boundaries
Total free space is 17960893 sectors (8.6 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 60708863 27.9 GiB 8E00
4 60708864 62806015 1024.0 MiB 8300 Linux filesystem
5 62806016 64903167 1024.0 MiB 0700 Microsoft basic data
6 64903168 65927167 500.0 MiB 8200 Linux swap
Command (? for help): w #写入分区信息
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y #确认分区
OK; writing new GUID partition table (GPT) to /dev/sda.
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.
# gdisk 会先警告你可能的问题,我们确定分区是对的,这时才按下 y !不过怎么还有警告?
# 这是因为这颗磁盘目前正在使用当中,因此系统无法立即加载新的分区表~
#查看分区表
[root@localhost ~]# cat /proc/partitions
major minor #blocks name
11 0 1048575 sr0
11 1 1048575 sr1
8 0 41943040 sda
8 1 2048 sda1
8 2 1048576 sda2
8 3 29302784 sda3
253 0 10485760 dm-0
253 1 1048576 dm-1
253 2 5242880 dm-2
#可以发现,并没有 sda4,sda5,sda6 因为核心还没有更新!
partprobe(更新核心分区表信息)
[root@localhost ~]# partprobe [-s] # 你可以不要加 -s !那么屏幕不会出现讯息!
[root@localhost ~]# partprobe -s # 不过还是建议加上 -s 比较清晰!
/dev/sda: gpt partitions 1 2 3 4 5 6
#更新后lsblk分区表信息
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
|-sda1 8:1 0 2M 0 part
|-sda2 8:2 0 1G 0 part /boot
|-sda3 8:3 0 28G 0 part
| |-centos-root 253:0 0 10G 0 lvm /
| |-centos-swap 253:1 0 1G 0 lvm [SWAP]
| `-centos-home 253:2 0 5G 0 lvm /home
|-sda4 8:4 0 1G 0 part
|-sda5 8:5 0 1G 0 part
`-sda6 8:6 0 500M 0 part
sr0 11:0 1 1024M 0 rom
sr1 11:1 1 1024M 0 rom
gdisk删除分区
Command (? for help): d
Partition number (1-6): 6
Command (? for help): w
Do you want to proceed? (Y/N): y
#更新分区表信息
- fdisk 使用方法和gdisk同样,略...
3.7.5 磁盘格式化
- XFS文件系统mkfs.xfs
[root@study ~]# mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] \ [-r parms] 装置名称
选项与参数:
关于单位:底下只要谈到『数值』时,没有加单位则为 bytes 值,可以用 k,m,g,t,p (小写)等来解释
比较特殊的是 s 这个单位,它指的是 sector 的『个数』喔!
-b :后面接的是 block 容量,可由 512 到 64k,不过最大容量限制为 Linux 的 4k 喔!
-d :后面接的是重要的 data section 的相关参数值,主要的值有:
agcount=数值 :设定需要几个储存群组的意思(AG),通常与 CPU 有关
agsize=数值 :每个 AG 设定为多少容量的意思,通常 agcount/agsize 只选一个设定即可
file :指的是『格式化的装置是个文件而不是个装置』的意思!(例如虚拟磁盘)
size=数值 :data section 的容量,亦即你可以不将全部的装置容量用完的意思
su=数值 :当有 RAID 时,那个 stripe 数值的意思,与底下的 sw 搭配使用
sw=数值 :当有 RAID 时,那个 stripe 数值的意思,与底下的 sw 搭配使用
sunit=数值 :与 su 相当,不过单位使用的是『几个 sector(512bytes 大小)』的意思
swidth=数值 :就是 su*sw 的数值,但是以『几个 sector(512bytes 大小)』来设定
-f :如果装置内已经有文件系统,则需要使用这个 -f 来强制格式化才行!
size=数值 :最小是 256bytes 最大是 2k,一般保留 256 就足够使用了!
internal=[0|1]:log 装置是否为内建?预设为 1 内建,如果要用外部装置,使用底下设定
logdev=device :log 装置为后面接的那个装置上头的意思,需设定 internal=0 才可!
size=数值 :指定这块登录区的容量,通常最小得要有 512 个 block,大约 2M 以上才行!
-L :后面接这个文件系统的标头名称 Label name 的意思!
-r :指定 realtime section 的相关设定值,常见的有:
extsize=数值 :就是那个重要的 extent 数值,一般不须设定,但有 RAID 时,
最好设定与 swidth 的数值相同较佳!最小为 4K 最大为 1G 。
范例:将前面分区出来的 /dev/sda4 格式化为 xfs 文件系统
[root@localhost ~]# mkfs.xfs /dev/sda4
meta-data=/dev/sda4 isize=256 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 很快格是化完毕!都用默认值!较重要的是 inode 与 block 的数值
[root@localhost ~]# blkid /dev/sda4
/dev/sda4: UUID="beac490c-cd38-4aba-82c2-2d57e49f61a1" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="62421100-eb94-43c9-9fdf-40a74e7de16b"
- EXT4文件系统mkfs.ext4
[root@localhost ~]# mkfs.ext4 [-b size] [-L label] 装置名称 选项与参数:
-b :设定 block 的大小,有 1K, 2K, 4K 的容量,
-L :后面接这个装置的标头名称。
[root@localhost ~]#mkfs.ext4 /dev/sda5
3.7.6文件系统挂在与卸载
- 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
- 单一目录不应该重复挂载多个文件系统;
- 要作为挂载点的目录,理论上应该都是空目录才是。
mount挂在文件
[root@study ~]# mount -a
[root@study ~]# mount [-l]
[root@study ~]# mount [-t 文件系统] LABEL='' 挂载点
[root@study ~]# mount [-t 文件系统] UUID='' 挂载点 # 建议用这种方式挂载!
[root@study ~]# mount [-t 文件系统] 装置文件名 挂载点
选项与参数:
-a :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来
-l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称!
-t :可以加上文件系统种类来指定欲挂载的类型。
常见的 Linux 支持类型有:xfs, ext3, ext4,reiserfs, vfat, iso9660(光盘格式), nfs, cifs, smbfs (后三种为网络文件系统类型)
-n :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序的运作。
但在某些情况下(例如单人维护模式)为了避免问题会刻意不写入。此时就得要使用 -n 选项。
-o :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等:
async, sync: 此文件系统是否使用同步写入 (sync) 或异步 (async) 的内存机制,请参考文件系统运作方式。预设为 async。
atime,noatime: 是否修订文件的读取时间(atime)。为了效能,某些时刻可使用 noatime
ro, rw: 挂载文件系统成为只读(ro) 或可擦写(rw)
auto, noauto: 允许此 filesystem 被以 mount -a 自动挂载(auto)
dev, nodev: 是否允许此 filesystem 上,可建立装置文件? dev 为可允许
suid, nosuid: 是否允许此 filesystem 含有 suid/sgid 的文件格式?
exec, noexec: 是否允许此 filesystem 上拥有可执行 binary 文件?
user, nouser: 是否允许此 filesystem 让任何使用者执行 mount ?一般来说,
mount 仅有 root 可以进行,但下达 user 参数,则可让一般 user 也能够对此 partition 进行 mount
defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async
remount: 重新挂载,这在系统出错,或重新更新参数时,很有用!
范例:找出 /dev/sda4 的 UUID 后,用该 UUID 来挂载文件系统到 /data/xfs 内
[root@localhost ~]# mount UUID="beac490c-cd38-4aba-82c2-2d57e49f61a1" /data/xfs
[root@localhost ~]# df -h /data/xfs/
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 1014M 33M 982M 4% /data/xfs
#挂载光盘到/data/cdrom目录下
[root@localhost ~]# blkid /dev/sr1
/dev/sr1: UUID="2015-12-09-23-14-10-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
[root@localhost ~]# mount /dev/sr1 /data/cdrom/
mount: /dev/sr1 is write-protected, mounting read-only
[root@localhost ~]# df /data/cdrom/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sr1 4227724 4227724 0 100% /data/cdrom
- 光驱一挂载之后就无法退出光盘片了!除非你将他卸除才能够退出!
卸载挂载磁盘
umount /dev/sda4
umount /data/xfs
umount /dev/sr1 /data/cdrom
3.7.7文件系统参数修订
- linux磁盘 /dev/sda 的相关装置代码如下:
[root@localhost data]# ll /dev/sda*
brw-rw----. 1 root disk 8, 0 May 28 21:00 /dev/sda
brw-rw----. 1 root disk 8, 1 May 28 21:00 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 28 21:00 /dev/sda2
brw-rw----. 1 root disk 8, 3 May 28 21:00 /dev/sda3
brw-rw----. 1 root disk 8, 4 May 28 21:00 /dev/sda4
brw-rw----. 1 root disk 8, 5 May 28 21:00 /dev/sda5
- 常见装置代码如下:
磁盘文件名 | Major | Minor |
---|---|---|
/dev/sda | 8 | 0-15 |
/dev/sdb | 8 | 16-31 |
/dev/loop0 | 7 | 0 |
/dev/loop0 | 7 | 1 |
[root@study ~]# mknod 装置文件名 [bcp] [Major] [Minor] 选项与参数:
装置种类:
b :设定装置名称成为一个周边储存设备文件,例如磁盘等;
c :设定装置名称成为一个周边输入设备文件,例如鼠标/键盘等;
p :设定装置名称成为一个 FIFO 文件; Major :主要装置代码;
Minor :次要装置代码;
范例:由上述的介绍我们知道 /dev/sda10 装置代码 8, 10,请建立并查阅此装置
[root@localhost data]# mknod /dev/sda10 b 8 10 #修改sda装置码
[root@localhost data]# ll /dev/sda10
brw-r--r--. 1 root root 8, 10 May 28 21:15 /dev/sda10
- xfs_admin修改XFS文件系统的UUID与Label name
如果你当初格式化的时候忘记加上标头名称,后来想要再次加入时,不需要重复格式化!直接使用这 个 xfs_admin 即可。 这个指令直接拿来处理 LABEL name 以及 UUID 即可.
[root@study ~]# xfs_admin [-lu] [-L label] [-U uuid] 装置文件名 选项与参数:
-l :列出这个装置的 label name
-u :列出这个装置的 UUID
-L :设定这个装置的 Label name
-U :设定这个装置的 UUID 喔!
范例:设定 /dev/sda4 的 label name 为 xiaoqi_xfs,并测试挂载
[root@localhost ~]# xfs_admin -L xiaoqi_xfs /dev/sda4
writing all SBs
new label = "xiaoqi_xfs"
[root@localhost ~]# xfs_admin -l /dev/sda4
label = "xiaoqi_xfs"
[root@localhost ~]# mount LABEL=xiaoqi_xfs /data/xfs/
范例:利用 uuidgen 产生新 UUID 来设定 /dev/sda4,并测试挂载
[root@localhost ~]# uuidgen #生成uuid
d82b8327-c344-429a-9147-2cefe62379a7
[root@localhost ~]# xfs_admin -u /dev/sda4
UUID = beac490c-cd38-4aba-82c2-2d57e49f61a1
[root@localhost ~]# xfs_admin -U d82b8327-c344-429a-9147-2cefe62379a7 /dev/sda4 #替换现有的uuid
Clearing log and setting UUID
writing all SBs
new UUID = d82b8327-c344-429a-9147-2cefe62379a7
[root@localhost ~]# blkid /dev/sda4
/dev/sda4: LABEL="xiaoqi_xfs" UUID="d82b8327-c344-429a-9147-2cefe62379a7" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="62421100-eb94-43c9-9fdf-40a74e7de16b"
#挂在分区
[root@localhost ~]# mount UUID="d82b8327-c344-429a-9147-2cefe62379a7" /data/xfs
[root@localhost ~]# df /data/xfs/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 1038336 32928 1005408 4% /data/xfs
*tune2fs修改ext4的label name与UUID
[root@study ~]# tune2fs [-l] [-L Label] [-U uuid] 装置文件名 选项与参数:
-l :类似 dumpe2fs -h 的功能~将 superblock 内的数据读出来~ -L :修改 LABEL name
-U :修改 UUID 啰!
#查看ext4 volume name是否设定
[root@localhost ~]# dumpe2fs -h /dev/sda5 | grep name
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: <none> #none表示没有设定
范例:列出 /dev/vda5 的 label name 之后,将它改成 xiaoqi_ext4
[root@localhost ~]# tune2fs -L xiaoqi_ext4 /dev/sda5
tune2fs 1.42.9 (28-Dec-2013)
[root@localhost ~]# dumpe2fs -h /dev/sda5 | grep name
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: xiaoqi_ext4
#挂在分区
[root@localhost ~]# mount LABEL=xiaoqi_ext4 /data/ext4
[root@localhost ~]# df /data/ext4/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda5 999320 2564 927944 1% /data/ext4
3.7.8开机自动挂载
/etc/fstab
/etc/mtab
- 根目录 / 是必须挂载的,而且一定要先于其它 mount point 被挂载进来。
- 其它 mount point 必须为已建立的目录,可任意指定,但一定要遵守必须的系统目录架构原则 (FHS)
- 所有 mount point 在同一时间之内,只能挂载一次。
- 所有 partition 在同一时间之内,只能挂载一次。
- 如若进行卸除,您必须先将工作目录移到 mount point(及其子目录) 之外。
#查看/etc/fstab挂载记录
[root@localhost ~]# cat /etc/fstab
#Dervice Mount point filesystem parameters dump fsck
/dev/mapper/centos-root / xfs defaults 0 0
UUID=ca9503b5-43d6-445a-9ac6-a5e0b9da808d /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
其实 /etc/fstab (filesystem table) 就是将我们利用 mount 指令进行挂载时, 将所有的选项与参数写入 到这个文件中就是了。
除此之外, /etc/fstab 还加入了 dump 这个备份用指令的支持! 与开机时是 否进行文件系统检验 fsck 等指令有关。
[装置/UUID 等] [挂载点] [文件系统] [文件系统参数] [dump] [fsck]
第一栏:磁盘装置文件名/UUID/LABEL name:
- 这个字段可以填写的数据主要有三个项目:
文件系统或磁盘的装置文件名,如 /dev/vda2 等
文件系统的 UUID 名称,如 UUID=xxx
文件系统的 LABEL 名称,例如 LABEL=xxx
- 第二栏:挂载点 (mount point):
就是挂载点啊!挂载点是什么?一定是目录啊!
- 第三栏:磁盘分区槽的文件系统:
在手动挂载时可以让系统自动测试挂载,但在这个文件当中我们必须要手动写入文件系统才行! 包括 xfs, ext4, vfat, reiserfs, nfs 等等。
- 第四栏:文件系统参数:
mount 这个指令中特殊的文件系统参数
参数 | 内容意义 |
---|---|
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 来取消这个功能!同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。 基本上,预设情况使用 defaults 设定即可! |
- 第五栏:能否被 dump 备份指令作用:
dump 是一个用来做为备份的指令,不过现在有太多的备份方案了,所以这个项目可以不要理会啦!直接输入 0 就好了!
- 第六栏:是否以 fsck 检验扇区:
早期开机的流程中,会有一段时间去检验本机的文件系统,看看文件系统是否完整 (clean),所以直接填 0 就好了.
3.7.9dd(建立大型文件)
[root@study ~]# dd if=/dev/zero of=/srv/loopdev bs=1 Mcount=512
512+0 records in <==读入 512 笔资料
512+0 records out <==输出 512 笔数据
536870912 bytes (537 MB) copied, 12.3484 seconds, 43.5 MB/s
这个指令的简单意义如下:
if :是 input file ,输入文件。那个 /dev/zero 是会一直输出 0 的装置!
of :是 output file ,将一堆零写入到后面接的文件中。
bs :是每个 block 大小,就像文件系统那样的 block 意义;
count :则是总共几个 bs 的意思。所以 bs*count 就是这个文件的容量了!
3.8内存置换空间(swap)
- 设定一个 swap partition
- 建立一个虚拟内存的文件
使用实体分区槽建置 swap
- 分区:先使用 gdisk 在你的磁盘中分区出一个分区槽给系统作为 swap 。由于 Linux 的 gdisk 预设会将分 区槽的 ID 设定为 Linux 的文件系统,所以你可能还得要设定一下 system ID 就是了。
- 格式化:利用建立 swap 格式的『mkswap 装置文件名』就能够格式化该分区槽成为 swap 格式啰
- 使用:最后将该 swap 装置启动,方法为:『swapon 装置文件名』。
- 观察:最终透过 free 与 swapon -s 这个指令来观察一下内存的用量吧!
#建立swap空间
Command (? for help): n
Partition number (6-128, default 6): 6
First sector (34-83886046, default = 64903168) or {+-}size{KMGTP}: 64903168
Last sector (64903168-83886046, default = 83886046) or {+-}size{KMGTP}: +512mb
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
...(省略信息)....
Command (? for help): p
6 64903168 65951743 512.0 MiB 8200 Linux swap
Command (? for help): w
...(省略信息)....
Do you want to proceed? (Y/N): y
#开始建置swap格式
[root@localhost ~]# mkswap /dev/sda6
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=34a1be45-2e1c-491c-bfe5-78a196656ea7
#列出目前使用的 swap 装置
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 0 -1
/dev/sda6 partition 524284 0 -2
3.9parted分区工具
[root@study ~]# parted [装置] [指令 [参数]] 选项与参数:
指令功能:
新增分区:mkpart [primary|logical|extended] [ext4|vfat|xfs] 开始 结束
显示分区:print
删除分区:rm [partition]
#范例一:以 parted 列出目前本机的分区表资料
[root@localhost /]# parted /dev/sda print
Model: ATA VBOX HARDDISK (scsi) <==磁盘接口与型号
Disk /dev/sda: 42.9GB <==磁盘文件名与容量
Sector size (logical/physical): 512B/512B <==每个扇区的大小
Partition Table: gpt <==是 GPT 还是 MBR 分区
Disk Flags: pmbr_boot
Number Start End Size File system Name Flags
1 1049kB 3146kB 2097kB bios_grub
2 3146kB 1077MB 1074MB xfs
3 1077MB 31.1GB 30.0GB lvm
4 31.1GB 32.2GB 1074MB xfs Linux filesystem
5 32.2GB 33.2GB 1074MB ext4 Microsoft basic data
6 33.2GB 33.8GB 537MB linux-swap(v1) Linux swap
[1] [2] [3] [4] [5] [6] [7]
上面参数解释
- Number:这个就是分区槽的号码啦!举例来说,1 号代表的是 /dev/vda1 的意思;
- Start:分区的起始位置在这颗磁盘的多少 MB 处?有趣吧!他以容量作为单位喔!
- End:此分区的结束位置在这颗磁盘的多少 MB 处?
- Size:由上述两者的分析,得到这个分区槽有多少容量;
- File system:分析可能的文件系统类型为何的意思!
- Name:就如同 gdisk 的 System ID 之意。
- parted删除分区
#删除分区
[root@localhost /]# parted /dev/sda rm 4
Information: You may need to update /etc/fstab.
#刷新分区数据
[root@localhost /]# partprobe -s
版权属于:龙之介大人
本文链接:https://i7dom.cn/138/2019/28/linux-file-hyperdisk.html
本站所有原创文章采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 您可以自由的转载和修改,但请务必注明文章来源和作者署名并说明文章非原创且不可用于商业目的。