変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

CentOS

【postfix】 mailbox_size_limitなんてあったのか?

message_size_limitを10485760 から 102400000に変えた後暫く経ってみると
メールがまた届かなくなっていた。
勿論そんなに大きいものは、このブログのDBバックアップだけだが、全部留め置かれたらしい。
maillogを見ると、
Apr 15 13:52:55 ssiscirine postfix/local[4803]: fatal: main.cf configuration error: mailbox_size_limit is smaller than message_size_limit
あたりから一気にmaillogのサイズが急増していた。
main.cfにmailbox_size_limitの設定は無かったので、mailbox_size_limit  = 102400000 を追加してservice postfix restart
先のログが出た後の分のメールが届いた。
cron や anacron が

Not using downloaded repomd.xml because it is older than what we have:
とか色々。
早速、yum update
以前は勝手に自動UPDATEしてた様な気がするが
今は、自動DOWNLOADだけやってメールする慎重派に変わったらしい。
と云うのも、
yum --enablerepo=epel update phpMyAdmin(4.4.1.1)は失敗作らしく
あちこちでJavaScriptエラーを吐きだしてくるのだから。
※JavaScriptエラーはFireFoxのキャッシュ不整合が原因だったらしい。Firefox のリフレッシュ機能で治った。
そして、それ以前(~4/15)のものはメッセージも出さず、そのまま闇に消えたようだ。


MariaDB 強制終了

データベース接続確立エラー

の文字をあちこちで見かけるけど・・・
ココも同じ。
/var/log/mariadb/mariadb.log に

Version: '5.5.40-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server

があるなら、今は要注意。
と思ってたら、またデータベース接続確立エラーになっていた。
ログを見ると・・・

Dec 25 08:24:22 mysqld_safe: /usr/bin/mysqld_safe: 182 行:  1730 強制終了            nohup /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock < /dev/null >> /var/log/mariadb/mariadb.log 2>&1
 Dec 25 08:25:03 mysqld_safe: /usr/bin/mysqld_safe: 182 行:  6357 強制終了            nohup /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock < /dev/null >> /var/log/mariadb/mariadb.log 2>&1 >> /var/log/mariadb/mariadb.log 2>&1

と2回落ちてサービスが止まったらしい。
データベースのログを見ると

21:06:21 [ERROR] mysqld: Table './***DB/wp_options' is marked as crashed and should be repaired
21:06:21 [Warning] Checking table:   './***DB/wp_options'
21:06:22 [ERROR] mysqld: Table './***DB/wp_commentmeta' is marked as crashed and should be repaired
21:06:22 [Warning] Checking table:   './***DB/wp_commentmeta'
21:06:23 [ERROR] mysqld: Table './***DB/wp_comments' is marked as crashed and should be repaired
21:06:23 [Warning] Checking table:   './***DB/wp_comments'

なので、phpMyAdminでテーブルを修復。
最近DBの応答時間が妙に長かったけど、良くなったのでこれが原因だったのかな?
しかし
# systemctl stop mariadb.service
# systemctl start mariadb.service
の後のログに

[Note] Plugin 'FEEDBACK' is disabled.
[Note] Server socket created on IP: '0.0.0.0'.
[Note] Event Scheduler: Loaded 0 events
[Note] /usr/libexec/mysqld: ready for connections.

が消えない。
# mysql_upgrade -uユーザ -pパスワード  も効果がない。

# chown R mysql:mysql /var/lib/mysql  もやってみた。
# rm /var/lib/mysql/ib_logfile*  もやってみた。
でも変わらない。

 



clamd メモリ・イータ

topコマンドでMを打つとメモリ使用量が多い順に表示する。
すると、トップは 14.1%(122MB) の clamd    だった。
なんでもrestart するとメモリを解放するらしいので
# systemctl restart clamd
とやったら・・・
トップは同じ clamd。
32.5%(281MB)!増量した!
もう一度やってみると
32.6%(282MB) 微増!
仕方がないので
# reboot
32.6%(282MB) 変わらず!
どうやら、restartしてメモリが減った!って情報はrestartした時に偶然にもスキャンデータが少なかっただけのようだ。
なので毎朝再起動させることにした
# crontab -e

30 6 * * * reboot

 



MRTG

まず

# yum install httpd
から始めよう
総ダウンロード容量: 3.0 M
インストール容量: 10 M
Is this ok [y/d/N]: y

となったり

# systemctl start httpd
# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'

と表示されるかもしれないし、

# firewall-cmd --list-services

の結果に http が載ってないかもしれない

# firewall-cmd --add-service=http --permanent
success
# firewall-cmd --reload
success
# firewall-cmd --list-services
dhcpv6-client http smtp ssh

ブログのデータベース接続エラーがrebootで治ったのも
メモリ不足でDBが落ちてた気がするのでKVMのホストにいつものトコロを見ながらMRTGを入れてみる。
KVMのホストとターゲットのクライアントにsnmpパッケージを入れる

# yum -y install net-snmp
# yum -y install net-snmp-utils   ※追記

# vi /etc/snmp/snmpd.conf
ゴニュゴニョして起動。
# systemctl start snmpd
そして常駐化

# systemctl enable snmpd
 ln -s '/usr/lib/systemd/system/snmpd.service' '/etc/systemd/system/multi-user.target.wants/snmpd.service'

KVMのホストにMRTGパッケージを入れる

# yum -y install mrtg

ここで、/etc/httpd/conf.d/mrtg.conf にLAN接続でも観れるように追記した方がいいだろう。

<Location /mrtg>
Require local
Require ip 192.168.*.0/24
# Require ip 10.1.2.3
# Require host example.org
</Location>

では、MRTGの 本体の設定ファイルを作成しよう

# cfgmaker --ifref=descr --ifdesc=descr public@*.*.*.* > /etc/mrtg/mrtg.cfg ※*.*.*.*はKVMゲストのIPアドレス
--base: Get Device Info on public@*.*.*.*:
SNMP Error:
no response received
SNMPv1_Session (remote host: "*.*.*.*" [*.*.*.*].161)
                  community: "public"
                 request ID: 2017506137
                PDU bufsize: 8000 bytes
                    timeout: 2s
                    retries: 5
                    backoff: 1)
 at /usr/bin/../lib64/mrtg2/SNMP_util.pm line 651.
SNMPWALK Problem for 1.3.6.1.2.1.1 on public@*.*.*.*::::::v4only
 at /usr/bin/cfgmaker line 951.
WARNING: Skipping public@*.*.*.*: as no info could be retrieved
Use of uninitialized value $comment_sysdescr in substitution (s///) at /usr/bin/cfgmaker line 379.
Use of uninitialized value $sysname in concatenation (.) or string at /usr/bin/cfgmaker line 412.
Use of uninitialized value $comment_sysdescr in concatenation (.) or string at /usr/bin/cfgmaker line 412.
Use of uninitialized value $syscontact in concatenation (.) or string at /usr/bin/cfgmaker line 412.
Use of uninitialized value $syslocation in concatenation (.) or string at /usr/bin/cfgmaker line 412.

だったのでKVMゲストのファイアーウォールにsnmpが使える様する。
# firewall-cmd –add-service=snmp

Error: INVALID_SERVICE: snmp
だった。
# firewall-cmd –get-services
で確認してみると

amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

snmpは無かったのでポートで設定。

firewall-cmd --zone=public --add-port=161/udp --permanent
# systemctl restart firewalld
# cfgmaker --ifref=descr --ifdesc=descr public@192.168.*.* > /etc/mrtg/mrtg.cfg ※KVMホストのIPアドレス
--base: Get Device Info on public@*.*.*.*:
--base: Vendor Id: Unknown Vendor - 1.3.6.1.4.1.8072.3.2.10
--base: Populating confcache
--base: Get Interface Info
--base: Walking ifIndex
--snpd:   public@*.*.*.*: -> 1 -> ifIndex = 1
--snpd:   public@*.*.*.*: -> 2 -> ifIndex = 2
--snpd:   public@*.*.*.*: -> 3 -> ifIndex = 3
--snpd:   public@*.*.*.*: -> 4 -> ifIndex = 4
--snpd:   public@*.*.*.*: -> 5 -> ifIndex = 5
--snpd:   public@*.*.*.*: -> 6 -> ifIndex = 6
--snpd:   public@*.*.*.*: -> 7 -> ifIndex = 7
--base: Walking ifType
--snpd:   public@*.*.*.*: -> 1 -> ifType = 24
--snpd:   public@*.*.*.*: -> 2 -> ifType = 6
--snpd:   public@*.*.*.*: -> 3 -> ifType = 6
--snpd:   public@*.*.*.*: -> 4 -> ifType = 6
--snpd:   public@*.*.*.*: -> 5 -> ifType = 6
--snpd:   public@*.*.*.*: -> 6 -> ifType = 6
--snpd:   public@*.*.*.*: -> 7 -> ifType = 6
--base: Walking ifAdminStatus
--snpd:   public@*.*.*.*: -> 1 -> ifAdminStatus = 1
--snpd:   public@*.*.*.*: -> 2 -> ifAdminStatus = 1
--snpd:   public@*.*.*.*: -> 3 -> ifAdminStatus = 1
--snpd:   public@*.*.*.*: -> 4 -> ifAdminStatus = 1
--snpd:   public@*.*.*.*: -> 5 -> ifAdminStatus = 1
--snpd:   public@*.*.*.*: -> 6 -> ifAdminStatus = 1
--snpd:   public@*.*.*.*: -> 7 -> ifAdminStatus = 1
--base: Walking ifOperStatus
--snpd:   public@*.*.*.*: -> 1 -> ifOperStatus = 1
--snpd:   public@*.*.*.*: -> 2 -> ifOperStatus = 1
--snpd:   public@*.*.*.*: -> 3 -> ifOperStatus = 2
--snpd:   public@*.*.*.*: -> 4 -> ifOperStatus = 1
--snpd:   public@*.*.*.*: -> 5 -> ifOperStatus = 2
--snpd:   public@*.*.*.*: -> 6 -> ifOperStatus = 1
--snpd:   public@*.*.*.*: -> 7 -> ifOperStatus = 1
--base: Walking ifMtu
--snpd:   public@*.*.*.*: -> 1 -> ifMtu = 65536
--snpd:   public@*.*.*.*: -> 2 -> ifMtu = 1500
--snpd:   public@*.*.*.*: -> 3 -> ifMtu = 1500
--snpd:   public@*.*.*.*: -> 4 -> ifMtu = 1500
--snpd:   public@*.*.*.*: -> 5 -> ifMtu = 1500
--snpd:   public@*.*.*.*: -> 6 -> ifMtu = 1500
--snpd:   public@*.*.*.*: -> 7 -> ifMtu = 1500
--base: Walking ifSpeed
--snpd:   public@*.*.*.*: -> 1 -> ifSpeed = 10000000
--snpd:   public@*.*.*.*: -> 2 -> ifSpeed = 1000000000
--snpd:   public@*.*.*.*: -> 3 -> ifSpeed = 0
--snpd:   public@*.*.*.*: -> 4 -> ifSpeed = 0
--snpd:   public@*.*.*.*: -> 5 -> ifSpeed = 0
--snpd:   public@*.*.*.*: -> 6 -> ifSpeed = 10000000
--snpd:   public@*.*.*.*: -> 7 -> ifSpeed = 10000000

後はこのMRTGの設定ファイルを先のページの通りにゴニョゴニョする。
システムがUTF8なので、EUC-JPでしか動けないMRTGは直接/etc/cron.dに配置できないので

#!/bin/bash
LOCK=/var/lock/mrtg/mrtg_l
CONFCACHE=/var/lib/mrtg/mrtg.ok
export LANG=ja_JP.eucJP
mrtg /etc/mrtg/mrtg.cfg --lock-file $LOCK --confcache-file $CONFCACHE

な起動スクリプト(mrtg.sh)を作り、/etc/cron.dから起動しなければいけないらしい。
そして、
# chmod  700  mrtg.sh
ps.
ブラウザがcharset=euc-jpの設定を無視しているダケな様なので・・・
※多分ドメインのトップページに合わせている。
mrtg.shに以下を追記し、htmlをutf-8に差し替える。

# HTML euc-jp ⇒ utf-8
WorkDir=/var/www/mrtg
for FNAME in ${WorkDir}/*.html
do
  if grep charset=euc-jp ${FNAME} > /dev/null 2>&1
  then
    sed -e "s/charset=euc-jp/charset=utf-8/g" ${FNAME} > ${WorkDir}/tmpfile
    nkf -w ${WorkDir}/tmpfile > ${FNAME}
  fi
done

温度を調べる場合は
# yum install lm_sensors
# sensors で
acpitz-virtual-0
Adapter: Virtual device
temp1:        +26.8°C  (crit = +90.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +43.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:       +44.0°C  (high = +105.0°C, crit = +105.0°C)
Core 2:       +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 3:       +46.0°C  (high = +105.0°C, crit = +105.0°C)
と出てくるので、
# snmpwalk -v 2c -c public 192.168.***.*** 1.3.6.1.4.1.2021.13.16
LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 1
LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 2
LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 3
LM-SENSORS-MIB::lmTempSensorsIndex.4 = INTEGER: 4
LM-SENSORS-MIB::lmTempSensorsIndex.5 = INTEGER: 5
LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: temp1
LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: Core 0
LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: Core 1
LM-SENSORS-MIB::lmTempSensorsDevice.4 = STRING: Core 2
LM-SENSORS-MIB::lmTempSensorsDevice.5 = STRING: Core 3
LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 26800
LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 44000
LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 45000
LM-SENSORS-MIB::lmTempSensorsValue.4 = Gauge32: 46000
LM-SENSORS-MIB::lmTempSensorsValue.5 = Gauge32: 46000
# OIDを調べる。
#  snmptranslate -On -IR LM-SENSORS-MIB::lmTempSensorsValue
.1.3.6.1.4.1.2021.13.16.2.1.3
# snmpwalk -v 2c -c public 192.168.***.*** .1.3.6.1.4.1.2021.13.16.2.1.3
LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 26800
LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 44000
LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 44000
LM-SENSORS-MIB::lmTempSensorsValue.4 = Gauge32: 47000
LM-SENSORS-MIB::lmTempSensorsValue.5 = Gauge32: 47000
snmpwalk -v 2c -c public 192.168.***.*** .1.3.6.1.4.1.2021.13.16.2.1.3.1
LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 26800
/etc/mrtg/mrtg.cfgに追記

### temp1 ####
Target[temp1]: .1.3.6.1.4.1.2021.13.16.2.1.3.1&.1.3.6.1.4.1.2021.13.16.2.1.3.3:public@192.168.***.***
MaxBytes1[temp1]: 80000
MaxBytes2[temp1]: 80000
Options[temp1]: gauge, absolute, growright, noinfo
YLegend[temp1]: temp1
kilo[temp1]: 1024
Factor[temp1]: 0.001
kMG[temp1]: C,
LegendI[temp1]: temp1
LegendO[temp1]: Core2
Legend1[temp1]: temp1
Legend2[temp1]: Core2
Title[temp1]: 温度
PageTop[temp1]: <H1>温度</H1>

# ./mrtg.sh で動作確認
最後にinit.htmlを作成。
#  indexmaker –columns=1 \
–addhead=”<META HTTP-EQUIV=\”Content-Type\” CONTENT=\”text/html; charset=euc-jp\”>” \
/etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
全部出来上がったので公開。
# systemctl reload httpd
暫くして

WARNING: Could not match host:'public@192.168.***.***:' ref:'Descr' key:'vnet0'
ERROR: Target[vnet0][_IN_] ' $target->[1]{$mode} ' did not eval into defined data
ERROR: Target[vnet0][_OUT_] ' $target->[1]{$mode} ' did not eval into defined data
と大量にメールが飛んでいたので vnet0 の設定を削除。
syslogのレベルをinfoからnoticeに変えたせいかな?
ps.
MRTGの画面が時々不調。
よく見れば作成したファイルのオーナーがroot。
chown -R apache:apache /var/www/mrtg
を追記。


rngd failed

なんだかコレもfailed
# systemctl -l status  rngd
rngd.service – Hardware RNG Entropy Gatherer Daemon
   Loaded: loaded (/usr/lib/systemd/system/rngd.service; enabled)
   Active: failed (Result: exit-code) since 木 2014-12-18 20:34:43 JST; 3min 48s ago
  Process: 559 ExecStart=/sbin/rngd -f (code=exited, status=1/FAILURE)
 Main PID: 559 (code=exited, status=1/FAILURE)
   CGroup: /system.slice/rngd.service
 systemd[1]: Starting Hardware RNG Entropy Gatherer Daemon…
 systemd[1]: Started Hardware RNG Entropy Gatherer Daemon.
 systemd[1]: rngd.service: main process exited, code=exited, status=1/FAILURE
 systemd[1]: Unit rngd.service entered failed state.
 rngd[559]: Unable to open file: /dev/tpm0
 rngd[559]: can’t open any entropy source
 rngd[559]: Maybe RNG device modules are not loaded
ハードウェア を元に乱数を発生させるためのデーモン。
そんなものは付いていないCPUらしいので止める。
# systemctl stop rngd
# systemctl disable rngd
rm ‘/etc/systemd/system/multi-user.target.wants/rngd.service’
# reboot



clamd failed

ただ/var/run/clamav/ を作りなおしてもダメらしい。
作ってもすぐ消される。
# systemctl -l status clamd
clamd.service – SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server.
   Loaded: loaded (/etc/rc.d/init.d/clamd)
   Active: failed (Result: exit-code) since 木 2014-12-18 20:06:42 JST; 20min ago
  Process: 1077 ExecStart=/etc/rc.d/init.d/clamd start (code=exited, status=1/FAILURE)
 systemd[1]: Starting SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server….
 clamd[1099]: clamd daemon 0.98.4 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
 clamd[1099]: Log file size limited to 4294967295 bytes.
 clamd[1099]: Reading databases from /var/clamav
 clamd[1099]: Not loading PUA signatures.
 clamd[1099]: Bytecode: Security mode set to “TrustSigned”.
 clamd[1099]: Loaded 3709847 signatures.
 clamd[1099]: TCP: Bound to address 127.0.0.1 on port 3310
 clamd[1099]: TCP: Setting connection queue length to 30
 clamd[1099]: LOCAL: Socket file /var/run/clamav/clamd.sock could not be bound: No such file or directory
 clamd[1099]: Can’t unlink the socket file /var/run/clamav/clamd.sock
 clamd[1077]: Starting Clam AntiVirus Daemon: ERROR: LOCAL: Socket file /var/run/clamav/clamd.sock could not be bound: No such file or directory
 clamd[1077]: ERROR: Can’t unlink the socket file /var/run/clamav/clamd.sock
 clamd[1077]: [失敗]
 systemd[1]: clamd.service: control process exited, code=exited status=1
 systemd[1]: Failed to start SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server..
 systemd[1]: Unit clamd.service entered failed state.
 
ググってみるとシャットダウン時に消しているらしいので起動時に作り直す様にした。
# vi /etc/rc.d/init.d/clamd
start(){
        echo -n “Starting Clam AntiVirus Daemon: “
        # ClamAV起動前にディレクトリを作成するようにした
        mkdir /var/run/clamav > /dev/null 2>&1
        chown clamav:clamav /var/run/clamav > /dev/null 2>&1
        daemon clamd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/clamd
    return $RETVAL
}
stop() {
        echo -n “Stopping Clam AntiVirus Daemon: “
        killproc clamd
        rm -f /var/clamav/clamd.socket
        rm -f /var/run/clamav/clamav.pid
        RETVAL=$?
        echo
    ### heres the fix… we gotta remove the stale files on restart
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/clamd
    return $RETVAL
}
 



kdump failed

# systemctl  で観ていたら
kdumpがfailedになっていた。
※KVMのホストでは発生していないのは謎。
# system status kdump で観てみると

No memory reserved for crash kernel.

とあったので、起動時の問題っぽいから・・・
# vi /etc/default/grub
GRUB_CMDLINE_LINUX=”rd.lvm.lv=centos/swap console=ttyS0,115200n8 crashkernel=auto vconsole.keymap=jp106 rd.lvm.lv=centos/root vconsole.font=latarcyrheb-sun16″

GRUB_CMDLINE_LINUX=”rd.lvm.lv=centos/swap console=ttyS0,115200n8 crashkernel=128M vconsole.keymap=jp106 rd.lvm.lv=centos/root vconsole.font=latarcyrheb-sun16″
と設定を変え設定値で更新。
# grub2-mkconfig -o /boot/grub2/grub.cfg
再起動。
# reboot
するといいらしい。



WindowsPCの共有フォルダをLinuxで借りる方法

Androidのソースが大きすぎるのでWindowsPCのHDDを間借りすることにした。
# yum -y install cifs-utils
インストール:
cifs-utils.x86_64 0:6.2-6.el7
依存性関連をインストールしました:
libldb.x86_64 0:1.1.16-4.el7             libtalloc.x86_64 0:2.0.8-4.el7
libtdb.x86_64 0:1.2.12-3.el7             libtevent.x86_64 0:0.9.18-6.el7
libwbclient.x86_64 0:4.1.1-37.el7_0      pytalloc.x86_64 0:2.0.8-4.el7
samba-libs.x86_64 0:4.1.1-37.el7_0
完了しました!
# mkdir   /フォルダ
WindowsPC側で
共有するためのアカウントと共有フォルダを作る

アカウントは何でもいいが、パスワードを付けないとWindowsUpdateを全くやっていない一部のXP以外はネットワーク接続ができない。

共有するフォルダのプロパティで【共有】タグで【共有】ボタンを押し、先のアカウントで読み書きできるようにする。

# mount -t cifs -o user=ユーザ,password=パスワード //WindowsPCのIPアドレス/共有フォルダ   /フォルダ
#
何も出ないけど使える。
自動接続する場合は
echo //WindowsPCのIPアドレス/共有フォルダ /フォルダ cifs user=ユーザ,password=パスワード,defaults 0 0 >> /etc/fstab
でいいらしい。
しかしandroidのソースをコピーしてみると
cp: シンボリックリンク `/フォルダ/android-x86/ndk/sources/cxx-stl/llvm-libc++/libcxx/test/strings/basic.string/string.nonmembers/string_opgtEQ’ を作成できません: サ ポートされていない操作です
と出てきた。シンボリックリンク は使えないらしい。
もちろん repo init すら通らない。
Get http://git.android-x86.org/manifest
Traceback (most recent call last):
File “/フォルダ/android-x86/.repo/repo/main.py”, line 500, in <module>
_Main(sys.argv[1:])
File “/フォルダ/android-x86/.repo/repo/main.py”, line 476, in _Main
result = repo._Run(argv) or 0
File “/フォルダ/android-x86/.repo/repo/main.py”, line 155, in _Run
result = cmd.Execute(copts, cargs)
File “/フォルダ/android-x86/.repo/repo/subcmds/init.py”, line 390, in Execute
self._SyncManifest(opt)
File “/フォルダ/android-x86/.repo/repo/subcmds/init.py”, line 163, in _SyncManifest
m._InitGitDir(mirror_git=mirrored_manifest_git)
File “/フォルダ/android-x86/.repo/repo/project.py”, line 2076, in _InitGitDir
self._UpdateHooks()
File “/フォルダ/android-x86/.repo/repo/project.py”, line 2098, in _UpdateHooks
self._InitHooks()
File “/フォルダ/android-x86/.repo/repo/project.py”, line 2126, in _InitHooks
os.symlink(os.path.relpath(stock_hook, os.path.dirname(dst)), dst)
OSError: [Errno 95] Operation not supported
とは云え
# df -H
ファイルシス              サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root      41G   22G   19G   55% /
devtmpfs                    1.7G     0  1.7G    0% /dev
tmpfs                       1.8G     0  1.8G    0% /dev/shm
tmpfs                       1.8G  9.0M  1.7G    1% /run
tmpfs                       1.8G     0  1.8G    0% /sys/fs/cgroup
/dev/sda2                   521M  168M  354M   33% /boot
/dev/sda1                   210M   10M  200M    5% /boot/efi
/dev/mapper/centos-home      20G   34M   20G    1% /home
/dev/sdb1                    63G   21G   39G   35% /usbSSD
//WindowsPCのIPアドレス/共有フォルダ  3.1T  537G  2.5T   18% /フォルダ
3.1Tは魅力的なサイズだ。(大笑
http://thinkit.co.jp/free/tech/26/4/1.html などを見てダミーファイルを作ろうとしたが
# dd if=/dev/zero of=/フォルダ/ext3.img bs=1G count=1 seek=128
何時まで経っても終わらないので・・・
dd のseek オプションで一瞬で大きなファイルを作るを参考に
128GB=128 × 1024 (MB) × 1024 (KB) × 1024 (B)=137438953472 だから
# dd   if=/dev/zero   of=/フォルダ/ext3.img  seek=137438953472   bs=1   count=1
1+0 レコード入力
1+0 レコード出力
1 バイト (1 B) コピーされました、 0.00187216 秒、 0.5 kB/秒
で、サクっとエリアを借り、フォーマット
# mkefs -t ext4  /フォルダ/ext3.img
ke2fs 1.42.9 (28-Dec-2013)
/フォルダ/ext3.img is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
8388608 inodes, 33554432 blocks
1677721 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2181038080
1024 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): [ENTER]done
Writing superblocks and filesystem accounting information:
長い。タスクマネージャで調子を見ていたらHDDの起動音が・・・ディスクが止まっていたらしい。すぐに
done
メモリが24GBなのでキャシュしていたのかな?
ま、他にも何かあるのかもしれない。
適当にマウントしてみると
# df -h
ファイルシス              サイズ  使用  残り 使用% マウント位置
・・・
//WindowsPCのIPアドレス/共有フォルダ   2.8T  756G  2.0T   28% /フォルダ
/dev/loop0                  126G   61M  120G    1% /ext3.imgをマウントしたフォルダ
とりあえずコレでシンボリックリンクも貼り放題。
巨大なファイル(qemuのイメージファイルとか)のコピーをWindowsのタクスマネージャで見てみると、瞬間最大で100MB/秒強(LANが1Gbpsなので上限値)とか、USB2でSSDにつなぐより速いのでrepoのダウンロードも短くて済みそうだが、nucのCPUファンが唸りっぱなしになった。
 
いつも使う訳ではないのでスクリプトで切り替える様にする
ssdmount.sh

 # WindowsPCのIPアドレス
WINPC_IP_ADDRESS=192.168.*.*
# WindowsPCの共有フォルダ
WIN_SHARE_FOLDER=共有フォルダ名
# WindowsPCのアカウント
WIN_ACC=user=ユーザ名,password=パスワード
# 共有フォルダのマウント先
WINPC_SHARE_MOUNT_POINT=マウントするフォルダ名
# WindowsPCの共有フォルダにあるext4イメージファイル
EXT_IMG=${WINPC_SHARE_MOUNT_POINT}/イメージファイル名
# ext4イメージファイルのマウント先
EXT4_MOUNT_POINT=イメージファイルをマウントするフォルダ名
#
if [ “$1” == “-u” ]; then
    echo  umount  mode
    mount  |  grep  “on ${EXT4_MOUNT_POINT}”
    mount  |  grep  “on ${WINPC_SHARE_MOUNT_POINT}”
    #EXT4イメージをアンマウント
    umount  ${EXT4_MOUNT_POINT}
    #共有フォルダをアンマウント
    umount  ${WINPC_SHARE_MOUNT_POINT}
elif [ “$1” == “-m” ]; then
    echo  mount  mode
    #共有フォルダをマウントするフォルダを作る
    if [ ! -e ${WINPC_SHARE_MOUNT_POINT} ]; then
        echo  make ${WINPC_SHARE_MOUNT_POINT}
        mkdir  ${WINPC_SHARE_MOUNT_POINT}
        chmod  0777  ${WINPC_SHARE_MOUNT_POINT}
    fi
    #EXT4イメージファイルをマウントするフォルダを作る
    if [ ! -e ${EXT4_MOUNT_POINT} ]; then
        echo  make ${EXT4_MOUNT_POINT}
        mkdir  ${EXT4_MOUNT_POINT}
        chmod  0777  ${EXT4_MOUNT_POINT}
    fi
    #共有フォルダをマウント
    mount -t cifs -o ${WIN_ACC}    //${WINPC_IP_ADDRESS}/${WIN_SHARE_FOLDER}    ${WINPC_SHARE_MOUNT_POINT}
    #EXT4イメージをマウント
    if [ -e ${EXT_IMG} ]; then
        mount   ${EXT_IMG}    ${EXT4_MOUNT_POINT}
    fi
    mount  |  grep  “on ${EXT4_MOUNT_POINT}”
    mount  |  grep  “on ${WINPC_SHARE_MOUNT_POINT}”
else
    echo unknown mode [$1].
    echo option -m or -u.
fi

いつも思うけど、手打ちしたものをシェルスクリプトにしてしまうと長くなるなぁ~
しかし、WindowsPC側にEXT4イメージファイルを配置してnucから使うのはトリッキーではあるけれど・・・
チョット使ってみたいのでKVMゲストをWindowsPCに作るには便利だ。
バックアップも取りやすい。
Windows10のプレビュー版もモサモサと動く(サクサクではない
 
参考 : http://ry.tl/mount.html




top