Linux:Swap分区
Linux中Swap(即:交換分區),類似于Windows的虛擬內存,就是當內存不足的時候,把一部分硬盤空間虛擬成內存使用,從而解決內存容量不足的情況。
?
方法1:使用獨立的分區來實現
?
1. lsblk 查看是否有可用的磁盤分區,使用fdsik劃分磁盤分區
?
2. fdisk /dev/sdc 創建后的分區為/dev/sdc2,注意使用t選項修改分區id為82
3. 創建swap文件系統
? ?mkswap /dev/sdc2 -L swap_sdc2
4. vim /etc/fstab
? ?:r!blkid /dev/sdc2? ? ? ?#讀取命令輸出至文件,再次進行編輯
? ?UUID="6f50983b-1452-41fc-8efd-2151e4613959" swap? ? ? ? ? ? ? ? ? swap? ? ?defaults? ? ? ?0 0?
5. swapon -a? 讓編輯后的/etc/fstab中的swap 分區生效
? ?發散思維: 其實執行mount -a 是否生效不還是看選項是否有auto嗎,man 5 fstab中找到的(學會使用man 5 配置文件 來查看配置信息,你值得擁有!)
? ?defaults
? ? ? ? ? ? ? ? ? ? ?use default options: rw, suid, dev, exec, auto, nouser, and async.
?
? ?noauto do not mount when "mount -a" is given (e.g., at boot time)
?
? ?提取關鍵信息:defaults: rw, suid, dev, exec, auto, nouser, and async.?
? ?noauto: do not mount when "mount -a" is given (e.g., at boot time)? ?這句話取反你就知道啥意思了!
?
6. 重新讀取掛載信息后,使用swapon -s 查看swap文件系統的信息
? ?[root@centos7 ~]#swapon -s
Filename Type Size Used Priority
/dev/sda3? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? partition 2047996 2800 -1
/dev/sdc2? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? partition 10484732 0 -2
?
注意一下還有優先級的,數值越大優先級越高
發散思維: 在使用是swap分區的時候要使用外磁道來使用(即磁道號較小的,最外圈的是0磁道),因為這樣數據的訪問效率會比內圈磁道高,具體的原因在此不再贅述。
7. 查看swap分區的狀態也可以使用 lsblk?
? ?[root@centos7 ~]#lsblk?
NAME? ?MAJ:MIN RM? SIZE RO TYPE MOUNTPOINT
sda? ? ? 8:0? ? 0? 100G? 0 disk?
├─sda1? ?8:1? ? 0 1000M? 0 part /boot
├─sda2? ?8:2? ? 0? 9.8G? 0 part /
├─sda3? ?8:3? ? 0? ? 2G? 0 part [SWAP]? ? ? ? #原來的swap分區大小
├─sda4? ?8:4? ? 0? ? 1K? 0 part?
└─sda5? ?8:5? ? 0 48.8G? 0 part /data
sdb? ? ? 8:16? ?0? ?20G? 0 disk?
├─sdb1? ?8:17? ?0? ? 2G? 0 part?
├─sdb2? ?8:18? ?0? ? 2G? 0 part?
├─sdb3? ?8:19? ?0? ? 3G? 0 part?
├─sdb4? ?8:20? ?0? ? 1K? 0 part?
└─sdb5? ?8:21? ?0? ? 2G? 0 part?
sdc? ? ? 8:32? ?0? ?20G? 0 disk?
├─sdc1? ?8:33? ?0? ?10G? 0 part?
└─sdc2? ?8:34? ?0? ?10G? 0 part [SWAP]? ? ? #新增加的swap分區的大小
sr0? ? ?11:0? ? 1? 3.7G? 0 rom? /run/media/root/CentOS_6.9_Final
sr1? ? ?11:1? ? 1? 8.1G? 0 rom? /run/media/root/CentOS 7 x86_64
8. 禁用新增的swap分
? ?# swapoff? /dev/sdc1
?
總結記憶:? swapon -a? 生效/etc/fstab 添加swap分區
? ? ? ? ? fdisk分區的時候注意使用t 修改磁盤的id 為82
? ? ? ? ? swpaon -s 查看swap分區信息
? ? ? ? ? swapoff /dev/sdc1 禁用swap分區
?
方法2: 文件模擬分區創建swap文件系統
?
1. dd if=dev/zero of=/data/swap_file bs=1G count=5? ?創建5G空間的大小的文件
? 發散思維: dd if=/dev/zero of=/dev/sdc1 bs=512 count=1? 可以干掉MBR的信息,你可以這樣刪除分區信息,也可以使用fdisk /dev/sdc 來使用d選項來刪除
? ? ? ? ? ?當然也可以不刪除bootloader的信息(446bytes),直接將64bytes的分區表信息填零,如:
? ? ? ? ? ?dd if=/dev/zero of=/dev/sdc1 bs=1 count=64 seek=446? 直接填充64bytes至 分區表,跳過目標 /dev/sdc1的前446bytes
? ? ? ? ? ?注意不能使用 dd if=/dev/zero of=/dev/sdc1 bs=64 count=1 seek=446
? ? ? ? ? ?hexdump -C /dev/sda -n 512 -v? 顯示sda分區的前512字節信息
? ? ? ? ? ?葵花寶典的套路: 記住玩之前先要備份MBR啊!哈哈哈,dd if=/dev/sdc1 count=/data/mbr.bak bs=512 count=1 (默認單位是字節)
? ? ? ? ? ?恢復的時候 可以直接 dd if=/dev/mbr.bak of=/dev/sdc1 不用給出bs和count了,因為只有512字節的備份信息,是吧。
? ? ? ? ? ?也可以使用dd if=/dev/zero of=/dev/null bs=1G count=2 這方法可以測試磁盤的讀寫速度,有興趣的可以試試
2. mkswap -L swap_file /data/swap_file? 創建swap文件系統
3. 為了永久生效,編輯配置文件/etc/fstab,永久生效配置修改配置文件似乎是linux的鐵律,你們覺得呢?因為使用的是文件模擬的分區,所以不要使用UUID喲!
? ?vim /etc/fstab
? ?/data/file2? ?swap? ? ? ? ? ? ? ? ? swap? ? ?defaults? ? ? ?0 0??
4.swapon -a? 讀取/etc/fstab中的swap分區信息
5.swapon -s? 查看swap分區的信息,順便看看自己剛剛創建的swap分區是否生效
6.swapoff /data/swap_file 不想玩了,可以直接禁用
?
最近在用一個自己裝的debian系統的時候,發現運行很多腳本的時候出現:Cannot fork。
網上說有可能是因為swap分區空間不夠導致的問題。然后看了一下swap空間的大小。居然大小是0M。
查看的命令是free -m。
難道真的是swap分區導致的問題?不管了,先添加個swap分區再說吧。
1.創建一個swap文件。
cd /var sudo mkdir swap sudo dd if=/dev/zero of=swapfile bs=1024 count=2000000count代表的是大小,我這里是2G。
2.把文件轉換為swap文件
在 var目錄執行:sudo mkswap swapfile3.激活swap文件
這里可以直接用命令掛載上一個swap分區,但是重啟后要重新掛載:
4、如果需要開機啟動后自動掛載的話,可以把它添加到/etc/fstab文件中。
開機自動掛載SWAP分區,
編輯 /etc/fstab,末行添加:在文件中增加:
/var/swapfile swap swap defaults 0 04.這樣就已經完成增加swap分區了??梢杂胒ree -m來參看結果。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Linux:Swap分区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络:HTTP1.1和HTTP2区别
- 下一篇: linux 其他常用命令