linux umount swap,挂载、卸载、free查看内存情况、创建交换分区、回环设备、dd命令、自动挂载、fuser...
掛載、卸載
分區、格式化創建了文件系統后就可以掛載了
掛載:將新的文件系統關聯至當前根文件系統
卸載:將某文件系統與當前根文件系統的關聯關系移除
mount掛載
使用方法:
mount 設備 掛載點
設備:可以是設備文件【如:/dev/sda5】、可以是卷標【如:LABEL=""】、或者是UUID【如:UUID=""】
掛載點:指定掛載的目錄,該目錄的要求是:沒有被其他進程使用,并且原有的文件將會被隱藏
掛載的時候有兩個目錄/media一般掛載移動便攜式的設備,/mnt掛載額外的設備或者額外的分區
[root@localhost /]# ls
bin etc lost+found mnt proc selinux tmp
boot home media net root srv usr
dev lib misc opt sbin sys var
[root@localhost /]# mkdir /mnt/test
[root@localhost /]# mount /dev/sdb /mnt/test
mount: you must specify the filesystem type
[root@localhost /]# mount /dev/sdb1 /mnt/test
[root@localhost /]# ls -l /mnt/test
總用量 16
drwx------. 2 root root 16384 4月 24 18:29 lost+found
新掛載的文件系統里面有個last+found目錄,這就代表掛載成功了。
umount卸載某文件系統
使用方法:
umount 設備、umount 掛載點
注意事項:卸載的設備沒有被使用
[root@localhost /]# cd /mnt/test
[root@localhost test]# umount /dev/sdb^C
[root@localhost test]# umount /mnt/test
umount: /mnt/test: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@localhost ~]# cd ..
[root@localhost /]# umount /mnt/test
mount的其他選項
mount:顯示當前系統已掛載的設備及掛載點
用法:
mount options [-o options] 設備 掛載點 ,在這-o options 代表的是功能選項,磁盤掛載時帶有什么功能【比如.EXE文件是否掛載就執行,是否允許使用SUID..等等】
-a:掛載/etc/fstab文件中定義的所有文件系統
-n:默認情況下,mount命令每掛載一個設備,都會把設備掛載的信息保存至/etc/mtab文件:使用-n選項意味著掛載設備時,不把信息寫入此文件【小型linux可以使用此選項】
-t FSTYPE:指定正在掛載設備上的文件系統類型,如果不指定mount會自動調用blkid命令獲取對應的文件系統類型;
-r:只讀掛載,掛載光盤時常用此選項
-w:讀寫掛載
-o:指定額外的掛載選項,也即指定文件系統啟用的屬性【remount重新掛載指定文件系統,ro也是可以掛載為只讀】
[root@localhost dev]# mount /dev/sdb1 /mnt/test
[root@localhost dev]# mount【查看掛載的設備】
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda5 on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /mnt/test type ext2 (rw)【剛剛掛載的,默認為讀寫】
[root@localhost dev]# mount -o ro,remount /dev/sdb1【重新掛載為只讀】
[root@localhost dev]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda5 on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /mnt/test type ext2 (ro)【只讀】
free
free命令用來查看內存、緩沖區、緩存、swap的使用情況
緩沖區和緩存
緩沖區存的是源數據,緩存是數據。
我們的數據先是在緩沖區,當緩沖區不經常使用就放進了緩存。當數據取出的時候也先去經過緩沖區。
buffers存的是inode的對應文件的路徑【要找某個數據先要找inode,所以就把不用inode先放在緩沖區】,cached存的inode對應的塊,他們都是內存中的當我們關閉的時候cached就會保存進磁盤。這樣通過buffers和cached能使CPU和內存I/O更快。
[root@localhost ~]# free -m【以M(兆)的方式顯示】
total used free shared buffers cached
Mem: 1006 246 759 1 37 102
-/+ buffers/cache: 107 899
Swap: 2047 0 2047
在上面發現:246-107=37+102,這說明被使用的內存包括buffers和cached,-/+ buffers/cache的意思就是緩沖區和緩存被減去后等于真正的使用的內存;同理 free也是這意思899-759=1+37+102。
創建交換分區
創建一個新的分區
下面是執行的操作,具體創建分區的知識在前面的文章有記錄
[root@localhost ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p【查看現有的分區】
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd25c91c2
Device Boot Start End Blocks Id System
/dev/sdb1 1 200 1606468+ 83 Linux
/dev/sdb2 201 462 2104515 83 Linux
Command (m for help): n【創建一個新的分區】
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3【分區編號3】
First cylinder (463-1305, default 463):
Using default value 463
Last cylinder, +cylinders or +size{K,M,G} (463-1305, default 1305): +1G
Command (m for help): t【改變分區的類型默認是Linux】
Partition number (1-4): 3
Hex code (type L to list codes): L【查看有哪些類型,發現82是交換分區】
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
...
...
Hex code (type L to list codes): 82【指定為82】
Changed system type of partition 3 to 82 (Linux swap / Solaris)
Command (m for help): p【打印看看】
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd25c91c2
Device Boot Start End Blocks Id System
/dev/sdb1 1 200 1606468+ 83 Linux
/dev/sdb2 201 462 2104515 83 Linux
/dev/sdb3 463 594 1060290 82 Linux swap / Solaris【swap類型了】
[root@localhost ~]# partprobe /dev/sdb【讓內核識別】
上面的調整系統類型也可以使用fdisk命令,調整為82
創建文件系統
上面只是創建了一個分區,還需要創建文件系統,但是創建文件系統不是用mkfs命令,有單獨的mkswap命令
mkswap
使用方法:
mkswap /dev/sdb3
L LABEL:指定卷標
[root@localhost ~]# mkswap /dev/sdb3
Setting up swapspace version 1, size = 1060284 KiB
no label, UUID=4a4ecd7c-9106-4fd5-a093-53fac01c1425
啟用swap
按照平時分區的創建到使用,最后需要掛載,但是swap分區用swapon和swapoff
[root@localhost ~]# swapon /dev/sdb3
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 1006 246 759 1 37 102
-/+ buffers/cache: 106 899
Swap: 3083 0 3083
[root@localhost ~]# swapoff /dev/sdb3
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 1006 246 759 1 37 102
-/+ buffers/cache: 106 900
Swap: 2047 0 2047
回環設備loopback
現在遇到需要增加swap分區,但是磁盤沒有多余的空間來增加新的分區了,這個時候可以在已經存在的分區中通過軟件模擬出一個新的分區,這種用軟件模擬硬件的方式叫使用回環設備【本地回環...】
要模擬硬盤需要創建鏡像文件,這時候用到了一個dd的命令
dd命令
dd命令也是可以進行復制的,但是它與copy的區別就是,copy是文件層次的,它通過vfs把文件從一個目錄復制到另一個目錄;而dd復制的是底層的數據流,不用經過vfs,可以單獨指定復制文件的多少字節。利用這一點可以刻錄光盤,cat命令的重定向也可以刻錄光盤。
使用方法:
if=數據來源 of 數據存儲目標 bs=1 count=2 seek=#【跳過多少空間大小】
dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1【備份MBR】
dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1【還原MBR】
cat /dev/cdrom > /root/rehl5.ios【cat命令也可以制作ios鏡像】
dd if=/dev/zero of=/var/swapfile bs=1M count=1024【這就制作出了一個1G的文件,zero和/dev/null剛好相反,/dev/zero稱為泡泡設備,不停的向外面吐0要多少有多少,/dev/null有多少吸多少】
[root@localhost ~]# cd /tmp
[root@localhost tmp]# touch a.txt
[root@localhost tmp]# dd if=/tmp/a.txt of=~/a.txt
記錄了0+0 的讀入
記錄了0+0 的寫出
0字節(0 B)已復制,0.024979 秒,0.0 kB/秒
[root@localhost tmp]# ls ~
anaconda-ks.cfg a.txt install.log install.log.syslog
創建一個模擬的設備【我這空間不足,所以是685M】
[root@localhost tmp]# dd if=/dev/zero of=/var/swapfile bs=1M count=1024
dd: 正在寫入"/var/swapfile": 設備上沒有空間
記錄了653+0 的讀入
記錄了652+0 的寫出
684630016字節(685 MB)已復制,123.871 秒,5.5 MB/秒
[root@localhost tmp]# mkswap /var/swapfile
mkswap: /var/swapfile: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 668580 KiB
no label, UUID=00bf638a-45e0-4d4e-831b-81c78e438409
[root@localhost tmp]# swapon /var/swapfile
[root@localhost tmp]# ls -lh /var/swapfile
-rw-r--r--. 1 root root 653M 4月 25 20:34 /var/swapfile
[root@localhost tmp]# free -m
total used free shared buffers cached
Mem: 1006 911 94 1 38 756
-/+ buffers/cache: 117 889
Swap: 2700 0 2700
dd if=/dev/zero of=/var/swapfile bs=1M count=1 seek=1023 看上去是1G實際就1M,而且里面可以分區,我們的虛擬機就是這個技術,開始很小當在里面存東西時開始變大,但是不會超過1G
[root@localhost tmp]# dd if=/dev/zero of=/var/swapfile bs=1M count=1 seek=1023
記錄了1+0 的讀入
記錄了1+0 的寫出
1048576字節(1.0 MB)已復制,0.0201953 秒,51.9 MB/秒
[root@localhost tmp]# ls -lh /var/swapfile
-rw-r--r--. 1 root root 1.0G 4月 25 20:51 /var/swapfile
[root@localhost tmp]# du -lh /var/swapfile
1.0M /var/swapfile
補充知識
mount掛載鏡像文件
上面模擬的回環設備被交換分區swapon掛載使用了,mount -o loop也可以對普通文件當作循環設備掛載使用
mount -o loop /root/xxx.ios -o loop /media/ 【如果不使用-o loop 這個ios文件就被當作普通文件,不會讓掛載的】
swapon -a
-a:啟用所有定義在/etc/fstab文件中的交換設備
自動掛載/etc/fstab
文件系統的配置文件/etc/fstab,在這個文件中的設備,在開機初始化的時候會被自動掛載
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Apr 16 23:17:03 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=642e838a-71a8-429d-bef0-6345823e176f / ext4 defaults 1 1
UUID=9f56821a-81ac-4f4a-82a4-194331878494 /boot ext4 defaults 1 2
UUID=5c7e35c4-b59e-41ec-88d7-71790848c4ec /home ext4 defaults 1 2
UUID=cac77075-c514-4aac-af26-4cfd5af900e0 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
第一個字段是要掛載的設備【UUID,設備路徑,卷標】,第二個字段是掛載點,第三個字段是文件系統類型,第四個字段是mount -o的功能選項,第五個字段是轉儲頻率【每多少天一次備份,0是不備份,1是每天一次備份,現在用的很少,常使用備份軟件】,最后一個字段是文件系統檢測次序,開機的時候誰率先檢查一般根為1,其他的可以同時為2,同時為3,0表示不檢查
mount -a 是掛載這個表的所有設備
[root@localhost ~]# vi /etc/fstab【添加一個設備/dev/sdb1】
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Apr 16 23:17:03 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=642e838a-71a8-429d-bef0-6345823e176f / ext4 defaults 1 1
UUID=9f56821a-81ac-4f4a-82a4-194331878494 /boot ext4 defaults 1 2
UUID=5c7e35c4-b59e-41ec-88d7-71790848c4ec /home ext4 defaults 1 2
UUID=cac77075-c514-4aac-af26-4cfd5af900e0 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/sdb1 /mnt/test ext2 defaults 0 0【添加一行】
[root@localhost ~]# mount -a【掛載/etc/fstab所有設備】
[root@localhost ~]# mount【查看已經掛載的設備或者cat /etc/mtab】
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda5 on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /mnt/test type ext2 (rw)
[root@localhost ~]# ls -l /mnt/test【lost+found代表掛載成功】
總用量 16
drwx------. 2 root root 16384 4月 24 18:29 lost+found
我們每掛載一個設備,都會記錄在/etc/mtab下,不想讓它記錄可以使用mount -n選項
fuser
驗證進程正在使用的文件或套接字文件
例如:我剛剛掛載了一個設備,就是為了測試,這個設備剛剛掛上就被某個用戶或某個進程使用了,這時候使用umount無法卸載,可以使用fuser查看哪些用戶或進程正在使用,并殺死進程然后umount卸載
-v:查看某文件上正在運行的進程
-k:殺死那個進程【殺死的只是一個文件,還需要-m選項】
-m:所有使用該掛載點的進程
fuser -m /dev/sda1 #顯示所有使用sda1的進程
fuser -km /dev/sda1 #殺死所有使用sda1的進程
[jiakang@localhost root]$ cd /mnt/test【我用另一個用戶進入該分區】
[root@localhost ~]# fuser -v /mnt/test【查看】
用戶 進程號 權限 命令
/mnt/test: jiakang 3468 ..c.. bash
[root@localhost ~]# fuser -km /mnt/test 【殺死進程】
/mnt/test: 3468c
[jiakang@localhost test]$ 已殺死 (core dumped)【jiakang用戶被殺死,剔除bash進程】
[root@localhost ~]# umount /mnt/test【卸載】
總結
以上是生活随笔為你收集整理的linux umount swap,挂载、卸载、free查看内存情况、创建交换分区、回环设备、dd命令、自动挂载、fuser...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 隋唐5s与linux的关系,我与Linu
- 下一篇: c语言 字符串数组末尾,C语言中,利用宏