CentOS 7'de yer değiştirmeyi etkinleştiremiyorum


55

Bu yüzden Açık kaynak Bilet Talep Sistemi olan OTRS'yi kurmak için bir öğreticiyi takip ediyorum. Kurmak için, şunu gerektirir: 4GB Swap alanı. İşte kullandığım komut:

[root@ip-10-0-7-41 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       50G   14G   37G  27% /
devtmpfs        478M     0  478M   0% /dev
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           496M   13M  484M   3% /run
tmpfs           496M     0  496M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/1000
[root@ip-10-0-7-41 ~]# fallocate -l 4G /myswap
[root@ip-10-0-7-41 ~]# ls -lh /myswap
-rw-r--r--. 1 root root 4.0G Jul  8 08:44 /myswap
[root@ip-10-0-7-41 ~]# chmod 600 /myswap
[root@ip-10-0-7-41 ~]# mkswap /myswap
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=3656082a-148d-4604-96fb-5b4604fa5b2e
[root@ip-10-0-7-41 ~]# swapon /myswap
swapon: /myswap: swapon failed: Invalid argument

Görebilirsiniz: Burada geçersiz argüman hatası. Bunu etkinleştirmek için boşuna çok zaman denedim.Birisi lütfen bana bu hatayı düzeltmek için söyle. (Bu CentOS 7’yi AWS Instance EC2’de çalıştırıyorum)

[root@ip-10-0-7-41 ~]# df -T | awk '{print $1,$2,$NF}' | grep "^/dev"
/dev/xvda1 xfs /

Bu hangi dosya sisteminde oluyor? btrfs şans eseri mi?
schaiba

@schaiba Merhaba, sorumu değiştirdim. Dosya sisteminin xfs olduğunu düşünüyorum.
One,

2
XFS'de kullanmak gerçekten daha iyi dd. Lütfen tüm dosya sistemlerinin değiş tokuş yapmayı desteklemediğini veya en azından aynı şekilde olmadığını unutmayın.
schaiba

@schaiba Dosya sistemi türü hakkında pek bir şey bilmiyordum. Çok teşekkürler.
One,

Yanıtlar:


102

Sorun , tahsisi hızlı ve etkili kılmak için fallocate(1)dosya sistemini ioctlskullanmasıdır, dezavantajı fiziksel olarak alanı tahsis etmemesi, ancak swapon(2)sistem çağrısının gerçek bir boşluk gerektirmesidir. Referans: https://bugzilla.redhat.com/show_bug.cgi?id=1129205

Bu konuyu daha önce kutumla da görmüştüm. Bu yüzden kullanmak yerine , bağlantının önerdiği gibi fallocatekullandımdd

sudo dd if=/dev/zero of=/myswap count=4096 bs=1MiB

ve ilerlediklerini chmod, mkswap& swaponkomutları. Tombala! İşe yaradı.


1
Garip bir takas dosyası, Ubuntu 16.04.3 LTS'de benim için iyi çalıştı, ancak Red Hat Enterprise Linux Server 7.4 (Maipo) sürümünde "takas başarısız oldu: Geçersiz tartışma" ile başarısız oluyor. Yukarıda verilen dd komutu gerçekten RedHat üzerinde çalışıyor. İki işletim sistemi arasında yanıltıcının Ubuntu üzerinde çalışmasına izin veren farklı bir şeyler olmalıdır.
Davidian1024,

Çözüm CentOS 7.5 ile çalışıyor
NerdOfCode

ddçok daha fazla iş yapıyor gibi görünüyor time dd if=/dev/zero of=/myswap count=4096 bs=1MiB0.000 saniye time fallocate -l 4G /swap3sürer, ancak aynı boyutta dosya üretirler, 14.003 saniye sürer. Bunun fallocatesıfırları kopyalamadığını ddve swaponbu sıfırları gerektirdiğini tahmin ediyorum .
Daniel Wisehart

swapon: /swapfile: read swap header failed: Invalid argumentswapon /swapfilecentos7 kuklacı sunucusunda denedikten sonra bu hatayı aldım
Brian Thomas

@BrianThomas Bu, dd ile oluşturduktan sonra dosyada mkswap komutunu çalıştırmayı unutmuş gibisiniz.
jblaine

17

Bu adımları izleyin, DigitalOcean'in damlacıkları üzerinde çalışır. Test ettim. 4096 tutarını ihtiyacınıza göre değiştirin

yum install nano -y

sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

sudo nano /etc/fstab

bu satırı ekle:

/swapfile   swap    swap    sw  0   0

bu komutu çalıştır

sudo sysctl vm.swappiness=10

sudo nano /etc/sysctl.conf

bu satırı ekle

vm.swappiness = 10
vm.vfs_cache_pressure = 50

Takasın boyutunu doğrulamak için

swapon --summary
free -h

2
Benim ddkomut olurdu dd if=/dev/zero of=/swapfile count=4 bs=1GiBben eğer gibibytes içinde mebibytes hesaplama ile rahatsız olamaz, çünkü ddbenim için yapabilir. Eskiden günlerde insanların onu kibibitler cinsinden ifade ettiklerini ve bunun gibibitlere elle hesapladığını biliyor muydunuz? İnanılmaz!
Amedee Van Gasse

@AmedeeVanGasse dd komutunun sürümü aslında 1GiB bellek gerektiriyor ve bu kadar boş belleğiniz yoksa, komut başarısız olacaktır.
Fabiano

@ Fabiano evet ve? Demek istediğin ...?
Amedee Van Gasse,

2
@AmedeeVanGasse, benim açımdan, MiB ve GiB'leri hesaplamakla uğraşmak istemiyorsanız bs=, bunun sonucu olarak, istenmeyen sonuçlara yol açtığından, verimliliği düşürmek ve muhtemelen en düşük maliyetli toplantılarda çalışmamak gibi doğru bir yol olmadığıdır. Sadece tembelseniz, hem matematiği hem de verimli blok büyüklüğünü seçerken sizin için kullanıp count_bytesbırakalım dd: dd if=/dev/zero of=/swapfile count=4GiB iflag=count_bytes=)
Fabiano

iflag=count_bytesyorumunuz için mükemmel bir gelişmedir. Ve tembel değilim, okunabilirliği önemsiyorum. Senaryomu tekrar okuduğum 6 ay içinde (ya da bir sonraki bakıcı ortaya çıktığında), okuyucu neler olup bittiğini anlamalıdır. Bu sadece kodu okuyan bilgisayarlar değil, insanlar da kodu okuyor!
Amedee Van Gasse,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.