Linux磁盘管理
df命令
df 查看已挂载磁盘的总容量、使用容量、剩余容量等。可以不加任何参数,默认按 k 为单位显示。
[root[@localhost](https://my.oschina.net/u/570656) ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16558080 1004476 15553604 7% /
devtmpfs 922464 0 922464 0% /dev
tmpfs 933524 0 933524 0% /dev/shm
tmpfs 933524 8756 924768 1% /run
tmpfs 933524 0 933524 0% /sys/fs/cgroup
/dev/sda1 201380 123264 78116 62% /boot
tmpfs 186708 0 186708 0% /run/user/0
以上常用关注可用和已用%./dev, /dev/shm为内存分区,默认大小为内存的1/2;tmpfs为临时文件系统.
1.df -h命令:表示使用合适的单位显示.
[root[@localhost](https://my.oschina.net/u/570656) ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16G 981M 15G 7% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 197M 121M 77M 62% /boot
tmpfs 183M 0 183M 0% /run/user/0
2.df -i命令:表示查看inodes的使用情况.如果inodes已用100%,即使磁盘有空间,也会提示已满.
[root[@localhost](https://my.oschina.net/u/570656) ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root 8284160 26644 8257516 1% /
devtmpfs 230616 392 230224 1% /dev
tmpfs 233381 1 233380 1% /dev/shm
tmpfs 233381 480 232901 1% /run
tmpfs 233381 16 233365 1% /sys/fs/cgroup
/dev/sda1 102400 328 102072 1% /boot
tmpfs 233381 1 233380 1% /run/user/0
3.df -m:表示以MB为单位显示.
4.free命令查看swap分区
[root[@localhost](https://my.oschina.net/u/570656) ~]# free
total used free shared buff/cache available
Mem: 1867048 121720 1590692 8756 154636 1576292
Swap: 4194300 0 4194300
du命令
du 用来查看某个目录或文件所占空间大小。语法 : du [-abckmsh] [文件或者目录名]
-a全部文件与目录大小都列出来。如果不加任何选项和参数只列出目录(包含子目录)大小.不指定单位,默认显示单位为 K。
-b 列出的值以 bytes 为单位输出。
-k 以 KB 为单位输出,和默认不加任何选项的输出值是一样的。
-m 以 MB 为单位输出。
-h 系统自动调节单位,例如文件太小可能就几 K,那么就以 K 为单位显示,如果大到几 G,则就以 G为单位显示。
-c 选项为最后加总
-s 只列出总和,这个使用的最多。
常用:du -sh 文件或目录名
[root[@localhost](https://my.oschina.net/u/570656) ~]# du -sh /etc/passwd
4.0K /etc/passwd
[root@localhost ~]# ls -lh /etc/passwd
-rw-r--r-- 1 root root 887 5月 20 23:45 /etc/passwd
[root@localhost ~]# du /etc/passwd
4 /etc/passwd
磁盘分区
增加虚拟磁盘
点击虚拟机设置->添加->硬盘,如下界面默认下一步. 设置增加磁盘的大小,完成
fdisk命令
fdisk 命令语法: fdisk [-l ] [设备名称] 选项只有一个。fdisk 只能用来划分小于 2T 的分区.
-l 后边不跟设备名会直接列出系统中所有的磁盘设备以及分区表,加上设备名会列出该设备的分区表。
不加-l 直接跟磁盘名,会进入对磁盘进行分区的操作. 例如# fdisk /dev/sdb 则是对/dev/sdb进行分区,
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
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)
以上命令常用是
- p:打印当前磁盘的分区情况
- n:建立一个新的分区
- w:保存
- q:退出
- d:删除一个分区
1.n创建分区时主分区和扩展分区之和小于4.
2.逻辑分区从第5分区号开始.分区号是连续的
3.扩展分区不支持格式化的.扩展分区中划分出逻辑分区是支持格式化的,是可以写数据的.
parted工具分区
fdisk分区工具,它的分区格式为MBR,特点是最多分4个主分区,磁盘大小不能超过2T。而GPT分区格式,突破了这些限制,它没有主分区、扩展分区、逻辑分区之分,在一块磁盘上最多可以分128个分区出来,支持大于2T的分区,最大卷可达18EB。 相信,随着存储级别的升级,将来的分区格式逐渐会淘汰MBR,而GPT成为主流。
parted 工具常用功能:
当在命令行输入parted后,进入parted命令的交互模式。输入help会显示帮助信息。下面就简单介绍一下常用的功能
1、check 简单检查文件系统。建议用其他命令检查文件系统,比如fsck
2、help 显示帮助信息
3、mklabel 创建分区表, 即是使用msdos(MBR)还是使用gpt,或者是其他方式分区表
4、 mkfs 创建文件系统。该命令不支持ext3 格式,因此建议不使用,最好是用parted分好区,然后退出parted交互模式,用其他命令进行分区,比如:mkfs.ext3
5、mkpart 创建新分区。
格式:mkpart PART-TYPE [FS-TYPE] START END
PART-TYPE 类型主要有primary(主分区), extended(扩展分区), logical(逻辑区). 扩展分区和逻辑分区只对msdos。
fs-type 文件系统类型,主要有fs32,NTFS,ext2,ext3等
start end 分区的起始和结束位置。
6、mkpartfs 建立分区及其文件系统。目前还不支持ext3文件系统,因此不建议使用该功能。最后是分好区后,退出parted,然后用其他命令建立文件系统。
7、print 输出分区信息。该功能有3个选项,
free 显示该盘的所有信息,并显示磁盘剩余空间
number 显示指定的分区的信息
all 显示所有磁盘信息
8、resize 调整指定的分区的大小。目前对ext3格式支持不是很好,所以不建议使用该功能。
9、rescue 恢复不小心删除的分区。如果不小心用parted的rm命令删除了一个分区,那么可以通过rescue功能进行恢复。恢复时需要给出分区的起始和结束的位置。然后parted就会在给定的范围内去寻找,并提示恢复分区。
10、rm 删除分区。命令格式 rm number 。如:rm 3 就是将编号为3的分区删除
11、select 选择设备。当输入parted命令后直接回车进入交互模式是,如果有多块硬盘,需要用select 选择要操作的硬盘。如:select /dev/sdb
12、set 设置标记。更改指定分区编号的标志。标志通常有如下几种:boot hidden raid lvm 等。
boot 为引导分区,hidden 为隐藏分区,raid 软raid,lvm 为逻辑分区。
如:set 3 boot on 设置分区号3 为启动分区
注:以上内容为parted常用的功能,由于该工具目前对ext3支持得不是很好,因此有些功能无法应用,比如move(移动分区)和resize等。
parted分区功能示例:
1、用命令模式 为/dev/sdb创建gpt类型文件分区表,并分500G分区。然后为该分区创建ext3文件系统。并将该分区挂载在/test文件夹下。
# parted /dev/sdb mklabel gpt //创建分区表
# parted /dev/sdb mkpart ext3 0 500000 //创建500G分区/dev/sdb1
# mkfs.ext3 /dev/sdb1 //将分区/dev/sdb1格式化成ext3格式文件系统
# mount /dev/sdb1 /test //将/dev/sdb1 挂载在/test下
如果让系统自动挂载/dev/sdb1 需手工编辑/etc/fstab文件。并在文件末尾添加如下内容:
/dev/sdb1 /test ext3 defaults 0 0
2、创建大小为4G的交互分区。由于已经创建了500G的/dev/sdb1 ,因此再创建的分区为/dev/sdb2
# parted /dev/sdb mkpart swap 500000 504000 //创建4G分区/dev/sdb2
# mkswap /dev/sdb2 //将/dev/sdb2创建为交换分区
# swapon /dev/sdb2 //激活/dev/sdb2
如果让系统自动挂载/dev/sdb2这个交换分区,需手工编辑/etc/fstab文件。并在文件末尾添加如下内容:
/dev/sdb2 swap swap defaults 0 0
3、恢复被误删除的分区(也可以参考testdisk命令)。由于parted直接写磁盘,因此一旦不小心删除了某一分区,建议立即用rescue恢复。下面通过事例来理解恢复过程。
# parted /dev/sdb mkpart ext3 504000 514000 //创建10G分区/dev/sdb3
# mkfs.ext3 /dev/sdb3 //将/dev/sdb3格式化成ext3文件系统。
# parted /dev/sdb rm 3 //删除/dev/sdb3
# parted /dev/sdb rescue 504000 514000 //依照屏幕提示,输入yes即可恢复被误删除分区
磁盘格式化
命令: mke2fs, mkfs.ext2, mkfs.ext3 , mkfs.ext4和mkfs.xfs
用 man 查询命令的帮助文档时,你会发现我们看到了同一个帮助文档,以上命令是一样的。 mke2fs 常用的选项有:
-b 分区时设定每个数据区块占用空间大小,目前支持 1024、 2048 以及 4096 bytes 每个块
-i 设定 inode 的大小
-N 设定 inode 数量,有时使用默认的 inode 数不够用,所以要自定设定 inode 数量
-c 在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢
-L 预设该分区的标签 label
-j 建立 ext3 格式的分区,如果使用 mkfs.ext3 就不用加这个选项了
-t 用来指定什么类型的文件系统,可以是 ext2、 ext3 也可以是 ext4,默认文件系统是ext2,不支持xfs.
-m 格式化时,指定预留给管理员的磁盘比例,是一个百分比,只针对 mke2fs 命令
centos7中默认/, /boot文件系统是xfs.
[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, 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
这里涉及到一个块的概念。磁盘在被格式化的时候会预先规定好每一个块的大小,然后再把所有的空间分割成一个一个的小块存数据的时候也是一个块一个块的去写入。所以如果你的磁盘存的都是特别小特别小的文件,比如说 1k 或者 2k,那么建议在格式化磁盘的时候指定块数值小一点。 ext 文件系统默认块大小为 4096 也就是 4k。在格式化的时候,可以指定块大小为 1024、2048 或者 4096(它们是成倍增加的)。虽然格式化的时候可以指定块大小超过 4096,但是一旦超过 4096 则不能正常挂载,以下是指定块大小:
[root@localhost ~]# mke2fs -b 8192 /dev/sdb1
Warning: blocksize 8192 not usable on most systems.
mke2fs 1.42.9 (28-Dec-2013)
mke2fs: 8192-byte blocks too big for system (max 4096)
无论如何也要继续? (y,n) n
查看一个没有被挂在的分区,如下
[root@localhost ~]# blkid /dev/sdb1
ev/sdb1: UUID="64a9146f-f397-43a6-857f-cd3bf888ce1f" TYPE="xfs"
磁盘挂载
mount命令
挂载磁盘/dev/sdb1如下:
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16G 982M 15G 7% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 197M 121M 77M 62% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb1 2.0G 33M 2.0G 2% /mnt
卸载磁盘/dev/sdb1如下:
[root@localhost ~]# umount /dev/sdb1
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16G 982M 15G 7% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 197M 121M 77M 62% /boot
tmpfs 183M 0 183M 0% /run/user/0
如果不退出当前磁盘,加-l也可以卸载.如: # umount -l /mnt/.