@WillireamAngel
2017-11-20T12:53:01.000000Z
字数 13617
阅读 1919
Linux
磁碟组成与分割的复习
磁盘组成:
档案系统特性:索引式档案系统
磁碟重组(碎片整理)原因:
档案写入的block太过于离散了,此时档案读取的效能将会变的很差所致,此时可将同一个档案所属的blocks汇整在一起,资料的读取会比较容易。
data block(资料区块)
Ext2文件系统支持的block大小有1K、2K、4K,限制如下:
Block 大小 | 1KB | 2KB | 4KB |
---|---|---|---|
最大单一档案限制 | 16 GB | 256GB | 2TB |
最大档案系统总容量 | 2TB | 8TB | 16TB |
Ext2文件系统的基本限制:
- 原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);
- 每个block 内最多只能够放置一个档案的资料;
- 承上,如果档案大于block 的大小,则一个档案会占用多个block 数量;
- 承上,若档案小于block ,则该block 的剩余容量就不能够再被使用了(磁碟空间会浪费)。
Inode结构示意图:
Superblock (超级区块)
主要信息:
Filesystem Description (档案系统描述说明)
inode bitmap (inode 对照表)
dumpe2fs: 查询Ext 家族superblock 资讯的指令:
[root@study ~]# dumpe2fs [-bh]装置档名
参数:
-b :列出保留为坏轨的部分(一般用不到吧!?)
-h :仅列出superblock 的资料,不会列出其他的区段内容!
与目录树的关系
EXT2/EXT3 档案的存取与日志式档案系统的功能
日志式文件系统步骤:
Linux 档案系统的运作
Linux系统上面档案系统与内存的关系:
- 系统会将常用的档案资料放置到主记忆体的缓冲区,以加速档案系统的读/写;
- 承上,因此Linux的实体记忆体最后都会被用光!这是正常的情况!可加速系统效能;
- 你可以手动使用sync 来强迫记忆体中设定为Dirty 的档案回写到磁碟中;
- 若正常关机时,关机指令会主动呼叫sync 来将记忆体的资料回写入磁碟内;
- 但若不正常关机(如跳电、当机或其他不明原因),由于资料尚未回写到磁碟内, 因此重新开机后可能会花很多时间在进行磁碟检验,甚至可能导致档案系统的损毁(非磁碟损毁)。
挂载点的意义(mount point)
将档案系统与目录树结合的动作我们称为挂载。挂载点一定是目录,该目录为进入该档案系统的入口。
其他Linux 支援的档案系统与VFS
centos支持文件系统格式:
[willireamangel@localhost ~]$ cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev tmpfs
nodev devtmpfs
nodev debugfs
nodev securityfs
nodev sockfs
nodev pipefs
nodev anon_inodefs
nodev configfs
nodev devpts
nodev hugetlbfs
nodev autofs
nodev pstore
nodev mqueue
nodev selinuxfs
xfs
nodev rpc_pipefs
nodev nfsd
nodev vmhgfs
fuseblk
nodev fuse
nodev fusectl
VFS文件系统:
[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 的数量来显示
[root@study ~]# du [-ahskm]档案或目录名称
选项与参数:
-a :列出所有的档案与目录容量,因为预设仅统计目录底下的档案量而已。
-h :以人们较易读的容量格式(G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与-s 有点差别。
-k :以KBytes 列出容量显示;
-m :以MBytes 列出容量显示;
实体连结的档案读取示意图:
Hard link限制:
- 不能跨Filesystem;
- 不能link 目录。
2.2 Symbolic Link (符号连结,亦即是捷径)
连结档的重要内容是写上目标档案的档名,而连接档使用的是不同的inode编号
符号连结的档案读取示意图:
符号连接类似于Windows的快捷方式。
建立连接档:
[root@study ~]# ln [-sf]来源档目标档
选项与参数:
-s :如果不加任何参数就进行连结,那就是hard link,至于-s就是symbolic link
-f :如果目标档存在时,就主动的将目标档直接移除后再建立。
du -sb
是计算整个/tmp底下有多少bytes的容量
符号连接的源文件丢失的话,符号连接结果然无法开启。如果符号连结的目标档案不存在,档名的部分就会有特殊的颜色显示。
2.3 关于目录的link 数量
当我们建立一个新的目录时,新的目录的link数为2 ,而上层目录的link数则会增加1。
[willireamangel@localhost tmp]$ ls -ld /tmp
drwxrwxrwt. 35 root root 4096 11月 18 16:23 /tmp
[willireamangel@localhost tmp]$ mkdir /tmp/testing2
[willireamangel@localhost tmp]$ ls -ld /tmp
drwxrwxrwt. 36 root root 4096 11月 18 16:24 /tmp
[willireamangel@localhost tmp]$ ls -ld /tmp/testing2
drwxrwxr-x. 2 willireamangel willireamangel 6 11月 18 16:24 /tmp/testing2
新加硬盘的基本操作:
- 磁盘分区
- 分区格式化形成filesystem
- filesystem检验
- 创建挂载点,进行挂载
[root@study ~]# lsblk [-dfimpt] [device]
选项与参数:
-d :仅列出磁碟本身,并不会列出该磁碟的分割资料
-f :同时列出该磁碟内的档案系统名称
-i :使用ASCII 的线段输出,不要使用复杂的编码(再某些环境下很有用)
-m :同时输出该装置在/dev 底下的权限资料(rwx 的资料)
-p :列出该装置的完整档名!而不是仅列出最后的名字而已。
-t :列出该磁碟装置的详细资料,包括磁碟伫列机制、预读写的资料量大小等
主要显示内容:
NAME:装置的档名,省略/dev等前导目录
MAJ:MIN:核心认识装置,主要:次要装置代码
RM:可卸载装置(removable device)判断,如光碟、USB 磁碟等等
SIZE:容量
RO:唯读装置判定
TYPE:磁碟(disk)、分割槽(partition) 和唯读记忆体(rom) 等输出
MOUTPOINT:挂载点
1.2 blkid 列出装置的UUID 等参数
UUID 是全域单一识别码(universally unique identifier),Linux 会将系统内所有的装置都给予一个独一无二的识别码, 这个识别码就可以拿来作为挂载或者是使用这个装置/档案系统之用。
[root@localhost tmp]# blkid
/dev/sda2: UUID="206dc103-8f93-4598-8f11-3d52f54c696a" TYPE="xfs"
/dev/sda3: UUID="zqHlik-2Jwu-yGFO-bku3-c171-bENk-lMIqjo" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="99aaba79-5b97-482a-98d3-94af27a2d074" TYPE="xfs"
/dev/mapper/centos-swap: UUID="794c907f-5ffc-4f2b-b1e1-ecc63250341f" TYPE="swap"
/dev/mapper/centos-home: UUID="37938baf-cb8f-4f24-b7ca-99bc0ba66490" TYPE="xfs"
1.3 parted 列出磁碟的分割表类型与分割资讯
代码实现:
parted device_name print
[root@study ~]# gdisk装置名称
使用的『装置档名』不加数字,因为partition是针对『整个磁碟装置』而不是某个partition。
基本选项:
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)
q与w选项:
离开gdisk时按下『q』,所有的动作『都不会生效!』;相反的,按下『w』就是动作生效的意思。
2.2 用gdisk 新增分割槽
档案系统ID:
Linux 大概都是8200/8300/8e00 等三种格式, Windows 几乎都用0700,如果忘记这些数字,可以在gdisk 内按下:『 L 』来显示。
实际上进行分区后由于系统保护会需要利用partprobe
操作来更新分区表。
2.3 partprobe 更新Linux 核心的分割表资讯
[root@localhost tmp]# partprobe -s #默认添加s,清楚显示参数
/dev/sda: gpt partitions 1 2 3 4
[root@localhost tmp]# lsblk /dev/sda
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 30G 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
经过partprobe
可实现核心的更新。
2.4 用gdisk 删除一个分割槽
不要处理正在使用中的磁盘分区,否则会出现异常。
2.5 fdisk
操作与gdisk基本相同
[root@localhost tmp]# mkfs.xfs /dev/sda4
meta-data=/dev/sda4 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
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
[root@localhost tmp]# blkid /dev/sda4
/dev/sda4: UUID="3fd01c38-486c-41ef-9b1d-436abfbb7a3d" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="955a6df9-64cb-458f-8ea1-0aa840e057e5"
xfs档案系统查看CPU:
grep 'processor' /proc/cpuinfo
3.2 XFS 档案系统for RAID 效能优化(Optional)
RAID:将文件细分为小型分割区块(stripe) ,众多区块存储到磁盘阵列中,一个档案是同时写入到多个磁盘,并且会保留数个(与磁碟阵列的规划有关) 备份磁碟(parity disk), 以及可能会保留一个以上的备用磁碟(spare disk)。
3.3 EXT4 档案系统mkfs.ext4
[root@study ~]# mkfs.ext4 [-b size] [-L label]装置名称
选项与参数:
-b :设定block 的大小,有1K, 2K, 4K 的容量,
-L :后面接这个装置的标头名称。
3.4 其他档案系统mkfs
查看mkfs系统格式化支持:mkfs[TAB][TAB]
[root@localhost tmp]# mkfs
mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.fat mkfs.minix mkfs.msdos mkfs.vfat mkfs.xfs
[root@study ~]# xfs_repair [-fnd]装置名称
选项与参数:
-f :后面的装置其实是个档案而不是实体装置
-n :单纯检查并不修改档案系统的任何资料(检查而已)
-d :通常用在单人维护模式底下,针对根目录(/) 进行检查与修复的动作!很危险!不要随便使用
修复档案系统是个大量操作的过程,需要卸载文件系统,对于无法卸载的如根目录异常,则需要进入单人维护或救援模式,加上-d
参数强行修复重启。
4.2 fsck.ext4 处理EXT4 档案系统
[root@study ~]# 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权限且文件系统存在问题时才使用修复指令,否则在正常状况下使用此指令,可能会造成对系统的危害。执行xfs_repair
/fsck.ext4
时,被检查的partition务必在卸载的状态。
[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: 重新挂载,这在系统出错,或重新更新参数时,很有用!
挂载文件记录:
/etc/filesystems:系统指定的测试挂载档案系统类型的优先顺序;
/proc/filesystems:Linux系统已经载入的档案系统类型。
5.1 挂载xfs/ext4/vfat 等档案系统
5.2 挂载CD 或DVD 光碟
光碟机一挂载之后就无法退出光碟片了,除非你将他卸载才能够退出。
5.3 挂载vfat 中文随身碟(USB磁碟)
5.4 重新挂载根目录与挂载不特定目录
将/重新挂载,并加入参数为rw与auto:
[root@study ~]# mount -o remount,rw,auto /
目录更换挂载:mount --bind
5.5 umount (将装置档案卸载)
[root@study ~]# umount [-fn]装置档名或挂载点
选项与参数:
-f :强制卸载!可用在类似网路档案系统(NFS) 无法读取到的情况下;
-l :立刻卸载档案系统,比-f 还强!
-n :不更新/etc/mtab 情况下卸载。
mount显示所有的挂载文件:
[willireamangel@localhost ~]$ mount
磁碟档名 | Major | Minor |
---|---|---|
/dev/sda | 8 | 0-15 |
/dev/sdb | 8 | 16-31 |
/dev/loop0 | 7 | 0 |
/dev/loop1 | 7 | 1 |
[root@study ~]# mknod装置档名[bcp] [Major] [Minor]
选项与参数:
装置种类:
b :设定装置名称成为一个周边储存设备档案,例如磁碟等;
c :设定装置名称成为一个周边输入设备档案,例如滑鼠/键盘等;
p :设定装置名称成为一个FIFO 档案;
Major :主要装置代码;
Minor :次要装置代码;
6.2 xfs_admin 修改XFS 档案系统的UUID 与Label name
[root@study ~]# xfs_admin [-lu] [-L label] [-U uuid]装置档名
选项与参数:
-l :列出这个装置的label name
-u :列出这个装置的UUID
-L :设定这个装置的Label name
-U :设定这个装置的UUID
使用UUID而不使用/dev/sda这种命名方式在于,此磁盘在所有的Linux文件系统中,文件档名可能不一样。
6.3 tune2fs 修改ext4 的label name 与UUID
[root@study ~]# tune2fs [-l] [-L Label] [-U uuid]装置档名
选项与参数:
-l :类似dumpe2fs -h 的功能~将superblock 内的资料读出来~
-L :修改LABEL name
-U :修改UUID
四、设定开机挂载
系统挂载限制:
根目录/ 是必须挂载的﹐而且一定要先于其它mount point 被挂载进来。
其它mount point 必须为已建立的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则(FHS)
所有mount point 在同一时间之内﹐只能挂载一次。
所有partition 在同一时间之内﹐只能挂载一次。
如若进行卸载﹐您必须先将工作目录移到mount point(及其子目录) 之外。
1. 开机挂载/etc/fstab 及/etc/mtab
系统挂载查看:cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Nov 4 08:37:55 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
[装置/UUID等] [挂载点] [档案系统] [档案系统参数] [dump] [fsck]
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=206dc103-8f93-4598-8f11-3d52f54c696a /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
系统挂载栏位含义:
[装置/UUID等] [挂载点] [档案系统] [档案系统参数] [dump] [fsck]
[装置/UUID等]:
- 档案系统或磁碟的装置档名,如/dev/vda2 等
- 档案系统的UUID 名称,如UUID=xxx
- 档案系统的LABEL 名称,例如LABEL=xxx
查询UUID命令:blkid
orxfs_admin -l 装置档名
[挂载点]:目录
[档案系统]:手动挂载需要写入档案系统
[档案系统参数]:
参数 | 内容意义 |
---|---|
async/sync 非同步/同步 | 预设为async效能较佳 |
auto/noauto 自动/非自动 | 当下达mount -a 时,此档案系统是否会被主动测试挂载预设为auto |
rw/ro 可读写/只读 | 设置只读,文件不可随意变更,即使设置w权限也不能操作 |
exec/noexec 可执行/不可执行 | 纯粹用来储存资料的目录,可以设定为noexec比较安全。不过,这个参数也不能随便使用,因为你不知道该目录下是否预设会有执行档.建议noexec最多仅设定于你自订或分享的一般资料目录 |
user/nouser 允许/不允许使用者挂载 | 应该设定为nouser,防止一般用户进行更改 |
suid/nosuid 具有/不具有suid权限 | 如果是非执行档放置目录,也可以设定为nosuid 来取消这个功能 |
defaults | 同时具有rw, suid, dev, exec, auto, nouser, async等参数。预设情况使用defaults设定 |
[dump]:备份指令,因现有备份策略较多,可直接输入0
[fsck]:不适用xfs系统,可直接填0
显示挂接点:df
[willireamangel@localhost ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-root 10475520 4940492 5535028 48% /
devtmpfs 1916872 0 1916872 0% /dev
tmpfs 1932640 0 1932640 0% /dev/shm
tmpfs 1932640 9236 1923404 1% /run
tmpfs 1932640 0 1932640 0% /sys/fs/cgroup
/dev/sda2 1038336 239760 798576 24% /boot
/dev/mapper/centos-home 5232640 1972960 3259680 38% /home
tmpfs 386528 12 386516 1% /run/user/42
tmpfs 386528 24 386504 1% /run/user/1000
单人维护模式更新/etc/fstab
和/etc/matbe
[root@study ~]# mount -n -o remount,rw /
dd if=[inputfile] of=[outputfile] bs=[block大小] count=[bs数量]
挂载:
mount -o loop UUID="xxxx" /mnt
五、记忆体置换空间(swap)之建置
swap:虚拟内存
- 建立swap partition
- 建立虚拟记忆体的档案
gdisk
)-格式化(mkswap
)-使用(swapon
)-观察(free
与swapon -s
)dd
,ll -h
,mkswap
,swapon
,swapon -s
swap -off
关掉 swap file,设置自启动:swapon -s
[root@localhost willireamangel]# ll -sh
total 28K
0 drwxr-xr-x. 2 willireamangel willireamangel 6 11月 13 10:00 Desktop
0 drwxr-xr-x. 2 willireamangel willireamangel 6 11月 13 10:00 Documents
0 drwxr-xr-x. 2 willireamangel willireamangel 6 11月 13 10:00 Downloads
0 drwxr-xr-x. 2 willireamangel willireamangel 6 11月 13 10:00 Music
28K -rw-rw-r--. 1 willireamangel willireamangel 26K 4月 27 2017 mysql57-community-release-el7-11.noarch.rpm
0 drwxr-xr-x. 2 willireamangel willireamangel 6 11月 13 10:00 Pictures
0 drwxr-xr-x. 2 willireamangel willireamangel 6 11月 13 10:00 Public
0 drwxr-xr-x. 2 willireamangel willireamangel 6 11月 13 10:00 Templates
0 drwxr-xr-x. 2 willireamangel willireamangel 6 11月 13 10:00 Videos
0 drwxr-xr-x. 2 willireamangel willireamangel 6 11月 13 10:05 桌面
[root@study ~]# parted [装置] [指令[参数]]
选项与参数:
指令功能:
新增分割:mkpart [primary|logical|extended] [ext4|vfat|xfs] 开始结束
显示分割:print
删除分割:rm [partition]
对于脚本操作,可以使用parted操作