'ไม่มีล็อค' หมายความว่าอย่างไร


9

ฉันพยายามที่จะผูกมัดกับเซิร์ฟเวอร์ SVN บนเซิร์ฟเวอร์ที่เก็บข้อมูลการโค่นล้มเป็น NFS เมื่อทำการคอมมิตฉันได้รับข้อความแสดงข้อผิดพลาดนี้:

svn: Can't get exclusive lock on file '/svn/repo/db/transactions/7802-2.txn/rev-lock': No locks available

สิ่งนี้เคยทำงานและไม่มีการอัพเกรด / เปลี่ยนแปลงซอฟต์แวร์ใด ๆ อย่างไรก็ตามเซิร์ฟเวอร์ NFS ขัดข้องก่อนหน้านี้ดังนั้นจึงอาจ 'เสียหาย' (หากใช้กับที่นี่ได้)

คำตอบ:


12

มีความเป็นไปได้เล็กน้อยที่นี่:

  1. บัญชีผู้ใช้ที่ทำการอัปเดต SVN อาจไม่มีสิทธิ์อัปเดตในไดเรกทอรีที่เก็บ
  2. ระบบไฟล์ NFS ที่จัดเก็บอาจเต็ม
  3. lock daemon (lockd) อาจไม่ทำงานบนเซิร์ฟเวอร์ NFS

อัปเดต: ติดตามการอัปเดตของคำถามฉันสงสัยว่า # 3 ตรวจสอบให้แน่ใจว่า lockd ถูกตั้งค่าให้เริ่มต้นเมื่อเซิร์ฟเวอร์ NFS ถูกรีบูต


1
"ps aux | grep lockd" บนเซิร์ฟเวอร์มีเอาต์พุตดังนั้นฉันคิดว่ามันกำลังทำงานอยู่
Rory

มันเกี่ยวข้องกับเซิร์ฟเวอร์ NFS
ฟรานซิสโก

กรณีของฉันคือ # 3 แก้ไขโดย/sbin/service nfslock startใน CentOS 6.8 ( การอ้างอิง: 18.1.1. บริการที่จำเป็น
joao cenoura

3

ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ NFS ของคุณรองรับการล็อก คุณอาจต้องเปิดใช้งานกระบวนการเพิ่มเติมบนเซิร์ฟเวอร์ NFS เพื่อทำสิ่งนี้ให้สำเร็จ ดูrpc.lockd (8)และrpc.statd (8)

นอกจากนี้หากเซิร์ฟเวอร์ NFS ของคุณเริ่มต้นใหม่เมื่อเร็ว ๆ นี้คุณอาจมีเมาค้างหรือแม้กระทั่งเมานต์ NFS ค้างบางส่วน ลองถอนติดตั้งและเมานต์ NFS อีกครั้ง

แก้ไข: ตามคำถามอื่นของคุณดูเหมือนว่า lockd จะไม่เริ่มทำงานหลังจากที่เซิร์ฟเวอร์ NFS ของคุณกู้คืนจากความผิดพลาด


มันใช้งานได้จนกระทั่งเซิร์ฟเวอร์ nfs ขัดข้อง ไม่มีการอัปเดตซอฟต์แวร์เมื่อเร็ว ๆ นี้ ฉันได้ขยายคำถาม
Rory

การเมานต์ NFS ของคุณอาจค้าง (บางส่วน) เกิดขึ้นที่นี่ด้วยเซิร์ฟเวอร์ NFS ที่ใช้ FreeBSD และไคลเอนต์ Solaris การเมานต์ / ประกอบเมาท์แบ่งปัน NFS แก้ไขปัญหาสำหรับเรา
Janin

1
การรีสตาร์ทไคลเอ็นต์ที่มี NFS mount ไม่สามารถแก้ไขได้ (แม้ว่าจะมีเครื่องอื่น ๆ ที่มีการติดตั้งจากเซิร์ฟเวอร์ที่ NFS ที่ฉันไม่ได้เริ่มต้นใหม่ / นั่งประจำที่)
Rory

1

มีจำนวนของทางเลือกที่กล่าวถึงในที่มีการค้นหาของ Google นี้สำหรับคำที่คุณกล่าวถึงข้างต้น

ตัวเลือกที่กล่าวถึงมีดังนี้: ดิสก์เต็มปัญหาสิทธิ์, "หยุด" หรือ "ติด" กระบวนการ svnserve และหยุดการทำธุรกรรม ... คุณอาจต้องลองใช้ปัญหาที่แตกต่างกันเหล่านี้เพื่อดูว่าปัญหาของคุณเป็นอย่างไร กรณี.

ดูเหมือนว่าคุณกำลังใช้ bsddb SVN back-end ใช่ไหม คุณอาจต้องการลองโยกย้ายพื้นที่เก็บข้อมูลของคุณไปยังส่วนท้าย fsfs (ค่าเริ่มต้นเป็นเวลาหลายปีในขณะนี้) ในประสบการณ์ของฉันและจากจำนวนผู้อื่นที่ฉันรู้จักพิสูจน์แล้วว่ามีความน่าเชื่อถือมากกว่า bsddb แม้ว่าคุณจะต้องการศึกษาว่ามันโต้ตอบกับ NFS อย่างไร - ฉันไม่ได้ใช้กับ NFS

ตัวเลือกอื่นที่คุณอาจต้องการพิจารณาคือย้ายออกจากการใช้ SVN ผ่าน NFS และแทนที่จะเรียกใช้ผ่าน SSH บนเซิร์ฟเวอร์ที่มีที่เก็บ SVN ไว้ในเครื่องแทน นี่คือวิธีที่เราทำงาน SVN ทั้งหมดของเราด้วยแบ็กเอนด์ fsfs และฉันจำไม่ได้ว่าครั้งล่าสุดที่เรามีปัญหาที่เก็บ SVN

ฌอน


เรากำลังใช้ FSFS back end
Rory

+1 สำหรับดิสก์เต็ม! จะเปิดออกแม้ว่า NFS ภูเขาไม่ได้เต็มรูปแบบไดรฟ์รากเป็น ...
hwjp

0

ถ้าคุณใช้ SVN กับ NFS บนเดเบียน

รันสิ่งนี้:

/etc/init.d/portmap restart

1
การอธิบายว่าทำไมคุณจึงแนะนำสิ่งนี้เป็นคำตอบ
Drew Khoury

0

ฉันมีปัญหาที่คล้ายกันที่นี่ฉันเกิดจากการเมานต์ NFS ของคนจรจัด จากสิ่งที่ Tel Janin กล่าวไว้ข้างต้นฉันเริ่ม rpcbind ด้วยsudo service rpcbind restartบนโฮสต์ระบบปฏิบัติการของฉัน สิ่งนี้แขวน vm ของฉัน failed to start with result 'dependency'ฉันเริ่มต้นใหม่ที่ซึ่งทำให้ผมมีข้อผิดพลาด NFS คลุมเครือ มันทำงานได้จริงและตอนนี้ฉันก็เป็นผู้พักแรมที่มีความสุขแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.